[Koha-cvs] koha/t BookShelves.t [rel_3_0]

Antoine Farnault antoine at koha-fr.org
Thu Aug 31 17:57:09 CEST 2006


CVSROOT:	/sources/koha
Module name:	koha
Branch:		rel_3_0
Changes by:	Antoine Farnault <toins>	06/08/31 15:57:09

Added files:
	t              : BookShelves.t 

Log message:
	Unit Test for BookShelves.pm

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/koha/t/BookShelves.t?cvsroot=koha&only_with_tag=rel_3_0&rev=1.1.2.1

Patches:
Index: BookShelves.t
===================================================================
RCS file: BookShelves.t
diff -N BookShelves.t
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ BookShelves.t	31 Aug 2006 15:57:09 -0000	1.1.2.1
@@ -0,0 +1,159 @@
+#!/usr/bin/perl
+
+#
+# This file is a test script for C4::BookShelves.pm
+# Author : Antoine Farnault, antoine at koha-fr.org
+#
+
+use Test;
+use strict;
+use C4::Context;
+
+# Making 30 tests.
+BEGIN { plan tests => 30 }
+
+# Getting some borrowers from database.
+my $dbh = C4::Context->dbh;
+my $query = qq/
+    SELECT borrowernumber
+    FROM   borrowers
+    LIMIT  10
+/;
+my $sth = $dbh->prepare($query);
+$sth->execute;
+my @borrowers;
+while(my $borrower = $sth->fetchrow){
+    push @borrowers, $borrower;
+}
+
+# Getting some itemnumber from database
+my $query = qq/
+    SELECT itemnumber
+    FROM   items
+    LIMIT  10
+/;
+my $sth = $dbh->prepare($query);
+$sth->execute;
+my @items;
+while(my $item = $sth->fetchrow){
+    push @items, $item;
+}
+
+# Getting some biblionumbers from database
+my $query = qq/
+    SELECT biblionumber
+    FROM   biblio
+    LIMIT  10
+/;
+my $sth = $dbh->prepare($query);
+$sth->execute;
+my @biblionumbers;
+while(my $biblionumber = $sth->fetchrow){
+    push @biblionumbers, $biblionumber;
+}
+
+# ---
+my $delete_bookshelf = qq/
+    DELETE FROM  bookshelf WHERE 1
+/;
+my $delete_bookshelfcontent =qq/
+    DELETE  FROM  shelfcontents WHERE 1
+/;
+
+my $sth = $dbh->prepare($delete_bookshelf);
+$sth->execute;
+my $sth = $dbh->prepare($delete_bookshelfcontent);
+$sth->execute;
+# ---
+
+#----------------------------------------------------------------------#
+#
+#           TESTS START HERE
+#
+#----------------------------------------------------------------------#
+
+use C4::BookShelves;
+my $version = C4::BookShelves->VERSION;
+print "\n----------Testing C4::BookShelves version ".$version."--------\n";
+
+ok($version);   # First test: the module is loaded & the version is readable.
+
+
+#-----------------------TEST AddShelf function------------------------#
+# usage : $shelfnumber = &AddShelf( $shelfname, $owner, $category);
+
+# creating 10 good shelves.
+my @shelves;
+for(my $i=0; $i<10;$i++){
+     my $ShelfNumber = AddShelf("Shelf_".$i,$borrowers[$i],int(rand(3))+1);
+     die "test Not ok, remove some shelves before" if ($ShelfNumber == -1);
+     ok($ShelfNumber);   # Shelf creation successful;
+     push @shelves, $ShelfNumber if ok($ShelfNumber);
+}
+
+ok(10,scalar @shelves); # 10 shelves in @shelves;
+
+# try to create some shelf which already exists.
+for(my $i=0;$i<10;$i++){
+    my $badNumShelf = AddShelf("Shelf_".int(rand(9)),'','');
+    ok(-1,$badNumShelf);   # AddShelf returns -1 if name already exist.
+}
+
+#-----------TEST AddToShelf & &AddToShelfFromBiblio & GetShelfContents &  DelFromShelf functions--------------#
+# usage : &AddToShelf($itemnumber, $shelfnumber);
+# usage : $itemlist = &GetShelfContents($shelfnumber);
+# usage : $itemlist = GetShelfContents($shelfnumber);
+
+for(my $i=0; $i<10;$i++){
+    my $item = $items[int(rand(9))];
+    my $shelfnumber = $shelves[int(rand(9))];
+    
+    my $itemlistBefore = GetShelfContents($shelfnumber);
+    AddToShelf($item,$shelfnumber);
+    my $itemlistAfter = GetShelfContents($shelfnumber);
+    ok(scalar @$itemlistBefore,scalar (@$itemlistAfter - 1));  # the item has been successfuly added.
+
+    
+    # same thing with AddToShelfFromBiblio
+    my $biblionumber = $biblionumbers[int(rand(10))];
+    &AddToShelfFromBiblio($biblionumber, $shelfnumber);
+    my $AfterAgain = GetShelfContents($shelfnumber);
+    ok(scalar @$itemlistAfter, scalar (@$AfterAgain -1));
+}
+
+#-----------------------TEST ModShelf & GetShelf functions------------------------#
+# usage : ModShelf($shelfnumber, $shelfname, $owner, $category )
+# usage : (shelfnumber,shelfname,owner,category) = GetShelf($shelfnumber);
+
+for(my $i=0; $i<10;$i++){
+    my $rand = int(rand(9));
+    my $numA = $shelves[$rand];
+    my $nameA = "NewName_".$rand;
+    my $ownerA = $borrowers[$rand];
+    my $categoryA = int(rand(3))+1;
+    
+    ModShelf($numA,$nameA,$ownerA,$categoryA);
+    my ($numB,$nameB,$ownerB,$categoryB) = GetShelf($numA);
+    
+    ok($numA,$numB);
+    ok($nameA,$nameB);
+    ok($ownerB,$ownerA);
+    ok($categoryA,$categoryB);
+}
+
+#-----------------------TEST DelShelf & DelFromShelf functions------------------------#
+# usage : ($status) = &DelShelf($shelfnumber);
+# usage : &DelFromShelf( $itemnumber, $shelfnumber);
+
+for(my $i=0; $i<10;$i++){
+    my $shelfnumber = $shelves[$i];
+    my $status = DelShelf($shelfnumber);
+    if($status){
+        my $items = GetShelfContents($shelfnumber);
+        ok($status,scalar @$items);
+        foreach (@$items){ # delete all the item in this shelf
+            DelFromShelf($_{'itemnumber'},$shelfnumber);
+        }
+        ok(DelShelf($shelfnumber));
+    }
+}





More information about the Koha-cvs mailing list