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
=> 52;
26 use_ok
('C4::RotatingCollections');
30 'C4::RotatingCollections',
36 GetCollectionItemBranches
39 RemoveItemFromCollection
43 isItemInThisCollection
48 my $dbh = C4
::Context
->dbh;
49 $dbh->{RaiseError
} = 1;
50 $dbh->{AutoCommit
} = 0;
53 $dbh->do(q
|DELETE FROM issues
|);
54 $dbh->do(q
|DELETE FROM borrowers
|);
55 $dbh->do(q
|DELETE FROM items
|);
56 $dbh->do(q
|DELETE FROM collections_tracking
|);
57 $dbh->do(q
|DELETE FROM collections
|);
58 $dbh->do(q
|DELETE FROM branches
|);
59 $dbh->do(q
|DELETE FROM categories
|);
60 $dbh->do(q
|DELETE FROM branchcategories
|);
62 #Test CreateCollection
63 my $collections = GetCollections
();
64 my $countcollection = scalar(@
$collections);
66 my ($success,$errorCode,$errorMessage);
68 ($success,$errorCode,$errorMessage) = CreateCollection
( 'Collection1', 'Description1' );
69 is
( $success, 1, "All parameters have been given - Collection 1 added" );
70 ok
( !defined $errorCode && !defined $errorMessage,
71 "Collection added, no error code or message");
72 my $collection_id1 = $dbh->last_insert_id( undef, undef, 'collections', undef );
74 ($success,$errorCode,$errorMessage) = CreateCollection
( 'Collection2', 'Description2' );
75 is
( $success, 1, "All parameters have been given - Collection 2 added" );
76 ok
( !defined $errorCode && !defined $errorMessage,
77 "Collection added, no error code or message");
78 my $collection_id2 = $dbh->last_insert_id( undef, undef, 'collections', undef );
80 $collections = GetCollections
();
81 is
( scalar(@
$collections), $countcollection + 2,
82 "Collection1 and Collection2 have been added" );
84 ($success,$errorCode,$errorMessage) = CreateCollection
('Collection3');
85 is
( $success, 1, "Collections can be created without description" );
86 ok
( !defined $errorCode && !defined $errorMessage,
87 "Collection added, no error code or message");
88 my $collection_id3 = $dbh->last_insert_id( undef, undef, 'collections', undef );
90 ($success,$errorCode,$errorMessage) = CreateCollection
();
91 is
( $success, 0, "Title missing, fails to create collection" );
92 is
( $errorCode, 1, "Title missing, error code is 1" );
93 is
( $errorMessage, 'NO_TITLE', "Title missing, error message is NO_TITLE" );
95 $collections = GetCollections
();
96 is
( scalar(@
$collections), $countcollection + 3, "Only one collection added" );
98 #FIXME, as the id is auto incremented, two similar Collections (same title /same description) can be created
99 #$collection1 = CreateCollection('Collection1','Description1');
102 my $collection = GetCollections
();
107 colId
=> $collection_id1,
108 colTitle
=> 'Collection1',
109 colDesc
=> 'Description1',
110 colBranchcode
=> undef
113 colId
=> $collection_id2,
114 colTitle
=> 'Collection2',
115 colDesc
=> 'Description2',
116 colBranchcode
=> undef
119 colId
=> $collection_id3,
120 colTitle
=> 'Collection3',
122 colBranchcode
=> undef
129 #Test UpdateCollection
130 ($success,$errorCode,$errorMessage) =
131 UpdateCollection
( $collection_id2, 'Collection2bis', undef );
132 is
( $success, 1, "UpdateCollection succeeds without description");
134 ($success,$errorCode,$errorMessage) =
135 UpdateCollection
( $collection_id2, 'Collection2 modified', 'Description2 modified' );
136 is
( $success, 1, "Collection2 has been modified" );
137 ok
( !defined $errorCode && !defined $errorMessage,
138 "Collection2 modified, no error code or message");
140 ($success,$errorCode,$errorMessage) =
141 UpdateCollection
( $collection_id2, undef, 'Description' ),
142 ok
( !$success, "UpdateCollection fails without title" );
143 is
( $errorCode, 2, "Title missing, error code is 2");
144 is
( $errorMessage, 'NO_TITLE', "Title missing, error message is NO_TITLE");
146 is
( UpdateCollection
(), 'NO_ID', "UpdateCollection without params" );
149 my @collection1 = GetCollection
($collection_id1);
152 [ $collection_id1, 'Collection1', 'Description1', undef ],
153 "Collection1's informations"
155 my @collection2 = GetCollection
($collection_id2);
158 [ $collection_id2, 'Collection2 modified', 'Description2 modified', undef ],
159 "Collection2's informations"
161 my @undef_collection = GetCollection
();
164 [ undef, undef, undef, undef ],
165 "GetCollection without id given"
167 @undef_collection = GetCollection
(-1);
170 [ undef, undef, undef, undef ],
171 "GetCollection with a wrong id"
174 #Test TransferCollection
177 branchname
=> 'Sample Branch',
178 branchaddress1
=> 'sample adr1',
179 branchaddress2
=> 'sample adr2',
180 branchaddress3
=> 'sample adr3',
181 branchzip
=> 'sample zip',
182 branchcity
=> 'sample city',
183 branchstate
=> 'sample state',
184 branchcountry
=> 'sample country',
185 branchphone
=> 'sample phone',
186 branchfax
=> 'sample fax',
187 branchemail
=> 'sample email',
188 branchurl
=> 'sample url',
189 branchip
=> 'sample ip',
190 branchprinter
=> undef,
191 branchnotes
=> 'sample note',
192 opac_info
=> 'sample opac',
194 Koha
::Library
->new($samplebranch)->store;
195 is
( TransferCollection
( $collection_id1, $samplebranch->{branchcode
} ),
196 1, "Collection1 has been transfered in the branch SAB" );
197 @collection1 = GetCollection
($collection_id1);
201 $collection_id1, 'Collection1',
202 'Description1', $samplebranch->{branchcode
}
204 "Collection1 belongs to the sample branch (SAB)"
206 is
( TransferCollection
, "NO_ID", "TransferCollection without ID" );
208 TransferCollection
($collection_id1),
210 "TransferCollection without branchcode"
213 #Test AddItemToCollection
214 my $record = MARC
::Record
->new();
215 $record->append_fields(
218 a
=> $samplebranch->{branchcode
},
219 b
=> $samplebranch->{branchcode
}
222 my ( $biblionumber, $biblioitemnumber ) = C4
::Biblio
::AddBiblio
( $record, '', );
223 my @sampleitem1 = C4
::Items
::AddItem
(
226 itemcallnumber
=> 'callnumber1',
227 homebranch
=> $samplebranch->{branchcode
},
228 holdingbranch
=> $samplebranch->{branchcode
}
232 my $item_id1 = $sampleitem1[2];
233 my @sampleitem2 = C4
::Items
::AddItem
(
236 itemcallnumber
=> 'callnumber2',
237 homebranch
=> $samplebranch->{branchcode
},
238 holdingbranch
=> $samplebranch->{branchcode
}
242 my $item_id2 = $sampleitem2[2];
243 is
( AddItemToCollection
( $collection_id1, $item_id1 ),
244 1, "Sampleitem1 has been added to Collection1" );
245 is
( AddItemToCollection
( $collection_id1, $item_id2 ),
246 1, "Sampleitem2 has been added to Collection1" );
248 #Test GetItemsInCollection
249 my $itemsincollection1;
250 ($itemsincollection1,$success,$errorCode,$errorMessage) = GetItemsInCollection
($collection_id1);
251 is
( scalar @
$itemsincollection1, 2, "Collection1 has 2 items" );
257 itemcallnumber
=> 'callnumber1',
258 biblionumber
=> $biblionumber,
263 itemcallnumber
=> 'callnumber2',
264 biblionumber
=> $biblionumber,
268 "Collection1 has Item1 and Item2"
270 ($itemsincollection1,$success,$errorCode,$errorMessage) = GetItemsInCollection
();
271 ok
( !$success, "GetItemsInCollection fails without a collection ID" );
272 is
( $errorCode, 1, "Title missing, error code is 2");
273 is
( $errorMessage, 'NO_ID', "Collection ID missing, error message is NO_ID");
275 #Test RemoveItemFromCollection
276 is
( RemoveItemFromCollection
( $collection_id1, $item_id2 ),
277 1, "Item2 has been removed from collection 1" );
278 $itemsincollection1 = GetItemsInCollection
($collection_id1);
279 is
( scalar @
$itemsincollection1, 1, "Collection1 has 1 items" );
281 #Test isItemInAnyCollection
282 is
( C4
::RotatingCollections
::isItemInAnyCollection
($item_id1),
283 1, "Item1 is in a collection" );
284 is
( C4
::RotatingCollections
::isItemInAnyCollection
($item_id2),
285 0, "Item2 is not in a collection" );
286 is
( C4
::RotatingCollections
::isItemInAnyCollection
(),
287 0, "isItemInAnyCollection returns 0 if no itemid given " );
288 is
( C4
::RotatingCollections
::isItemInAnyCollection
(-1),
289 0, "isItemInAnyCollection returns 0 if a wrong id is given" );
291 #Test isItemInThisCollection
293 C4
::RotatingCollections
::isItemInThisCollection
(
294 $item_id1, $collection_id1
297 "Item1 is in the Collection1"
300 C4
::RotatingCollections
::isItemInThisCollection
(
301 $item_id1, $collection_id2
304 "Item1 is not in the Collection2"
307 C4
::RotatingCollections
::isItemInThisCollection
(
308 $item_id2, $collection_id2
311 "Item2 is not in the Collection2"
313 is
( C4
::RotatingCollections
::isItemInThisCollection
($collection_id1),
314 0, "isItemInThisCollection returns 0 is ItemId is missing" );
315 is
( C4
::RotatingCollections
::isItemInThisCollection
($item_id1),
316 0, "isItemInThisCollection returns 0 is Collectionid if missing" );
317 is
( C4
::RotatingCollections
::isItemInThisCollection
(),
318 0, "isItemInThisCollection returns 0 if no params given" );
320 #Test DeleteCollection
321 is
( DeleteCollection
($collection_id2), 1, "Collection2 deleted" );
322 is
( DeleteCollection
($collection_id1), 1, "Collection1 deleted" );
326 "DeleteCollection without id"
328 $collections = GetCollections
();
330 scalar(@
$collections),
331 $countcollection + 1,
332 "Two Collections have been deleted"