Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision 66ea4bb1

Von Sven Schöling vor etwa 2 Jahren hinzugefügt

  • ID 66ea4bb1e099ed8a503ac0de9217fb1246af66de
  • Vorgänger 506698f8
  • Nachfolger 92d5c29c

PriceRule: tests

- shipto und custom shipto
- requirement specs cvars
- text cvars

Unterschiede anzeigen:

t/db/price_rule.t
SL::DB::Manager::CustomVariable->delete_all(all => 1);
SL::DB::Manager::CustomVariableConfig->delete_all(all => 1);
SL::DB::Manager::Order->delete_all(all => 1);
SL::DB::Manager::Shipto->delete_all(all => 1);
$::request->{_cache} = {};
}
......
# - Contact
# - IC
# - Project
# - ShipTo
#
# and the cvars themselves can have these types:
# - select
......
$item->part->cvar_by_name($name)->save;
test($price_rule, $order, $item, "$name -- matching", 1);
}
{
reset_db();
my $name = "shipto cvar and price rule matching that";
my $config = SL::DB::CustomVariableConfig->new(
module => 'ShipTo',
type => 'number',
name => $name,
description => $name,
searchable => 0,
includeable => 0,
included_by_default => 0,
flags => '',
)->save->load;
my $price_rule = SL::DB::PriceRule->new(
name => $name,
price => 1,
type => "customer",
items => [
SL::DB::PriceRuleItem->new(
custom_variable_configs => $config,
value_num => 15,
op => "eq",
type => "cvar",
),
],
)->save;
my $order = create_sales_order()->save->load;
my $item = $order->items_sorted->[0];
my $shipto = SL::DB::Shipto->new;
$order->shipto($shipto);
$order->save->load;
test($price_rule, $order, $item, "$name -- default value", 0);
$order->shipto->cvar_by_name($name)->value(20);
$order->shipto->cvar_by_name($name)->save;
test($price_rule, $order, $item, "$name -- not matching", 0);
$order->shipto->cvar_by_name($name)->value(15);
$order->shipto->cvar_by_name($name)->save;
test($price_rule, $order, $item, "$name -- matching", 1);
}
{
reset_db();
my $name = "custom shipto cvar and price rule matching that";
my $config = SL::DB::CustomVariableConfig->new(
module => 'ShipTo',
type => 'number',
name => $name,
description => $name,
searchable => 0,
includeable => 0,
included_by_default => 0,
flags => '',
)->save->load;
my $price_rule = SL::DB::PriceRule->new(
name => $name,
price => 1,
type => "customer",
items => [
SL::DB::PriceRuleItem->new(
custom_variable_configs => $config,
value_num => 15,
op => "eq",
type => "cvar",
),
],
)->save;
my $order = create_sales_order()->save->load;
my $item = $order->items_sorted->[0];
my $shipto = SL::DB::Shipto->new(trans_id => $order->id, module => 'OE')->save;
ok(ref $order->custom_shipto eq 'SL::DB::Shipto', 'custom shipto is readable from order');
test($price_rule, $order, $item, "$name -- default value", 0);
$order->custom_shipto->cvar_by_name($name)->value(20);
$order->custom_shipto->cvar_by_name($name)->save;
test($price_rule, $order, $item, "$name -- not matching", 0);
$order->custom_shipto->cvar_by_name($name)->value(15);
$order->custom_shipto->cvar_by_name($name)->save;
test($price_rule, $order, $item, "$name -- matching", 1);
}
{
reset_db();
my $name = "custom shipto cvar and price rule matching that";
my $config = SL::DB::CustomVariableConfig->new(
module => 'ShipTo',
type => 'number',
name => $name,
description => $name,
searchable => 0,
includeable => 0,
included_by_default => 0,
flags => '',
)->save->load;
my $price_rule = SL::DB::PriceRule->new(
name => $name,
price => 1,
type => "customer",
items => [
SL::DB::PriceRuleItem->new(
custom_variable_configs => $config,
value_num => 15,
op => "eq",
type => "cvar",
),
],
)->save;
my $order = create_sales_order()->save->load;
my $item = $order->items_sorted->[0];
my $shipto1 = SL::DB::Shipto->new;
$order->shipto($shipto1);
my $shipto2 = SL::DB::Shipto->new(trans_id => $order->id, module => 'OE')->save;
$order->save->load;
test($price_rule, $order, $item, "$name -- default value", 0);
$order->custom_shipto->cvar_by_name($name)->value(20);
$order->custom_shipto->cvar_by_name($name)->save;
test($price_rule, $order, $item, "$name -- not matching custom", 0);
$order->shipto->cvar_by_name($name)->value(15);
$order->shipto->cvar_by_name($name)->save;
test($price_rule, $order, $item, "$name -- not matching custom, matching shipto", 0);
$order->custom_shipto->cvar_by_name($name)->value(15);
$order->custom_shipto->cvar_by_name($name)->save;
test($price_rule, $order, $item, "$name -- matching both", 1);
$order->shipto->cvar_by_name($name)->value(20);
$order->shipto->cvar_by_name($name)->save;
test($price_rule, $order, $item, "$name -- matching custom, not matching shipto", 1);
}
{
reset_db();
my $name = "no price rule, but cvars exist with module requirementsspecs or type text";
my $config1 = SL::DB::CustomVariableConfig->new(
module => 'RequirementSpecs',
type => 'number',
name => $name,
description => $name,
searchable => 0,
includeable => 0,
included_by_default => 0,
flags => '',
)->save->load;
my $config2 = SL::DB::CustomVariableConfig->new(
module => 'Customer',
type => 'text',
name => $name,
description => $name,
searchable => 0,
includeable => 0,
included_by_default => 0,
flags => '',
)->save->load;
my $order = create_sales_order()->save->load;
my $item = $order->items_sorted->[0];
$order->save->load;
test(undef, $order, $item, "$name -- nothing to match", 0);
}
}
reset_db();

Auch abrufbar als: Unified diff