Bugzilla – Attachment 41763 Details for
Bug 7957
Routing lists: manage several routing list for each subscription, and export them as CSV
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 7957: Add unit tests for new subroutines
Bug-7957-Add-unit-tests-for-new-subroutines.patch (text/plain), 13.71 KB, created by
Julian Maurice
on 2015-08-21 09:07:00 UTC
(
hide
)
Description:
Bug 7957: Add unit tests for new subroutines
Filename:
MIME Type:
Creator:
Julian Maurice
Created:
2015-08-21 09:07:00 UTC
Size:
13.71 KB
patch
obsolete
>From 8c43b71cde7cbc1f3b50218accab0cb629cbb50d Mon Sep 17 00:00:00 2001 >From: Julian Maurice <julian.maurice@biblibre.com> >Date: Thu, 23 Apr 2015 16:36:05 +0200 >Subject: [PATCH] Bug 7957: Add unit tests for new subroutines > >--- > C4/Serials/RoutingLists.pm | 17 ++- > t/db_dependent/Serials.t | 41 +++++- > t/db_dependent/Serials/RoutingLists.t | 240 ++++++++++++++++++++++++++++++++++ > 3 files changed, 295 insertions(+), 3 deletions(-) > create mode 100644 t/db_dependent/Serials/RoutingLists.t > >diff --git a/C4/Serials/RoutingLists.pm b/C4/Serials/RoutingLists.pm >index 0c38313..a891d86 100644 >--- a/C4/Serials/RoutingLists.pm >+++ b/C4/Serials/RoutingLists.pm >@@ -49,14 +49,17 @@ this function create a new routing list for a subscription. > sub AddRoutingList { > my ($subscriptionid, $title) = @_; > >+ return unless $subscriptionid and $title; >+ > my $dbh = C4::Context->dbh(); > my $query = qq{ > INSERT INTO subscriptionroutinglist (subscriptionid, title) > VALUES (?, ?) > }; > my $sth = $dbh->prepare($query); >- $sth->execute($subscriptionid, $title); >+ my $rv = $sth->execute($subscriptionid, $title); > >+ return unless $rv; > return $dbh->last_insert_id(undef, undef, 'subscriptionroutinglist', undef); > } > >@@ -71,6 +74,8 @@ this function modifies a routing list. > sub ModRoutingList { > my ($routinglistid, $subscriptionid, $title, $notes, @borrowernumbers) = @_; > >+ return unless $routinglistid; >+ > my $dbh = C4::Context->dbh; > my $query = 'UPDATE subscriptionroutinglist'; > my @setstrings = (); >@@ -127,6 +132,8 @@ this function delete a routing list. > sub DelRoutingList { > my ($routinglistid) = @_; > >+ return unless $routinglistid; >+ > my $dbh = C4::Context->dbh; > my $query = qq{ > DELETE FROM subscriptionroutinglist >@@ -150,6 +157,8 @@ to this routing list. > sub GetRoutingList { > my ($routinglistid) = @_; > >+ return unless $routinglistid; >+ > my $dbh = C4::Context->dbh; > my $query = qq{ > SELECT * >@@ -177,7 +186,7 @@ sub GetRoutingList { > > =head2 GetRoutingLists > >-$routinglists = &GetRoutingLists($subscriptionid); >+@routinglists = &GetRoutingLists($subscriptionid); > > this function get all routing lists for a subscription. > >@@ -186,6 +195,8 @@ this function get all routing lists for a subscription. > sub GetRoutingLists { > my ($subscriptionid) = @_; > >+ return () unless $subscriptionid; >+ > my $dbh = C4::Context->dbh; > my $query = qq{ > SELECT routinglistid >@@ -240,6 +251,8 @@ this function return the routing list as a CSV file. > sub GetRoutingListAsCSV { > my ($routinglistid) = @_; > >+ return unless $routinglistid; >+ > require C4::Biblio; > require C4::Serials; > require C4::Members; >diff --git a/t/db_dependent/Serials.t b/t/db_dependent/Serials.t >index 4b252ea..3b9f70e 100644 >--- a/t/db_dependent/Serials.t >+++ b/t/db_dependent/Serials.t >@@ -14,8 +14,9 @@ use C4::Debug; > use C4::Bookseller; > use C4::Biblio; > use C4::Budgets; >+use C4::Items; > use Koha::DateUtils; >-use Test::More tests => 44; >+use Test::More tests => 46; > > BEGIN { > use_ok('C4::Serials'); >@@ -242,4 +243,42 @@ for my $am ( @arrived_missing ) { > } > is( $subscription->{missinglist}, join('; ', @serialseqs), "subscription missinglist is updated after ModSerialStatus" ); > >+subtest 'GetSerial' => sub { >+ plan tests => 6; >+ >+ my $serial; >+ >+ $serial = GetSerial; >+ ok(not (defined $serial), 'GetSerial() returns undef'); >+ >+ $serial = GetSerial(-1); >+ ok(not (defined $serial), 'GetSerial(-1) returns undef'); >+ >+ my ($total_issues, @serials) = C4::Serials::GetSerials( $subscriptionid ); >+ $serial = GetSerial($serials[0]->{serialid}); >+ is($serial->{serialid}, $serials[0]->{serialid}, 'serialid is ok'); >+ is($serial->{serialseq}, $serials[0]->{serialseq}, 'serialseq is ok'); >+ is($serial->{status}, $serials[0]->{status}, 'status is ok'); >+ is($serial->{notes}, $serials[0]->{notes}, 'notes is ok'); >+}; >+ >+subtest 'GetSerialItemnumber' => sub { >+ plan tests => 3; >+ >+ my $itemnumber; >+ >+ $itemnumber = GetSerialItemnumber; >+ ok(not (defined $itemnumber), 'GetSerialItemnumber() returns undef'); >+ >+ $itemnumber = GetSerialItemnumber(-1); >+ ok(not (defined $itemnumber), 'GetSerialItemnumber(-1) returns undef'); >+ >+ my $item_itemnumber = C4::Items::AddItem({}, $biblionumber); >+ my ($total_issues, @serials) = C4::Serials::GetSerials( $subscriptionid ); >+ AddItem2Serial($serials[0]->{serialid}, $item_itemnumber); >+ $itemnumber = GetSerialItemnumber($serials[0]->{serialid}); >+ is($itemnumber, $item_itemnumber, >+ 'GetSerialItemnumber($serialid) returns itemnumber'); >+}; >+ > $dbh->rollback; >diff --git a/t/db_dependent/Serials/RoutingLists.t b/t/db_dependent/Serials/RoutingLists.t >new file mode 100644 >index 0000000..ea492d4 >--- /dev/null >+++ b/t/db_dependent/Serials/RoutingLists.t >@@ -0,0 +1,240 @@ >+#!/usr/bin/perl >+ >+use Modern::Perl; >+ >+use Test::More tests => 7; >+ >+use C4::Serials; >+use C4::Serials::RoutingLists; >+ >+use C4::Biblio; >+use C4::Members; >+ >+use Koha::Database; >+ >+my $dbh = C4::Context->dbh; >+$dbh->{AutoCommit} = 0; >+ >+my $record = MARC::Record->new; >+my $field = C4::Context->preference('marcflavour') eq 'UNIMARC' >+ ? MARC::Field->new(200, '', '', a => 'Title') >+ : MARC::Field->new(245, '', '', a => 'Title'); >+$record->append_fields($field); >+my ($biblionumber) = AddBiblio($record, ''); >+ >+my $subscriptionid = C4::Serials::NewSubscription(undef, '', (undef)x3, >+ $biblionumber, '2015-04-23', (undef)x10, '', '', (undef)x6, 0, '', 0, >+ undef, undef, 0, undef, undef, 0); >+ >+my $schema = Koha::Database->new->schema; >+my $categorycode = $schema->resultset('Category')->search->first->categorycode; >+my $branchcode = $schema->resultset('Branch')->search->first->branchcode; >+ >+my $borrowernumber1 = C4::Members::AddMember( >+ surname => 'Doe', >+ firstname => 'John', >+ categorycode => $categorycode, >+ branchcode => $branchcode, >+); >+my $borrowernumber2 = C4::Members::AddMember( >+ surname => 'Smith', >+ firstname => 'Jane', >+ categorycode => $categorycode, >+ branchcode => $branchcode, >+); >+ >+subtest 'AddRoutingList' => sub { >+ plan tests => 9; >+ >+ my $routinglistid; >+ >+ $routinglistid = C4::Serials::RoutingLists::AddRoutingList; >+ ok(not (defined $routinglistid), >+ 'AddRoutingList with bad parameters should return undef'); >+ >+ $routinglistid = C4::Serials::RoutingLists::AddRoutingList(-1); >+ ok(not (defined $routinglistid), >+ 'AddRoutingList with bad parameters should return undef'); >+ >+ $routinglistid = C4::Serials::RoutingLists::AddRoutingList($subscriptionid); >+ ok(not (defined $routinglistid), >+ 'AddRoutingList with bad parameters should return undef'); >+ >+ $routinglistid = C4::Serials::RoutingLists::AddRoutingList($subscriptionid, ''); >+ ok(not (defined $routinglistid), >+ 'AddRoutingList with bad parameters should return undef'); >+ >+ $routinglistid = C4::Serials::RoutingLists::AddRoutingList($subscriptionid, 'Title'); >+ ok((defined $routinglistid), >+ 'AddRoutingList with good parameters should return an id'); >+ >+ my $routinglist = C4::Serials::RoutingLists::GetRoutingList($routinglistid); >+ is($routinglist->{routinglistid}, $routinglistid, >+ 'new routing list id is ok'); >+ is($routinglist->{subscriptionid}, $subscriptionid, >+ 'new routing list subscriptionid is ok'); >+ is($routinglist->{title}, >+ 'Title', 'new routing list title is ok'); >+ ok(not (defined $routinglist->{notes}), >+ 'new routing list has not notes'); >+}; >+ >+subtest 'ModRoutingList' => sub { >+ plan tests => 5; >+ >+ my ($routinglist, $expected); >+ >+ my $routinglistid = C4::Serials::RoutingLists::AddRoutingList($subscriptionid, 'Title'); >+ >+ C4::Serials::RoutingLists::ModRoutingList($routinglistid); >+ $routinglist = C4::Serials::RoutingLists::GetRoutingList($routinglistid); >+ $expected = { >+ routinglistid => $routinglistid, >+ subscriptionid => $subscriptionid, >+ title => 'Title', >+ notes => undef, >+ }; >+ is_deeply($routinglist, $expected, 'routing list is as expected'); >+ >+ C4::Serials::RoutingLists::ModRoutingList($routinglistid, undef, 'Title 2'); >+ $routinglist = C4::Serials::RoutingLists::GetRoutingList($routinglistid); >+ $expected = { >+ routinglistid => $routinglistid, >+ subscriptionid => $subscriptionid, >+ title => 'Title 2', >+ notes => undef, >+ }; >+ is_deeply($routinglist, $expected, 'routing list is as expected'); >+ >+ C4::Serials::RoutingLists::ModRoutingList($routinglistid, undef, undef, 'notes'); >+ $routinglist = C4::Serials::RoutingLists::GetRoutingList($routinglistid); >+ $expected = { >+ routinglistid => $routinglistid, >+ subscriptionid => $subscriptionid, >+ title => 'Title 2', >+ notes => 'notes', >+ }; >+ is_deeply($routinglist, $expected, 'routing list is as expected'); >+ >+ C4::Serials::RoutingLists::ModRoutingList($routinglistid, undef, undef, >+ undef, $borrowernumber1, $borrowernumber2); >+ $routinglist = C4::Serials::RoutingLists::GetRoutingList($routinglistid); >+ $expected = { >+ routinglistid => $routinglistid, >+ subscriptionid => $subscriptionid, >+ title => 'Title 2', >+ notes => 'notes', >+ borrowers => [$borrowernumber1, $borrowernumber2], >+ }; >+ is_deeply($routinglist, $expected, 'routing list is as expected'); >+ >+ C4::Serials::RoutingLists::ModRoutingList($routinglistid); >+ $routinglist = C4::Serials::RoutingLists::GetRoutingList($routinglistid); >+ $expected = { >+ routinglistid => $routinglistid, >+ subscriptionid => $subscriptionid, >+ title => 'Title 2', >+ notes => 'notes', >+ }; >+ is_deeply($routinglist, $expected, 'routing list is as expected'); >+}; >+ >+subtest 'DelRoutingList' => sub { >+ plan tests => 1; >+ >+ my $routinglist; >+ >+ my $routinglistid = C4::Serials::RoutingLists::AddRoutingList($subscriptionid, 'Title'); >+ C4::Serials::RoutingLists::DelRoutingList($routinglistid); >+ $routinglist = C4::Serials::RoutingLists::GetRoutingList($routinglistid); >+ ok(not (defined $routinglist), 'routing list is deleted'); >+}; >+ >+subtest 'GetRoutingList' => sub { >+ plan tests => 3; >+ >+ my $routinglist; >+ >+ $routinglist = C4::Serials::RoutingLists::GetRoutingList; >+ ok (not (defined $routinglist), 'GetRoutingList() returns undef'); >+ >+ $routinglist = C4::Serials::RoutingLists::GetRoutingList(-1); >+ ok (not (defined $routinglist), 'GetRoutingList(-1) returns undef'); >+ >+ my $routinglistid = C4::Serials::RoutingLists::AddRoutingList($subscriptionid, 'Title'); >+ $routinglist = C4::Serials::RoutingLists::GetRoutingList($routinglistid); >+ ok ((defined $routinglist), 'GetRoutingList($routinglistid) returns undef'); >+}; >+ >+subtest 'GetRoutingLists' => sub { >+ plan tests => 4; >+ >+ my (@routinglists, $routinglistid); >+ >+ # Remove routing lists from previous tests >+ @routinglists = C4::Serials::RoutingLists::GetRoutingLists($subscriptionid); >+ foreach my $routinglist (@routinglists) { >+ C4::Serials::RoutingLists::DelRoutingList($routinglist->{routinglistid}); >+ } >+ >+ @routinglists = C4::Serials::RoutingLists::GetRoutingLists; >+ is(scalar @routinglists, 0, 'GetRoutingLists() returns an empty list'); >+ >+ @routinglists = C4::Serials::RoutingLists::GetRoutingLists($subscriptionid); >+ is(scalar @routinglists, 0, >+ 'GetRoutingLists($subscriptionid) returns an empty list'); >+ >+ $routinglistid = C4::Serials::RoutingLists::AddRoutingList($subscriptionid, 'list 1'); >+ C4::Serials::RoutingLists::ModRoutingList($routinglistid, undef, undef, >+ undef, $borrowernumber1); >+ $routinglistid = C4::Serials::RoutingLists::AddRoutingList($subscriptionid, 'list 2'); >+ C4::Serials::RoutingLists::ModRoutingList($routinglistid, undef, undef, >+ undef, $borrowernumber1); >+ @routinglists = C4::Serials::RoutingLists::GetRoutingLists($subscriptionid); >+ is(scalar @routinglists, 2, >+ 'GetRoutingLists($subscriptionid) returns all routing lists'); >+ is_deeply($routinglists[0]->{borrowers}, [$borrowernumber1], >+ 'GetRoutingLists returns borrower list for each routing list'); >+}; >+ >+subtest 'GetRoutingListsCount' => sub { >+ plan tests => 3; >+ >+ my $count; >+ >+ # Remove routing lists from previous tests >+ my @routinglists = C4::Serials::RoutingLists::GetRoutingLists($subscriptionid); >+ foreach my $routinglist (@routinglists) { >+ C4::Serials::RoutingLists::DelRoutingList($routinglist->{routinglistid}); >+ } >+ >+ $count = C4::Serials::RoutingLists::GetRoutingListsCount; >+ is($count, undef, 'GetRoutingListsCount() returns undef'); >+ >+ $count = C4::Serials::RoutingLists::GetRoutingListsCount($subscriptionid); >+ is($count, 0, 'GetRoutingListsCount($subscriptionid) returns 0'); >+ >+ C4::Serials::RoutingLists::AddRoutingList($subscriptionid, 'list 1'); >+ C4::Serials::RoutingLists::AddRoutingList($subscriptionid, 'list 2'); >+ $count = C4::Serials::RoutingLists::GetRoutingListsCount($subscriptionid); >+ is($count, 2, 'GetRoutingListsCount($subscriptionid) returns 2'); >+}; >+ >+subtest 'GetRoutingListAsCSV' => sub { >+ plan tests => 1; >+ >+ my $routinglistid = C4::Serials::RoutingLists::AddRoutingList( >+ $subscriptionid, 'list 1'); >+ >+ C4::Serials::RoutingLists::ModRoutingList($routinglistid, undef, undef, >+ 'notes', $borrowernumber1, $borrowernumber2); >+ >+ my $csv = C4::Serials::RoutingLists::GetRoutingListAsCSV($routinglistid); >+ my $expected = >+ q|"Subscription title","Routing list",Surname,Firstname,Notes| . "\n" >+ . q|Title,"list 1",Doe,John,notes| . "\n" >+ . q|Title,"list 1",Smith,Jane,notes| . "\n"; >+ is($csv, $expected, 'csv is as expected'); >+}; >+ >+$dbh->rollback; >-- >1.9.1
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 7957
:
9259
|
10973
|
13217
|
16614
|
21340
|
22726
|
35709
|
35801
|
35802
|
35803
|
35804
|
35842
|
35860
|
35872
|
35873
|
35874
|
35875
|
38425
|
41762
|
41763
|
41764
|
42427
|
42428
|
42429
|
47633
|
47634
|
47635
|
47659
|
47660
|
47661
|
47662
|
47663
|
47664
|
50226
|
50227
|
50228
|
50265
|
50266
|
50270
|
50273
|
97519
|
97520
|
97521
|
97522
|
97523
|
97524