Bug 15774: (QA follow-up) Fix use statemenets
[koha.git] / t / db_dependent / Koha / Objects / Mixin / AdditionalFields.t
1 #!/usr/bin/env perl
2
3 use Modern::Perl;
4
5 use Test::More tests => 12;
6
7 use Koha::Acquisition::Baskets; # Koha::Acquisition::Baskets uses the mixin
8 use Koha::AdditionalFields;
9 use Koha::AdditionalFieldValues;
10 use Koha::Database;
11
12 use t::lib::TestBuilder;
13
14 my $storage = Koha::Database->new->schema->storage;
15 $storage->txn_begin;
16
17 my $builder = t::lib::TestBuilder->new;
18 my $basket1 = $builder->build_object({
19     class => 'Koha::Acquisition::Baskets',
20 });
21 my $basket2 = $builder->build_object({
22     class => 'Koha::Acquisition::Baskets',
23 });
24
25 my $foo = Koha::AdditionalField->new({
26     tablename => 'aqbasket',
27     name => 'basket_foo',
28 })->store;
29 my $bar = Koha::AdditionalField->new({
30     tablename => 'aqbasket',
31     name => 'basket_bar',
32 })->store;
33
34 Koha::AdditionalFieldValue->new({
35     field_id => $foo->id,
36     record_id => $basket1->basketno,
37     value => 'foo value for basket1',
38 })->store;
39 Koha::AdditionalFieldValue->new({
40     field_id => $bar->id,
41     record_id => $basket1->basketno,
42     value => 'bar value for basket1',
43 })->store;
44
45 my $additional_fields_for_basket2 = [
46     {
47         id    => $foo->id,
48         value => 'foo value for basket2',
49     },
50     {
51         id    => $bar->id,
52         value => 'bar value for basket2',
53     },
54 ];
55 $basket2->set_additional_fields($additional_fields_for_basket2);
56
57 my $additional_fields = $basket2->additional_field_values;
58 is( ref($additional_fields), 'Koha::AdditionalFieldValues', '->additional_field_values should return a Koha::AdditionalFieldValues object' );
59 is_deeply(
60     [
61         map {
62             {
63                 # We are bascially removing the 'id' field here
64                 field_id  => $_->{field_id},
65                 record_id => $_->{record_id},
66                 value     => $_->{value},
67             }
68         } @{ $additional_fields->unblessed }
69     ],
70     [
71         {
72             field_id  => $additional_fields_for_basket2->[0]->{id},
73             record_id => $basket2->basketno,
74             value     => $additional_fields_for_basket2->[0]->{value},
75         },
76         {
77             field_id  => $additional_fields_for_basket2->[1]->{id},
78             record_id => $basket2->basketno,
79             value     => $additional_fields_for_basket2->[1]->{value},
80         }
81
82     ],
83     '->additional_field_values should return the correct values'
84 );
85
86 my @baskets = Koha::Acquisition::Baskets->filter_by_additional_fields([
87     {
88         id => $foo->id,
89         value => 'foo value for basket1',
90     },
91 ]);
92
93 is(scalar @baskets, 1, 'search returns only one result');
94 is($baskets[0]->basketno, $basket1->basketno, 'result is basket1');
95
96 @baskets = Koha::Acquisition::Baskets->filter_by_additional_fields([
97     {
98         id => $foo->id,
99         value => 'foo value for basket2',
100     },
101 ]);
102
103 is(scalar @baskets, 1, 'search returns only one result');
104 is($baskets[0]->basketno, $basket2->basketno, 'result is basket2');
105
106 @baskets = Koha::Acquisition::Baskets->filter_by_additional_fields([
107     {
108         id => $foo->id,
109         value => 'foo value for basket1',
110     },
111     {
112         id => $bar->id,
113         value => 'bar value for basket1',
114     },
115 ]);
116
117 is(scalar @baskets, 1, 'search returns only one result');
118 is($baskets[0]->basketno, $basket1->basketno, 'result is basket1');
119
120 @baskets = Koha::Acquisition::Baskets->filter_by_additional_fields([
121     {
122         id => $foo->id,
123         value => 'foo value for basket1',
124     },
125     {
126         id => $bar->id,
127         value => 'bar value for basket2',
128     },
129 ]);
130
131 is(scalar @baskets, 0, 'search returns no result');
132
133 @baskets = Koha::Acquisition::Baskets->filter_by_additional_fields([
134     {
135         id => $foo->id,
136         value => 'foo',
137     },
138 ]);
139
140 is(scalar @baskets, 2, 'search returns two results');
141
142 @baskets = Koha::Acquisition::Baskets->filter_by_additional_fields([
143     {
144         id => $foo->id,
145         value => 'foo',
146     },
147     {
148         id => $foo->id,
149         value => 'basket1',
150     },
151 ]);
152
153 is(scalar @baskets, 1, 'search returns only one result');
154 is($baskets[0]->basketno, $basket1->basketno, 'result is basket1');
155
156 $storage->txn_rollback;