08bf4e9fad4193d95452341a4e0749b202891be8
[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 => 10;
6
7 use Koha::Acquisition::Baskets; # Koha::Acquisition::Baskets uses the mixin
8 use Koha::AdditionalFields;
9 use Koha::AdditionalField;
10 use Koha::AdditionalFieldValue;
11 use Koha::Database;
12
13 use t::lib::TestBuilder;
14
15 my $storage = Koha::Database->new->schema->storage;
16 $storage->txn_begin;
17
18 my $builder = t::lib::TestBuilder->new;
19 my $basket1 = $builder->build_object({
20     class => 'Koha::Acquisition::Baskets',
21 });
22 my $basket2 = $builder->build_object({
23     class => 'Koha::Acquisition::Baskets',
24 });
25
26 my $foo = Koha::AdditionalField->new({
27     tablename => 'aqbasket',
28     name => 'basket_foo',
29 })->store;
30 my $bar = Koha::AdditionalField->new({
31     tablename => 'aqbasket',
32     name => 'basket_bar',
33 })->store;
34
35 Koha::AdditionalFieldValue->new({
36     field_id => $foo->id,
37     record_id => $basket1->basketno,
38     value => 'foo value for basket1',
39 })->store;
40 Koha::AdditionalFieldValue->new({
41     field_id => $bar->id,
42     record_id => $basket1->basketno,
43     value => 'bar value for basket1',
44 })->store;
45 Koha::AdditionalFieldValue->new({
46     field_id => $foo->id,
47     record_id => $basket2->basketno,
48     value => 'foo value for basket2',
49 })->store;
50 Koha::AdditionalFieldValue->new({
51     field_id => $bar->id,
52     record_id => $basket2->basketno,
53     value => 'bar value for basket2',
54 })->store;
55
56 my @baskets = Koha::Acquisition::Baskets->search_additional_fields([
57     {
58         id => $foo->id,
59         value => 'foo value for basket1',
60     },
61 ]);
62
63 is(scalar @baskets, 1, 'search returns only one result');
64 is($baskets[0]->basketno, $basket1->basketno, 'result is basket1');
65
66 @baskets = Koha::Acquisition::Baskets->search_additional_fields([
67     {
68         id => $foo->id,
69         value => 'foo value for basket2',
70     },
71 ]);
72
73 is(scalar @baskets, 1, 'search returns only one result');
74 is($baskets[0]->basketno, $basket2->basketno, 'result is basket2');
75
76 @baskets = Koha::Acquisition::Baskets->search_additional_fields([
77     {
78         id => $foo->id,
79         value => 'foo value for basket1',
80     },
81     {
82         id => $bar->id,
83         value => 'bar value for basket1',
84     },
85 ]);
86
87 is(scalar @baskets, 1, 'search returns only one result');
88 is($baskets[0]->basketno, $basket1->basketno, 'result is basket1');
89
90 @baskets = Koha::Acquisition::Baskets->search_additional_fields([
91     {
92         id => $foo->id,
93         value => 'foo value for basket1',
94     },
95     {
96         id => $bar->id,
97         value => 'bar value for basket2',
98     },
99 ]);
100
101 is(scalar @baskets, 0, 'search returns no result');
102
103 @baskets = Koha::Acquisition::Baskets->search_additional_fields([
104     {
105         id => $foo->id,
106         value => 'foo',
107     },
108 ]);
109
110 is(scalar @baskets, 2, 'search returns two results');
111
112 @baskets = Koha::Acquisition::Baskets->search_additional_fields([
113     {
114         id => $foo->id,
115         value => 'foo',
116     },
117     {
118         id => $foo->id,
119         value => 'basket1',
120     },
121 ]);
122
123 is(scalar @baskets, 1, 'search returns only one result');
124 is($baskets[0]->basketno, $basket1->basketno, 'result is basket1');
125
126 $storage->txn_rollback;