From 8e8cd44e56b57ba42610dff3bc2bf8fb8c78bce9 Mon Sep 17 00:00:00 2001
From: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
Date: Thu, 12 Nov 2015 12:28:38 +0000
Subject: [PATCH] Bug 15030: Add tests

This test will prevent regression on the lost of data when
items.itemcallnumber is linked with a plugin.
---
 t/db_dependent/Serials.t | 32 ++++++++++++++++++++++++++++++--
 1 file changed, 30 insertions(+), 2 deletions(-)

diff --git a/t/db_dependent/Serials.t b/t/db_dependent/Serials.t
index 1f3ebb0..7d28058 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 => 45;
+use Test::More tests => 46;
 
 BEGIN {
     use_ok('C4::Serials');
@@ -27,6 +28,8 @@ my $dbh = C4::Context->dbh;
 $dbh->{AutoCommit} = 0;
 $dbh->{RaiseError} = 1;
 
+$dbh->do(q|UPDATE marc_subfield_structure SET value_builder="callnumber.pl" where kohafield="items.itemcallnumber" and frameworkcode=''|);
+
 my $booksellerid = C4::Bookseller::AddBookseller(
     {
         name => "my vendor",
@@ -106,6 +109,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
@@ -130,6 +134,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};
@@ -148,7 +167,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::UpdateClaimdateIssues(), undef, 'test updating claim date');
@@ -245,3 +263,13 @@ for my $am ( @arrived_missing ) {
 is( $subscription->{missinglist}, join('; ', @serialseqs), "subscription missinglist is updated after ModSerialStatus" );
 
 $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);
+}
-- 
2.1.0