Bug 29670: Unit tests
This patch adds unit tests for Koha::Edifact::Order->order_line. We now check that the message segments are created as expected for both the 'ordering' and not 'ordering' case for acquisitions item creation time. Signed-off-by: Jonathan Field <jonathan.field@ptfs-europe.com> Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de> JD amended patch: spelling segement ==> segment Signed-off-by: Fridolin Somers <fridolin.somers@biblibre.com>
This commit is contained in:
parent
61e3acf7a3
commit
91b8f990ae
1 changed files with 114 additions and 11 deletions
|
@ -32,18 +32,55 @@ my $builder = t::lib::TestBuilder->new;
|
|||
subtest 'order_line() tests' => sub {
|
||||
# TODO: Split up order_line() to smaller methods in order
|
||||
# to allow better testing
|
||||
plan tests => 2;
|
||||
plan tests => 24;
|
||||
|
||||
$schema->storage->txn_begin;
|
||||
|
||||
my $biblio = $builder->build_sample_biblio();
|
||||
my $ean = $builder->build( { source => 'EdifactEan' } );
|
||||
my $order = $builder->build_object(
|
||||
my $biblioitem = $biblio->biblioitem;
|
||||
$biblioitem->update({ isbn => '979-8572072303' });
|
||||
my $biblioitem_itype = $biblioitem->itemtype;
|
||||
|
||||
my $item1 = $builder->build_sample_item(
|
||||
{
|
||||
class => 'Koha::Acquisition::Orders',
|
||||
value => { biblionumber => $biblio->biblionumber }
|
||||
biblionumber => $biblio->biblionumber,
|
||||
location => 'PROCESSING',
|
||||
itemcallnumber => '000.101'
|
||||
}
|
||||
);
|
||||
my $item1_homebranch = $item1->homebranch;
|
||||
my $item1_itype = $item1->effective_itemtype;
|
||||
my $item2 = $builder->build_sample_item(
|
||||
{
|
||||
biblionumber => $biblio->biblionumber,
|
||||
location => 'PROCESSING',
|
||||
itemcallnumber => '000.102'
|
||||
}
|
||||
);
|
||||
my $item2_homebranch = $item2->homebranch;
|
||||
my $item2_itype = $item2->effective_itemtype;
|
||||
|
||||
my $ean = $builder->build( { source => 'EdifactEan' } );
|
||||
my $dbic_ean = $schema->resultset('EdifactEan')->find($ean->{ee_id});
|
||||
my $order = $builder->build_object(
|
||||
{
|
||||
class => 'Koha::Acquisition::Orders',
|
||||
value => {
|
||||
biblionumber => $biblio->biblionumber,
|
||||
quantity => 2,
|
||||
line_item_id => 'EDILINEID1',
|
||||
order_vendornote => 'A not so pretty note',
|
||||
listprice => '1.50'
|
||||
}
|
||||
}
|
||||
);
|
||||
my $ordernumber = $order->ordernumber;
|
||||
my $supplier_qualifier = $order->suppliers_reference_qualifier;
|
||||
my $supplier_ordernumber = $order->suppliers_reference_number;
|
||||
my $budgetcode = $order->fund->budget_code;
|
||||
my $deliveryplace = $order->basket->deliveryplace;
|
||||
$order->add_item($item1->itemnumber);
|
||||
$order->add_item($item2->itemnumber);
|
||||
|
||||
my $vendor = $builder->build(
|
||||
{
|
||||
|
@ -53,6 +90,7 @@ subtest 'order_line() tests' => sub {
|
|||
}
|
||||
}
|
||||
);
|
||||
my $dbic_vendor = $schema->resultset('VendorEdiAccount')->find($vendor->{id});
|
||||
|
||||
my @orders = $schema->resultset('Aqorder')
|
||||
->search( { basketno => $order->basket->basketno } )->all;
|
||||
|
@ -60,20 +98,85 @@ subtest 'order_line() tests' => sub {
|
|||
my $edi_order = Koha::Edifact::Order->new(
|
||||
{
|
||||
orderlines => \@orders,
|
||||
vendor => $vendor,
|
||||
ean => $ean
|
||||
vendor => $dbic_vendor,
|
||||
ean => $dbic_ean
|
||||
}
|
||||
);
|
||||
|
||||
$order->basket->create_items('ordering')->store;
|
||||
# FIXME: Add test for an order where the attached biblio has been deleted.
|
||||
|
||||
$order->basket->create_items('ordering')->store;
|
||||
is( $edi_order->order_line( 1, $orders[0] ),
|
||||
undef, 'Orderline message formed with with "ordering"' );
|
||||
undef, 'order_line run for message formed with effective_create_items = "ordering"' );
|
||||
|
||||
my $segs = $edi_order->{segs};
|
||||
is( $segs->[0], 'LIN+1++EDILINEID1:EN\'', 'LIN segment added containing order->line_item_id' );
|
||||
is( $segs->[1], 'PIA+5+8572072303:IB\'', 'PIA segment added with example biblioitem->isbn13' );
|
||||
is( $segs->[2], 'IMD+L+009+:::Some boring author\'', 'IMD segment added containing demo data author' );
|
||||
is( $segs->[3], 'IMD+L+050+:::Some boring read\'', 'IMD segment added containing demo data title' );
|
||||
is( $segs->[4], 'QTY+21:2\'', 'QTY segment added containing the number of items expected' );
|
||||
is(
|
||||
$segs->[5],
|
||||
'GIR+001'
|
||||
. "+$budgetcode:LFN"
|
||||
. "+$item1_homebranch:LLO"
|
||||
. "+$item1_itype:LST"
|
||||
. "+PROCESSING:LSQ"
|
||||
. "+000.101:LSM"
|
||||
. "'",
|
||||
'GIR segment added for first item and contains item record data'
|
||||
);
|
||||
is(
|
||||
$segs->[6],
|
||||
'GIR+002'
|
||||
. "+$budgetcode:LFN"
|
||||
. "+$item2_homebranch:LLO"
|
||||
. "+$item2_itype:LST"
|
||||
. "+PROCESSING:LSQ"
|
||||
. "+000.102:LSM"
|
||||
. "'",
|
||||
'GIR segment added for second item and contains item record data'
|
||||
);
|
||||
is( $segs->[7], 'FTX+LIN+++A not so pretty note\'', 'FTX segment added containing data from vendor_note' );
|
||||
is( $segs->[8], 'PRI+AAE:1.50:CA\'', 'PRI segment added containing data orderline listprice' );
|
||||
is( $segs->[9], "RFF+LI:$ordernumber'", 'RFF segment added containing koha orderline id' );
|
||||
is( $segs->[10], "RFF+$supplier_qualifier:$supplier_ordernumber'", 'RFF segment added containing supplier orderline id' );
|
||||
|
||||
# Reset segments for effective_create_items = 'receiving'
|
||||
$edi_order->{segs} = [];
|
||||
|
||||
$order->basket->create_items('receiving')->store;
|
||||
|
||||
is( $edi_order->order_line( 1, $orders[0] ),
|
||||
undef, 'Orderline message formed with "receiving"' );
|
||||
undef, 'order_line run for message formed with effective_create_items = "receiving"' );
|
||||
|
||||
$segs = $edi_order->{segs};
|
||||
is( $segs->[0], 'LIN+1++EDILINEID1:EN\'', 'LIN segment added containing order->line_item_id' );
|
||||
is( $segs->[1], 'PIA+5+8572072303:IB\'', 'PIA segment added with example biblioitem->isbn13' );
|
||||
is( $segs->[2], 'IMD+L+009+:::Some boring author\'', 'IMD segment added containing demo data author' );
|
||||
is( $segs->[3], 'IMD+L+050+:::Some boring read\'', 'IMD segment added containing demo data title' );
|
||||
is( $segs->[4], 'QTY+21:2\'', 'QTY segment added containing the number of items expected' );
|
||||
is(
|
||||
$segs->[5],
|
||||
'GIR+001'
|
||||
. "+$budgetcode:LFN"
|
||||
. "+$deliveryplace:LLO"
|
||||
. "+$biblioitem_itype:LST"
|
||||
. "'",
|
||||
'GIR segment added for first item and contains biblioitem data'
|
||||
);
|
||||
is(
|
||||
$segs->[6],
|
||||
'GIR+002'
|
||||
. "+$budgetcode:LFN"
|
||||
. "+$deliveryplace:LLO"
|
||||
. "+$biblioitem_itype:LST"
|
||||
. "'",
|
||||
'GIR segment added for second item and contains biblioitem data'
|
||||
);
|
||||
is( $segs->[7], 'FTX+LIN+++A not so pretty note\'', 'FTX segment added containing data from vendor_note' );
|
||||
is( $segs->[8], 'PRI+AAE:1.50:CA\'', 'PRI segment added containing data orderline listprice' );
|
||||
is( $segs->[9], "RFF+LI:$ordernumber'", 'RFF segment added containing koha orderline id' );
|
||||
is( $segs->[10], "RFF+$supplier_qualifier:$supplier_ordernumber'", 'RFF segment added containing supplier orderline id' );
|
||||
|
||||
$schema->storage->txn_rollback;
|
||||
};
|
||||
|
|
Loading…
Reference in a new issue