Bug 29234: Further clean Z3950 Tests
[koha-ffzg.git] / t / db_dependent / Koha / Z3950Responder / Session.t
1 #!/usr/bin/perl
2
3 use Modern::Perl;
4 use Test::More tests => 3;
5 use t::lib::TestBuilder;
6 use C4::Items qw( GetMarcItem );
7
8 use Koha::AuthorisedValues;
9
10 BEGIN {
11     use_ok('Koha::Z3950Responder');
12     use_ok('Koha::Z3950Responder::Session');
13 }
14
15 my $builder = t::lib::TestBuilder->new;
16 my $schema  = Koha::Database->new->schema;
17
18 $schema->storage->txn_begin;
19
20 subtest 'add_item_status' => sub {
21
22     plan tests => 3;
23
24     ## FIRST ITEM HAS ALL THE STATUSES ##
25     my $item_1 = $builder->build_sample_item(
26         {
27             onloan     => '2017-07-07',
28             itemlost   => 1,
29             notforloan => 1,
30             damaged    => 1,
31             withdrawn  => 1,
32         }
33     );
34     my ( $itemtag, $itemsubfield ) = C4::Biblio::GetMarcFromKohaField( "items.itemnumber" );
35     my $item_marc_1 = C4::Items::GetMarcItem( $item_1->biblionumber, $item_1->itemnumber );
36     my $item_field_1 = scalar $item_marc_1->field($itemtag);
37     $builder->build({ source => 'Reserve', value=> { itemnumber => $item_1->itemnumber } });
38     $builder->build(
39         {
40             source => 'Branchtransfer',
41             value  => {
42                 itemnumber    => $item_1->itemnumber,
43                 datearrived   => undef,
44                 datecancelled => undef,
45                 datesent      => \'NOW()',
46             }
47         }
48     );
49     ## END FIRST ITEM ##
50
51     ## SECOND ITEM HAS NO STATUSES ##
52     my $item_2 = $builder->build_sample_item;
53     my $item_marc_2 = C4::Items::GetMarcItem( $item_2->biblionumber, $item_2->itemnumber );
54     my $item_field_2 = scalar $item_marc_2->field($itemtag);
55     ## END SECOND ITEM ##
56
57     # We want to test the default values, so we remove custom status alias if present
58     my $available = Koha::AuthorisedValues->find({ category => 'Z3950_STATUS', authorised_value => 'AVAILABLE' });
59     $available->delete if $available;
60
61     # Create the responder
62     my $args={ PEER_NAME => 'PEER'};
63     my $zR = Koha::Z3950Responder->new({add_item_status_subfield => 'k'});
64     $zR->init_handler($args);
65
66     $args->{HANDLE}->add_item_status($item_field_1);
67     is($item_field_1->subfield('k'),"Checked Out, Lost, Not for Loan, Damaged, Withdrawn, In Transit, On Hold","All statuses added in one field as expected");
68
69     $args->{HANDLE}->add_item_status($item_field_2);
70     is($item_field_2->subfield('k'),'Available',"Available status added as expected");
71
72     is($item_field_2->subfield( $itemsubfield ), $item_2->itemnumber, "Itemnumber not removed when status added");
73
74 };
75
76 $schema->storage->txn_rollback;