Bugzilla – Attachment 21244 Details for
Bug 10683
CRUD routines in C4::Circulation need unit tests
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 10683: Followup CRUD routines in C4::Circulation need unit tests
Bug-10683-Followup-CRUD-routines-in-C4Circulation-.patch (text/plain), 9.54 KB, created by
Jonathan Druart
on 2013-09-19 14:29:56 UTC
(
hide
)
Description:
Bug 10683: Followup CRUD routines in C4::Circulation need unit tests
Filename:
MIME Type:
Creator:
Jonathan Druart
Created:
2013-09-19 14:29:56 UTC
Size:
9.54 KB
patch
obsolete
>From 058cfbe9feaabe99b1487b4d4d5bf242b4582236 Mon Sep 17 00:00:00 2001 >From: Jonathan Druart <jonathan.druart@biblibre.com> >Date: Thu, 19 Sep 2013 16:20:28 +0200 >Subject: [PATCH] Bug 10683: Followup CRUD routines in C4::Circulation need > unit tests > >The borrowers table needs to be cleared after the items table >(last_returned_by column). >Some checks were missing for GetRenewCount and AddRenewal. >Now the tests simulated a renewal for a item and check that the renews >left is decremented. >Moreover the issuingrules tables should be cleared and filled with known >values. > >Signed-off-by: Jonathan Druart <jonathan.druart@biblibre.com> >--- > t/db_dependent/Circulation_Branch.t | 2 +- > t/db_dependent/Circulation_issue.t | 121 ++++++++++++++++++++++++++++------- > 2 files changed, 98 insertions(+), 25 deletions(-) > >diff --git a/t/db_dependent/Circulation_Branch.t b/t/db_dependent/Circulation_Branch.t >index a2d0b90..ee26458 100644 >--- a/t/db_dependent/Circulation_Branch.t >+++ b/t/db_dependent/Circulation_Branch.t >@@ -26,8 +26,8 @@ $dbh->{RaiseError} = 1; > $dbh->{AutoCommit} = 0; > > $dbh->do(q|DELETE FROM issues|); >-$dbh->do(q|DELETE FROM borrowers|); > $dbh->do(q|DELETE FROM items|); >+$dbh->do(q|DELETE FROM borrowers|); > $dbh->do(q|DELETE FROM branches|); > $dbh->do(q|DELETE FROM categories|); > $dbh->do(q|DELETE FROM accountlines|); >diff --git a/t/db_dependent/Circulation_issue.t b/t/db_dependent/Circulation_issue.t >index 09f4d34..7630027 100644 >--- a/t/db_dependent/Circulation_issue.t >+++ b/t/db_dependent/Circulation_issue.t >@@ -10,7 +10,7 @@ use C4::Circulation; > use C4::Items; > use C4::Context; > >-use Test::More tests => 16; >+use Test::More tests => 24; > > BEGIN { > use_ok('C4::Circulation'); >@@ -38,20 +38,14 @@ $dbh->{RaiseError} = 1; > $dbh->{AutoCommit} = 0; > > $dbh->do(q|DELETE FROM issues|); >-$dbh->do(q|DELETE FROM borrowers|); > $dbh->do(q|DELETE FROM items|); >+$dbh->do(q|DELETE FROM borrowers|); > $dbh->do(q|DELETE FROM branches|); > $dbh->do(q|DELETE FROM categories|); > $dbh->do(q|DELETE FROM accountlines|); >+$dbh->do(q|DELETE FROM issuingrules|); > > #Add sample datas >-my @USERENV = ( 1, 'test', 'MASTERTEST', 'Test', 'Test', 't', 'Test', 0, ); >- >-C4::Context->_new_userenv('DUMMY_SESSION_ID'); >-C4::Context->set_userenv(@USERENV); >- >-my $userenv = C4::Context->userenv >- or BAIL_OUT("No userenv"); > > #Add Dates > >@@ -66,7 +60,7 @@ my $daysago10 = output_pref( $dt_today2, 'iso', '24hr', 1 ); > #Add branch and category > my $samplebranch1 = { > add => 1, >- branchcode => 'SAB1', >+ branchcode => 'CPL', > branchname => 'Sample Branch', > branchaddress1 => 'sample adr1', > branchaddress2 => 'sample adr2', >@@ -85,7 +79,7 @@ my $samplebranch1 = { > }; > my $samplebranch2 = { > add => 1, >- branchcode => 'SAB2', >+ branchcode => 'MPL', > branchname => 'Sample Branch2', > branchaddress1 => 'sample adr1_2', > branchaddress2 => 'sample adr2_2', >@@ -137,11 +131,11 @@ $dbh->do( > my $record = MARC::Record->new(); > $record->append_fields( > MARC::Field->new( '952', '0', '0', a => $samplebranch1->{branchcode} ) ); >-my ( $biblionumber, $biblioitemnumber ) = C4::Biblio::AddBiblio( $record, '', ); >+my ( $biblionumber, $biblioitemnumber ) = C4::Biblio::AddBiblio( $record, '' ); > > my @sampleitem1 = C4::Items::AddItem( > { >- barcode => 1, >+ barcode => 'barcode_1', > itemcallnumber => 'callnumber1', > homebranch => $samplebranch1->{branchcode}, > holdingbranch => $samplebranch1->{branchcode}, >@@ -153,7 +147,7 @@ my @sampleitem1 = C4::Items::AddItem( > my $item_id1 = $sampleitem1[2]; > my @sampleitem2 = C4::Items::AddItem( > { >- barcode => 2, >+ barcode => 'barcode_2', > itemcallnumber => 'callnumber2', > homebranch => $samplebranch2->{branchcode}, > holdingbranch => $samplebranch2->{branchcode}, >@@ -171,12 +165,25 @@ my $borrower_id1 = C4::Members::AddMember( > categorycode => $samplecat->{categorycode}, > branchcode => $samplebranch1->{branchcode}, > ); >+my $borrower_1 = C4::Members::GetMember(borrowernumber => $borrower_id1); > my $borrower_id2 = C4::Members::AddMember( > firstname => 'firstname2', > surname => 'surname2 ', > categorycode => $samplecat->{categorycode}, > branchcode => $samplebranch2->{branchcode}, > ); >+my $borrower_2 = C4::Members::GetMember(borrowernumber => $borrower_id2); >+ >+# NEED TO BE FIXED !!! >+# The first parameter for set_userenv is the class ref >+#my @USERENV = ( $borrower_id1, 'test', 'MASTERTEST', 'firstname', 'username', 'CPL', 'CPL', 'email@example.org' ); >+my @USERENV = ( $borrower_id1, 'test', 'MASTERTEST', 'firstname', 'CPL', 'CPL', 'email@example.org' ); >+ >+C4::Context->_new_userenv('DUMMY_SESSION_ID'); >+C4::Context->set_userenv(@USERENV); >+ >+my $userenv = C4::Context->userenv >+ or BAIL_OUT("No userenv"); > > #Begin Tests > >@@ -186,7 +193,7 @@ my $sth = $dbh->prepare($query); > $sth->execute; > my $countissue = $sth -> fetchrow_array; > is ($countissue ,0, "there is no issue"); >-my $datedue1 = C4::Circulation::AddIssue( $borrower_id1, "code", $daysago10,0, $today, '' ); >+my $datedue1 = C4::Circulation::AddIssue( $borrower_1, "code", $daysago10,0, $today, '' ); > like( > $datedue1, > qr/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}/, >@@ -194,7 +201,7 @@ like( > ); > my $issue_id1 = $dbh->last_insert_id( undef, undef, 'issues', undef ); > >-my $datedue2 = C4::Circulation::AddIssue( $borrower_id1, 'Barcode2' ); >+my $datedue2 = C4::Circulation::AddIssue( $borrower_1, 'nonexistent_barcode' ); > is( $datedue2, undef, "AddIssue returns undef if no datedue is specified" ); > my $issue_id2 = $dbh->last_insert_id( undef, undef, 'issues', undef ); > >@@ -242,23 +249,89 @@ is(GetItemIssue,undef,"Without parameter GetItemIssue returns undef"); > is( GetOpenIssue(), undef, "Without parameter GetOpenIssue returns undef" ); > is( GetOpenIssue(-1), undef, > "With wrong parameter GetOpenIssue returns undef" ); >-my $openissue = GetOpenIssue($item_id1); >+my $openissue = GetOpenIssue($borrower_id1, $item_id1); > >+my @renewcount; > #Test GetRenewCount >-my @renewcount = C4::Circulation::GetRenewCount(); >+$datedue2 = C4::Circulation::AddIssue( $borrower_1, 'barcode_1' ); >+isnt( $datedue2, undef, "AddIssue does not return undef if datedue is specified" ); >+#Without anything in DB >+@renewcount = C4::Circulation::GetRenewCount(); > is_deeply( > \@renewcount, >- [ 0, 1, 1 ], >-"Without paramater, GetRenewCount returns renewcount0,renewsallowed = 0,renewsleft = 0" >+ [ 0, undef, 0 ], # FIXME Need to be fixed >+ "Without issuing rules and without parameter, GetRenewCount returns renewcount = 0, renewsallowed = undef, renewsleft = 0" > ); > @renewcount = C4::Circulation::GetRenewCount(-1); > is_deeply( > \@renewcount, >- [ 0, 1, 1 ], >-"Without wrong, GetRenewCount returns renewcount0,renewsallowed = 0,renewsleft = 0" >+ [ 0, undef, 0 ], # FIXME Need to be fixed >+ "Without issuing rules and without wrong parameter, GetRenewCount returns renewcount = 0, renewsallowed = undef, renewsleft = 0" >+); >+@renewcount = C4::Circulation::GetRenewCount($borrower_id1, $item_id1); >+is_deeply( >+ \@renewcount, >+ [ 0, undef, 0 ], # FIXME Need to be fixed >+ "Without issuing rules and with a valid parameter, renewcount = 0, renewsallowed = undef, renewsleft = 0" > ); >-@renewcount = C4::Circulation::GetRenewCount($item_id1); >-is_deeply( \@renewcount, [ 0, 1, 1 ], "Getrenewcount of item1 returns" ); >+ >+#With something in DB >+# Add a default rule: No renewal allowed >+$dbh->do(q| >+ INSERT INTO issuingrules( categorycode, itemtype, branchcode, issuelength, renewalsallowed ) >+ VALUES ( '*', '*', '*', 10, 0 ) >+|); >+@renewcount = C4::Circulation::GetRenewCount(); >+is_deeply( >+ \@renewcount, >+ [ 0, 0, 0 ], >+ "With issuing rules (renewal disallowed) and without parameter, GetRenewCount returns renewcount = 0, renewsallowed = 0, renewsleft = 0" >+); >+@renewcount = C4::Circulation::GetRenewCount(-1); >+is_deeply( >+ \@renewcount, >+ [ 0, 0, 0 ], >+ "With issuing rules (renewal disallowed) and without wrong parameter, GetRenewCount returns renewcount = 0, renewsallowed = 0, renewsleft = 0" >+); >+@renewcount = C4::Circulation::GetRenewCount($borrower_id1, $item_id1); >+is_deeply( >+ \@renewcount, >+ [ 0, 0, 0 ], >+ "With issuing rules (renewal disallowed) and with a valid parameter, Getrenewcount returns renewcount = 0, renewsallowed = 0, renewsleft = 0" >+); >+ >+# Add a default rule: renewal is allowed >+$dbh->do(q| >+ UPDATE issuingrules SET renewalsallowed = 3 >+|); >+@renewcount = C4::Circulation::GetRenewCount(); >+is_deeply( >+ \@renewcount, >+ [ 0, 3, 3 ], >+ "With issuing rules (renewal allowed) and without parameter, GetRenewCount returns renewcount = 0, renewsallowed = 3, renewsleft = 3" >+); >+@renewcount = C4::Circulation::GetRenewCount(-1); >+is_deeply( >+ \@renewcount, >+ [ 0, 3, 3 ], >+ "With issuing rules (renewal allowed) and without wrong parameter, GetRenewCount returns renewcount = 0, renewsallowed = 3, renewsleft = 3" >+); >+@renewcount = C4::Circulation::GetRenewCount($borrower_id1, $item_id1); >+is_deeply( >+ \@renewcount, >+ [ 0, 3, 3 ], >+ "With issuing rules (renewal allowed) and with a valid parameter, Getrenewcount of item1 returns 3 renews left" >+); >+ >+AddRenewal( $borrower_id1, $item_id1, $samplebranch1->{branchcode}, >+ $datedue3, $daysago10 ); >+@renewcount = C4::Circulation::GetRenewCount($borrower_id1, $item_id1); >+is_deeply( >+ \@renewcount, >+ [ 1, 3, 2 ], >+ "With issuing rules (renewal allowed, 2 remaining) and with a valid parameter, Getrenewcount of item1 returns 2 renews left" >+); >+ > > #End transaction > $dbh->rollback; >-- >1.7.10.4
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
|
Splinter Review
Attachments on
bug 10683
:
20689
|
20747
|
21241
|
21243
| 21244