3 # This file is part of Koha.
5 # Koha is free software; you can redistribute it and/or modify it
6 # under the terms of the GNU General Public License as published by
7 # the Free Software Foundation; either version 3 of the License, or
8 # (at your option) any later version.
10 # Koha is distributed in the hope that it will be useful, but
11 # WITHOUT ANY WARRANTY; without even the implied warranty of
12 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 # GNU General Public License for more details.
15 # You should have received a copy of the GNU General Public License
16 # along with Koha; if not, see <http://www.gnu.org/licenses>.
20 use Test
::More tests
=> 13;
27 use Koha
::Patron
::Categories
;
28 use Koha
::Virtualshelf
;
29 use Koha
::Virtualshelves
;
31 use_ok
( "C4::Utils::DataTables::VirtualShelves" );
33 my $dbh = C4
::Context
->dbh;
36 $dbh->{AutoCommit
} = 0;
37 $dbh->{RaiseError
} = 1;
39 $dbh->do(q
|DELETE FROM virtualshelves
|);
41 # Pick a categorycode from the DB
42 my @categories = Koha
::Patron
::Categories
->search_limited;
43 my $categorycode = $categories[0]->categorycode;
44 my $branchcode = "ABC";
46 branchcode
=> $branchcode,
47 branchname
=> 'my branchname',
49 Koha
::Library
->new( $branch_data )->store;
52 cardnumber
=> '123456',
55 categorycode
=> $categorycode,
56 branchcode
=> $branchcode,
58 dateexpiry
=> '9999-12-31',
63 cardnumber
=> '234567',
66 categorycode
=> $categorycode,
67 branchcode
=> $branchcode,
69 dateexpiry
=> '9999-12-31',
73 cardnumber
=> '345678',
76 categorycode
=> $categorycode,
77 branchcode
=> $branchcode,
79 dateexpiry
=> '9999-12-31',
80 userid
=> 'john.smith',
83 $john_doe{borrowernumber
} = AddMember
( %john_doe );
84 $jane_doe{borrowernumber
} = AddMember
( %jane_doe );
85 $john_smith{borrowernumber
} = AddMember
( %john_smith );
87 my $shelf1 = Koha
::Virtualshelf
->new(
89 shelfname
=> 'my first private list (empty)',
90 category
=> 1, # private
91 sortfield
=> 'author',
92 owner
=> $john_doe{borrowernumber
},
96 my $shelf2 = Koha
::Virtualshelf
->new(
98 shelfname
=> 'my second private list',
99 category
=> 1, # private
100 sortfield
=> 'title',
101 owner
=> $john_doe{borrowernumber
},
104 my $biblionumber1 = _add_biblio
('title 1');
105 my $biblionumber2 = _add_biblio
('title 2');
106 my $biblionumber3 = _add_biblio
('title 3');
107 my $biblionumber4 = _add_biblio
('title 4');
108 my $biblionumber5 = _add_biblio
('title 5');
109 $shelf2->add_biblio( $biblionumber1, $john_doe{borrowernumber
} );
110 $shelf2->add_biblio( $biblionumber2, $john_doe{borrowernumber
} );
111 $shelf2->add_biblio( $biblionumber3, $john_doe{borrowernumber
} );
112 $shelf2->add_biblio( $biblionumber4, $john_doe{borrowernumber
} );
113 $shelf2->add_biblio( $biblionumber5, $john_doe{borrowernumber
} );
115 my $shelf3 = Koha
::Virtualshelf
->new(
117 shelfname
=> 'The first public list',
118 category
=> 2, # public
119 sortfield
=> 'author',
120 owner
=> $jane_doe{borrowernumber
},
123 my $biblionumber6 = _add_biblio
('title 6');
124 my $biblionumber7 = _add_biblio
('title 7');
125 my $biblionumber8 = _add_biblio
('title 8');
126 $shelf3->add_biblio( $biblionumber6, $jane_doe{borrowernumber
} );
127 $shelf3->add_biblio( $biblionumber7, $jane_doe{borrowernumber
} );
128 $shelf3->add_biblio( $biblionumber8, $jane_doe{borrowernumber
} );
130 my $shelf4 = Koha
::Virtualshelf
->new(
132 shelfname
=> 'my second public list',
133 category
=> 2, # public
134 sortfield
=> 'title',
135 owner
=> $jane_doe{borrowernumber
},
138 my $biblionumber9 = _add_biblio
('title 9');
139 my $biblionumber10 = _add_biblio
('title 10');
140 my $biblionumber11 = _add_biblio
('title 11');
141 my $biblionumber12 = _add_biblio
('title 12');
142 $shelf3->add_biblio( $biblionumber9, $jane_doe{borrowernumber
} );
143 $shelf3->add_biblio( $biblionumber10, $jane_doe{borrowernumber
} );
144 $shelf3->add_biblio( $biblionumber11, $jane_doe{borrowernumber
} );
145 $shelf3->add_biblio( $biblionumber12, $jane_doe{borrowernumber
} );
147 my $shelf5 = Koha
::Virtualshelf
->new(
149 shelfname
=> 'my third private list',
150 category
=> 1, # private
151 sortfield
=> 'title',
152 owner
=> $jane_doe{borrowernumber
},
155 my $biblionumber13 = _add_biblio
('title 13');
156 my $biblionumber14 = _add_biblio
('title 14');
157 my $biblionumber15 = _add_biblio
('title 15');
158 my $biblionumber16 = _add_biblio
('title 16');
159 my $biblionumber17 = _add_biblio
('title 17');
160 my $biblionumber18 = _add_biblio
('title 18');
161 $shelf5->add_biblio( $biblionumber13, $jane_doe{borrowernumber
} );
162 $shelf5->add_biblio( $biblionumber14, $jane_doe{borrowernumber
} );
163 $shelf5->add_biblio( $biblionumber15, $jane_doe{borrowernumber
} );
164 $shelf5->add_biblio( $biblionumber16, $jane_doe{borrowernumber
} );
165 $shelf5->add_biblio( $biblionumber17, $jane_doe{borrowernumber
} );
166 $shelf5->add_biblio( $biblionumber18, $jane_doe{borrowernumber
} );
168 for my $i ( 6 .. 15 ) {
169 Koha
::Virtualshelf
->new(
171 shelfname
=> "another public list $i",
173 owner
=> $john_smith{borrowernumber
},
178 # Set common datatables params
180 iDisplayLength
=> 10,
185 C4
::Context
->_new_userenv ('DUMMY_SESSION_ID');
186 C4
::Context
->set_userenv($john_doe{borrowernumber
}, $john_doe{userid
}, 'usercnum', 'First name', 'Surname', 'MYLIBRARY', 'My Library', 0);
188 # Search private lists by title
189 $search_results = C4
::Utils
::DataTables
::VirtualShelves
::search
({
191 dt_params
=> \
%dt_params,
195 is
( $search_results->{ iTotalRecords
}, 2,
196 "There should be 2 private shelves in total" );
198 is
( $search_results->{ iTotalDisplayRecords
}, 2,
199 "There should be 2 private shelves with title like '%ist%" );
201 is
( @
{ $search_results->{ shelves
} }, 2,
202 "There should be 2 private shelves returned" );
204 # Search by type only
205 $search_results = C4
::Utils
::DataTables
::VirtualShelves
::search
({
206 dt_params
=> \
%dt_params,
209 is
( $search_results->{ iTotalRecords
}, 12,
210 "There should be 12 public shelves in total" );
212 is
( $search_results->{ iTotalDisplayRecords
}, 12,
213 "There should be 12 private shelves" );
215 is
( @
{ $search_results->{ shelves
} }, 10,
216 "There should be 10 public shelves returned" );
219 $search_results = C4
::Utils
::DataTables
::VirtualShelves
::search
({
221 dt_params
=> \
%dt_params,
224 is
( $search_results->{ iTotalRecords
}, 12,
225 "There should be 12 public shelves in total" );
227 is
( $search_results->{ iTotalDisplayRecords
}, 2,
228 "There should be 1 public shelves for jane" );
230 is
( @
{ $search_results->{ shelves
} }, 2,
231 "There should be 1 public shelf returned" );
233 # Search by owner and shelf name
234 $search_results = C4
::Utils
::DataTables
::VirtualShelves
::search
({
236 shelfname
=> "public list 1",
237 dt_params
=> \
%dt_params,
240 is
( $search_results->{ iTotalRecords
}, 12,
241 "There should be 12 public shelves in total" );
243 is
( $search_results->{ iTotalDisplayRecords
}, 6,
244 "There should be 6 public shelves for john with name like %public list 1%" );
246 is
( @
{ $search_results->{ shelves
} }, 6,
247 "There should be 6 public chalves returned" );
251 my $biblio = MARC
::Record
->new();
252 $biblio->append_fields(
253 MARC
::Field
->new('245', ' ', ' ', a
=> $title),
255 my ($biblionumber, $biblioitemnumber) = AddBiblio
($biblio, '');
256 return $biblionumber;