Bug 15030: Add tests
authorJonathan Druart <jonathan.druart@bugs.koha-community.org>
Thu, 12 Nov 2015 12:28:38 +0000 (12:28 +0000)
committerKyle M Hall <kyle@bywatersolutions.com>
Tue, 7 Feb 2017 17:43:49 +0000 (17:43 +0000)
This test will prevent regression on the lost of data when
items.itemcallnumber is linked with a plugin.

Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Signed-off-by: Josef Moravec <josef.moravec@gmail.com>
Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
t/db_dependent/Serials.t

index 1ef0cb0..dc6edd3 100755 (executable)
@@ -13,10 +13,11 @@ use C4::Serials::Numberpattern;
 use C4::Debug;
 use C4::Biblio;
 use C4::Budgets;
+use C4::Items;
 use Koha::DateUtils;
 use Koha::Acquisition::Booksellers;
 use t::lib::Mocks;
-use Test::More tests => 48;
+use Test::More tests => 49;
 
 BEGIN {
     use_ok('C4::Serials');
@@ -32,6 +33,8 @@ $dbh->{RaiseError} = 1;
 my @methods = ('updateClaim');
 can_ok('C4::Serials', @methods);
 
+$dbh->do(q|UPDATE marc_subfield_structure SET value_builder="callnumber.pl" where kohafield="items.itemcallnumber" and frameworkcode=''|);
+
 my $bookseller = Koha::Acquisition::Bookseller->new(
     {
         name => "my vendor",
@@ -111,6 +114,7 @@ if (not $frequency->{unit}) {
     $frequency->{issuesperunit} = 1;
     $frequency->{description} = "Frequency created by t/db_dependant/Serials.t";
     $subscriptioninformation->{periodicity} = AddSubscriptionFrequency($frequency);
+    $subscriptioninformation->{serialsadditems} = 1;
 
     ModSubscription( @$subscriptioninformation{qw(
         librarian branchcode aqbooksellerid cost aqbudgetid startdate
@@ -135,6 +139,21 @@ ok(C4::Serials::GetSerialStatusFromSerialId($serial->{serialid}), 'test getting
 
 isa_ok(C4::Serials::GetSerialInformation($serial->{serialid}), 'HASH', 'test getting Serial Information');
 
+subtest 'Values should not be erased on editing' => sub {
+    plan tests => 1;
+    ( $biblionumber, $biblioitemnumber ) = get_biblio();
+    my ( $icn_tag, $icn_sf ) = GetMarcFromKohaField( 'items.itemcallnumber', '' );
+    my $item_record    = new MARC::Record;
+    my $itemcallnumber = 'XXXmy itemcallnumberXXX';
+    $item_record->append_fields( MARC::Field->new( '080', '', '', "a" => "default" ), MARC::Field->new( $icn_tag, '', '', $icn_sf => $itemcallnumber ), );
+    my ( undef, undef, $itemnumber ) = C4::Items::AddItemFromMarc( $item_record, $biblionumber );
+    my $serialid = C4::Serials::NewIssue( "serialseq", $subscriptionid, $biblionumber, 1, undef, undef, "publisheddatetext", "notes" );
+    C4::Serials::AddItem2Serial( $serialid, $itemnumber );
+    my $serial_info = C4::Serials::GetSerialInformation($serialid);
+    my ($itemcallnumber_info) = grep { $_->{kohafield} eq 'items.itemcallnumber' } @{ $serial_info->{items}[0]->{iteminformation} };
+    like( $itemcallnumber_info->{marc_value}, qr|value="$itemcallnumber"| );
+};
+
 # Delete created frequency
 if ($old_frequency) {
     my $freq_to_delete = $subscriptioninformation->{periodicity};
@@ -153,7 +172,6 @@ if ($old_frequency) {
     DelSubscriptionFrequency($freq_to_delete);
 }
 
-
 # Test calling subs without parameters
 is(C4::Serials::AddItem2Serial(), undef, 'test adding item to serial');
 is(C4::Serials::GetFullSubscription(), undef, 'test getting full subscription');
@@ -317,3 +335,13 @@ subtest "Do not generate an expected if one already exists" => sub {
 };
 
 $dbh->rollback;
+
+sub get_biblio {
+    my $bib = MARC::Record->new();
+    $bib->append_fields(
+        MARC::Field->new('100', ' ', ' ', a => 'Moffat, Steven'),
+        MARC::Field->new('245', ' ', ' ', a => 'Silence in the library'),
+    );
+    my ($bibnum, $bibitemnum) = AddBiblio($bib, '');
+    return ($bibnum, $bibitemnum);
+}