# Add more tests here!!!
use Modern::Perl;
-use YAML;
-use C4::Serials;
+use C4::Serials qw( updateClaim NewSubscription GetSubscription GetSubscriptionHistoryFromSubscriptionId SearchSubscriptions ModSubscription GetExpirationDate GetSerials GetSerialInformation NewIssue AddItem2Serial DelSubscription GetFullSubscription PrepareSerialsData GetSubscriptionsFromBiblionumber ModSubscriptionHistory GetSerials2 GetLatestSerials GetNextSeq GetSeq CountSubscriptionFromBiblionumber ModSerialStatus findSerialsByStatus HasSubscriptionStrictlyExpired HasSubscriptionExpired GetLateOrMissingIssues check_routing addroutingmember GetNextDate );
use C4::Serials::Frequency;
use C4::Serials::Numberpattern;
-use C4::Debug;
-use C4::Biblio;
-use C4::Budgets;
-use C4::Items;
+use C4::Biblio qw( AddBiblio GetMarcFromKohaField );
+use C4::Budgets qw( AddBudgetPeriod AddBudget );
+use C4::Items qw( AddItemFromMarc );
use Koha::Database;
use Koha::DateUtils;
use Koha::Acquisition::Booksellers;
use t::lib::Mocks;
use t::lib::TestBuilder;
-use Test::More tests => 48;
+use Test::More tests => 49;
BEGIN {
- use_ok('C4::Serials');
+ use_ok('C4::Serials', qw( updateClaim NewSubscription GetSubscription GetSubscriptionHistoryFromSubscriptionId SearchSubscriptions ModSubscription GetExpirationDate GetSerials GetSerialInformation NewIssue AddItem2Serial DelSubscription GetFullSubscription PrepareSerialsData GetSubscriptionsFromBiblionumber ModSubscriptionHistory GetSerials2 GetLatestSerials GetNextSeq GetSeq CountSubscriptionFromBiblionumber ModSerialStatus findSerialsByStatus HasSubscriptionStrictlyExpired HasSubscriptionExpired GetLateOrMissingIssues check_routing addroutingmember GetNextDate ));
}
my $schema = Koha::Database->new->schema;
my ($biblionumber, $biblioitemnumber) = AddBiblio(MARC::Record->new, '');
-my $budgetid;
my $bpid = AddBudgetPeriod({
budget_period_startdate => '2015-01-01',
budget_period_enddate => '2015-12-31',
whenmorethan1 => 1,
});
-my $notes = 'notes';
+my $notes = "a\nnote\non\nseveral\nlines";
my $internalnotes = 'intnotes';
my $subscriptionid = NewSubscription(
undef, "", undef, undef, $budget_id, $biblionumber,
'2013-01-01', $frequency_id, undef, undef, undef,
undef, undef, undef, undef, undef, undef,
- 1, $notes,undef, '2013-01-01', undef, $pattern_id,
+ 1, $notes, ,undef, '2013-01-01', undef, $pattern_id,
undef, undef, 0, $internalnotes, 0,
undef, undef, 0, undef, '2013-12-31', 0
);
is( $subscriptioninformation->{internalnotes}, $internalnotes, 'NewSubscription should set internalnotes' );
my $subscription_history = C4::Serials::GetSubscriptionHistoryFromSubscriptionId($subscriptionid);
-is( $subscription_history->{opacnote}, '', 'NewSubscription should not set subscriptionhistory opacnotes' );
-is( $subscription_history->{librariannote}, '', 'NewSubscription should not set subscriptionhistory librariannotes' );
+is( $subscription_history->{opacnote}, undef, 'NewSubscription should not set subscriptionhistory opacnotes' );
+is( $subscription_history->{librariannote}, undef, 'NewSubscription should not set subscriptionhistory librariannotes' );
my @subscriptions = SearchSubscriptions({string => $subscriptioninformation->{bibliotitle}, orderby => 'title' });
isa_ok( \@subscriptions, 'ARRAY' );
my $biblio = $builder->build_sample_biblio();
my $biblionumber = $biblio->biblionumber;
- my ( $icn_tag, $icn_sf ) = GetMarcFromKohaField( 'items.itemcallnumber', '' );
- my ( $it_tag, $it_sf ) = GetMarcFromKohaField( 'items.itype', '' );
+ my ( $icn_tag, $icn_sf ) = GetMarcFromKohaField( 'items.itemcallnumber' );
+ my ( $it_tag, $it_sf ) = GetMarcFromKohaField( 'items.itype' );
my $itemtype = $builder->build( { source => 'Itemtype' } )->{itemtype};
my $itemcallnumber = 'XXXmy itemcallnumberXXX';
- my $item_record = new MARC::Record;
+ my $item_record = MARC::Record->new;
$item_record->append_fields(
MARC::Field->new( '080', '', '', "a" => "default" ),
);
my ( undef, undef, $itemnumber ) = C4::Items::AddItemFromMarc( $item_record, $biblionumber );
my $serialid = C4::Serials::NewIssue( "serialseq", $subscriptionid, $biblionumber,
- 1, undef, undef, "publisheddatetext", "notes" );
+ 1, undef, undef, "publisheddatetext", "notes", "routingnotes" );
C4::Serials::AddItem2Serial( $serialid, $itemnumber );
my $serial_info = C4::Serials::GetSerialInformation($serialid);
my ($itemcallnumber_info) = grep { $_->{kohafield} eq 'items.itemcallnumber' }
is(C4::Serials::AddItem2Serial(), undef, 'test adding item to serial');
is(C4::Serials::GetFullSubscription(), undef, 'test getting full subscription');
is(C4::Serials::PrepareSerialsData(), undef, 'test preparing serial data');
-is(C4::Serials::GetSubscriptionsFromBiblionumber(), undef, 'test getting subscriptions form biblio number');
+
+subtest 'GetSubscriptionsFromBiblionumber' => sub {
+ plan tests => 4;
+
+ is( C4::Serials::GetSubscriptionsFromBiblionumber(),
+ undef, 'test getting subscriptions form biblio number' );
+
+ my $subscriptions = C4::Serials::GetSubscriptionsFromBiblionumber($biblionumber);
+ ModSubscriptionHistory( $subscriptions->[0]->{subscriptionid},
+ undef, undef, $notes, $notes, $notes );
+
+ $subscriptions = C4::Serials::GetSubscriptionsFromBiblionumber($biblionumber);
+ is( $subscriptions->[0]->{opacnote}, $notes,
+ 'GetSubscriptionsFromBiblionumber should have returned the opacnote as it is in DB, ie. without br tags'
+ );
+ is( $subscriptions->[0]->{recievedlist}, $notes,
+ 'GetSubscriptionsFromBiblionumber should have returned recievedlist as it is in DB, ie. without br tags'
+ );
+ is( $subscriptions->[0]->{missinglist}, $notes,
+ 'GetSubscriptionsFromBiblionumber should have returned missinglist as it is in DB, ie. without br tags'
+ );
+};
is(C4::Serials::GetSerials(), undef, 'test getting serials when you enter nothing');
is(C4::Serials::GetSerials2(), undef, 'test getting serials when you enter nothing');
is($result_0, undef, 'Got the expected undef from update claim with nothin');
# Given ... 3 serial. 2 of them updated.
- my $serialids_1 = [90980, 90981];
my $claimdate_1 = dt_from_string('2001-01-13'); # arbitrary date some time in the past.
my $claim_count_1 = 5;
- Koha::Serial->new( { serialid => $serialids_1->[0], serialseq => 'serialseq', subscriptionid => $subscriptionid, status => 3,
- biblionumber => 12345, claimdate => $claimdate_1, claims_count => $claim_count_1, } )->store();
- Koha::Serial->new( { serialid => $serialids_1->[1], serialseq => 'serialseq', subscriptionid => $subscriptionid, status => 3,
- biblionumber => 12345, claimdate => $claimdate_1, claims_count => $claim_count_1, } )->store();
- Koha::Serial->new( { serialid => 90982, serialseq => 'serialseq', subscriptionid => $subscriptionid, status => 3,
- biblionumber => 12345, claimdate => $claimdate_1, claims_count => $claim_count_1, } )->store();
+ my $biblio = $builder->build_sample_biblio;
+ my $serial1 = $builder->build_object(
+ {
+ class => 'Koha::Serials',
+ value => {
+ serialseq => 'serialseq',
+ subscriptionid => $subscriptionid,
+ status => 3,
+ biblionumber => $biblio->biblionumber,
+ claimdate => $claimdate_1,
+ claims_count => $claim_count_1,
+ }
+ }
+ );
+ my $serial2 = $builder->build_object(
+ {
+ class => 'Koha::Serials',
+ value => {
+ serialseq => 'serialseq',
+ subscriptionid => $subscriptionid,
+ status => 3,
+ biblionumber => $biblio->biblionumber,
+ claimdate => $claimdate_1,
+ claims_count => $claim_count_1,
+ }
+ }
+ );
+ my $serial3 = $builder->build_object(
+ {
+ class => 'Koha::Serials',
+ value => {
+ serialseq => 'serialseq',
+ subscriptionid => $subscriptionid,
+ status => 3,
+ biblionumber => $biblio->biblionumber,
+ claimdate => $claimdate_1,
+ claims_count => $claim_count_1,
+ }
+ }
+ );
# When ...
- my $result_1 = C4::Serials::updateClaim($serialids_1);
+ my $result_1 = C4::Serials::updateClaim([$serial1->serialid, $serial2->serialid]);
# Then ...
is($result_1, 2, 'Got the expected 2 from update claim with 2 serial ids');
- my @late_or_missing_issues_1_0 = C4::Serials::GetLateOrMissingIssues(undef, $serialids_1->[0]);
+ my @late_or_missing_issues_1_0 = C4::Serials::GetLateOrMissingIssues(undef, $serial1->serialid);
is($late_or_missing_issues_1_0[0]->{claimdate}, $today, 'Got the expected first different claim date from update claim');
is($late_or_missing_issues_1_0[0]->{claims_count}, $claim_count_1+1, 'Got the expected first claim count from update claim');
is($late_or_missing_issues_1_0[0]->{status}, 7, 'Got the expected first claim status from update claim');
- my @late_or_missing_issues_1_1 = C4::Serials::GetLateOrMissingIssues(undef, $serialids_1->[1]);
+ my @late_or_missing_issues_1_1 = C4::Serials::GetLateOrMissingIssues(undef, $serial2->serialid);
is($late_or_missing_issues_1_1[0]->{claimdate}, $today, 'Got the expected second different claim date from update claim');
is($late_or_missing_issues_1_1[0]->{claims_count}, $claim_count_1+1, 'Got the expected second claim count from update claim');
is($late_or_missing_issues_1_1[0]->{status}, 7, 'Got the expected second claim status from update claim');
- my @late_or_missing_issues_1_2 = C4::Serials::GetLateOrMissingIssues(undef, 90982);
+ my @late_or_missing_issues_1_2 = C4::Serials::GetLateOrMissingIssues(undef, $serial3->serialid);
is($late_or_missing_issues_1_2[0]->{claimdate}, output_pref({ dt => $claimdate_1, dateonly => 1}), 'Got the expected unchanged claim date from update claim');
is($late_or_missing_issues_1_2[0]->{claims_count}, $claim_count_1, 'Got the expected unchanged claim count from update claim');
is($late_or_missing_issues_1_2[0]->{status}, 3, 'Got the expected unchanged claim status from update claim');
is( @serialsByStatus, 1, "ModSerialStatus delete corectly serial expected and not create another if exists" );
};
-subtest "NewSubscription" => sub {
- plan tests => 1;
+subtest "PreserveSerialNotes preference" => sub {
+ plan tests => 2;
+ my ($expected_serial) = GetSerials2( $subscriptionid, [1] );
+
+ t::lib::Mocks::mock_preference( 'PreserveSerialNotes', 1 );
+
+ C4::Serials::ModSerialStatus( $expected_serial->{serialid}, 'NO.20', $publisheddate, $publisheddate, $publisheddate, '1', 'an useless note' );
+ @serialsByStatus = C4::Serials::findSerialsByStatus( 1, $subscriptionid );
+ is( $serialsByStatus[0]->{note},$expected_serial->{note}, "note passed through if supposed to");
+
+ t::lib::Mocks::mock_preference( 'PreserveSerialNotes', 0 );
+ $expected_serial = $serialsByStatus[0];
+ C4::Serials::ModSerialStatus( $expected_serial->{serialid}, 'NO.20', $publisheddate, $publisheddate, $publisheddate, '1', 'an useless note' );
+ is( $serialsByStatus[0]->{note},$expected_serial->{note}, "note not passed through if not supposed to");
+
+};
+
+subtest "NewSubscription|ModSubscription" => sub {
+ plan tests => 4;
my $subscriptionid = NewSubscription(
"", "", "", "", $budget_id, $biblionumber,
'2013-01-01', $frequency_id, "", "", "",
"", "", 0, "", '2013-12-31', 0
);
ok($subscriptionid, "Sending empty string instead of undef to reflect use of the interface");
+
+ my $subscription = Koha::Subscriptions->find($subscriptionid);
+ my $serials = Koha::Serials->search({ subscriptionid => $subscriptionid });
+ is( $serials->count, 1, "NewSubscription created a first serial" );
+
+ my $biblio_2 = $builder->build_sample_biblio;
+ my $subscription_info = $subscription->unblessed;
+ $subscription_info->{biblionumber} = $biblio_2->biblionumber;
+ ModSubscription( @$subscription_info{qw(
+ librarian branchcode aqbooksellerid cost aqbudgetid startdate
+ periodicity firstacquidate irregularity numberpattern locale
+ numberlength weeklength monthlength lastvalue1 innerloop1 lastvalue2
+ innerloop2 lastvalue3 innerloop3 status biblionumber callnumber notes
+ letter manualhistory internalnotes serialsadditems staffdisplaycount
+ opacdisplaycount graceperiod location enddate subscriptionid
+ skip_serialseq
+ )} );
+
+ $serials = Koha::Serials->search({ subscriptionid => $subscriptionid });
+ is( $serials->count, 1, "Still only one serial" );
+ is( $serials->next->biblionumber, $biblio_2->biblionumber, 'ModSubscription should have updated serial.biblionumber');
};