Bug 34932: Patron.t - Pass borrowernumber of manager to userenv
[koha.git] / t / db_dependent / Koha / Acquisition / Orders.t
1 #!/usr/bin/perl
2
3 # Copyright 2020 Koha Development team
4 #
5 # This file is part of Koha
6 #
7 # Koha is free software; you can redistribute it and/or modify it
8 # under the terms of the GNU General Public License as published by
9 # the Free Software Foundation; either version 3 of the License, or
10 # (at your option) any later version.
11 #
12 # Koha is distributed in the hope that it will be useful, but
13 # WITHOUT ANY WARRANTY; without even the implied warranty of
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 # GNU General Public License for more details.
16 #
17 # You should have received a copy of the GNU General Public License
18 # along with Koha; if not, see <http://www.gnu.org/licenses>.
19
20 use Modern::Perl;
21
22 use Test::More tests => 2;
23 use Test::Exception;
24
25 use t::lib::TestBuilder;
26 use t::lib::Mocks;
27
28 use Koha::Database;
29
30 my $schema  = Koha::Database->schema;
31 my $builder = t::lib::TestBuilder->new;
32
33 subtest 'filter_by_active() tests' => sub {
34
35     plan tests => 4;
36
37     $schema->storage->txn_begin;
38
39     my $basket_1 = $builder->build_object(
40         {
41             class => 'Koha::Acquisition::Baskets',
42             value => { is_standing => 1 }
43         }
44     );
45
46     my $basket_2 = $builder->build_object(
47         {
48             class => 'Koha::Acquisition::Baskets',
49             value => { is_standing => 0 }
50         }
51     );
52
53     my $order_1 = $builder->build_object(
54         {
55             class => 'Koha::Acquisition::Orders',
56             value => { orderstatus => 'cancelled' }
57         }
58     );
59     my $order_2 = $builder->build_object(
60         {
61             class => 'Koha::Acquisition::Orders',
62             value => { orderstatus => 'completed' }
63         }
64     );
65     my $order_3 = $builder->build_object(
66         {
67             class => 'Koha::Acquisition::Orders',
68             value => {
69                 basketno    => $basket_1->basketno,
70                 orderstatus => 'new'
71             }
72         }
73     );
74     my $order_4 = $builder->build_object(
75         {
76             class => 'Koha::Acquisition::Orders',
77             value => { orderstatus => 'ordered' }
78         }
79     );
80     my $order_5 = $builder->build_object(
81         {
82             class => 'Koha::Acquisition::Orders',
83             value => { orderstatus => 'partial' }
84         }
85     );
86     my $order_6 = $builder->build_object(
87         {
88             class => 'Koha::Acquisition::Orders',
89             value => {
90                 basketno    => $basket_2->basketno,
91                 orderstatus => 'new'
92             }
93         }
94     );
95
96     my $this_orders_rs = Koha::Acquisition::Orders->search(
97         {
98             ordernumber => [
99                 $order_1->ordernumber,
100                 $order_2->ordernumber,
101                 $order_3->ordernumber,
102                 $order_4->ordernumber,
103                 $order_5->ordernumber,
104                 $order_6->ordernumber,
105             ]
106         },
107         {
108             order_by => 'ordernumber'
109         }
110     );
111
112     my $rs = $this_orders_rs->filter_by_active;
113
114     is( $rs->count, 3, 'Only new (basket is standing), ordered and partial orders are returned' );
115     is( $rs->next->ordernumber, $order_3->ordernumber , 'Expected order in resultset' );
116     is( $rs->next->ordernumber, $order_4->ordernumber , 'Expected order in resultset' );
117     is( $rs->next->ordernumber, $order_5->ordernumber , 'Expected order in resultset' );
118
119     $schema->storage->txn_rollback;
120 };
121
122 subtest 'filter_by_id_including_transfers() tests' => sub {
123
124     plan tests => 4;
125
126     $schema->storage->txn_begin;
127
128     my $order_1 = $builder->build_object({ class => 'Koha::Acquisition::Orders' });
129     my $order_2 = $builder->build_object({ class => 'Koha::Acquisition::Orders' });
130     my $order_3 = $builder->build_object({ class => 'Koha::Acquisition::Orders' });
131
132     $builder->build(
133         {
134             source => 'AqordersTransfer',
135             value  => {
136                 ordernumber_from => $order_1->ordernumber,
137                 ordernumber_to   => $order_2->ordernumber
138             }
139         }
140     );
141
142     my $orders_rs = Koha::Acquisition::Orders->search;
143     my $count = $orders_rs->count;
144
145     throws_ok
146         { $orders_rs->filter_by_id_including_transfers() }
147         'Koha::Exceptions::MissingParameter',
148         'Exception thrown correctly';
149
150     $orders_rs = $orders_rs->filter_by_id_including_transfers({ ordernumber => $order_1->ordernumber });
151
152     is_deeply( [ sort { $a <=> $b } $orders_rs->get_column('ordernumber') ], [$order_1->ordernumber, $order_2->ordernumber ], 'The 2 orders are returned' );
153
154     $orders_rs = $orders_rs->filter_by_id_including_transfers({ ordernumber => $order_2->ordernumber });
155
156     is( $orders_rs->count, 1, 'Only one order related to the specified ordernumber' );
157     is( $orders_rs->next->ordernumber, $order_2->ordernumber, 'The right order is returned' );
158
159     $schema->storage->txn_rollback;
160 };