Main Koha release repository
https://koha-community.org
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
179 lines
6.5 KiB
179 lines
6.5 KiB
#!/usr/bin/perl
|
|
|
|
# Copyright 2016 Koha Development team
|
|
#
|
|
# This file is part of Koha
|
|
#
|
|
# Koha is free software; you can redistribute it and/or modify it
|
|
# under the terms of the GNU General Public License as published by
|
|
# the Free Software Foundation; either version 3 of the License, or
|
|
# (at your option) any later version.
|
|
#
|
|
# Koha is distributed in the hope that it will be useful, but
|
|
# WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU General Public License
|
|
# along with Koha; if not, see <http://www.gnu.org/licenses>.
|
|
|
|
use Modern::Perl;
|
|
|
|
use Test::More tests => 10;
|
|
|
|
use Koha::Database;
|
|
use Koha::Subscription;
|
|
use Koha::Subscriptions;
|
|
use Koha::Biblio;
|
|
use Koha::Biblios;
|
|
|
|
use t::lib::TestBuilder;
|
|
|
|
my $schema = Koha::Database->new->schema;
|
|
$schema->storage->txn_begin;
|
|
|
|
my $builder = t::lib::TestBuilder->new;
|
|
|
|
use_ok('Koha::Subscription');
|
|
|
|
subtest 'Koha::Subscription->biblio' => sub {
|
|
plan tests => 1;
|
|
|
|
my $biblio = Koha::Biblio->new()->store();
|
|
my $subscription = Koha::Subscription->new({
|
|
biblionumber => $biblio->biblionumber,
|
|
})->store();
|
|
|
|
my $b = $subscription->biblio;
|
|
is($b->biblionumber, $biblio->biblionumber, 'Koha::Subscription->biblio returns the correct biblio');
|
|
};
|
|
|
|
subtest 'Notifications on new issues - add_subscriber|remove_subscriber|subscribers' => sub {
|
|
plan tests => 5;
|
|
my $subscriber_1 = $builder->build_object( { class => 'Koha::Patrons' });
|
|
my $subscriber_2 = $builder->build_object( { class => 'Koha::Patrons' });
|
|
|
|
my $subscription = Koha::Subscription->new({
|
|
biblionumber => Koha::Biblio->new->store->biblionumber,
|
|
})->store();
|
|
|
|
my $subscribers = $subscription->subscribers;
|
|
is( $subscribers->count, 0, '->subscribers should return 0 if there are no subscribers');
|
|
is( ref($subscribers), 'Koha::Patrons', '->subscribers should return a Koha::Patrons object');
|
|
|
|
$subscription->add_subscriber( $subscriber_1 );
|
|
$subscription->add_subscriber( $subscriber_2 );
|
|
|
|
$subscribers = $subscription->subscribers;
|
|
is( $subscribers->count, 2, '->subscribers should return 2 if there are 2 subscribers' );
|
|
|
|
$subscription->remove_subscriber( $subscriber_1 );
|
|
|
|
$subscribers = $subscription->subscribers;
|
|
is( $subscribers->count, 1, '->remove_subscriber should have remove the subscriber' );
|
|
|
|
$subscription->remove_subscriber( $subscriber_1 ); # We do not explode if the patron is not a subscriber
|
|
|
|
my $is_subscriber = $subscribers->find( $subscriber_2->borrowernumber );
|
|
ok( $is_subscriber, 'This structure is used in the code and should work as expected' );
|
|
|
|
};
|
|
|
|
subtest 'Koha::Subscription->vendor' => sub {
|
|
plan tests => 2;
|
|
my $vendor = $builder->build( { source => 'Aqbookseller' } );
|
|
my $subscription = $builder->build(
|
|
{
|
|
source => 'Subscription',
|
|
value => { aqbooksellerid => $vendor->{id} }
|
|
}
|
|
);
|
|
my $object = Koha::Subscriptions->find( $subscription->{subscriptionid} );
|
|
is( ref($object->vendor), 'Koha::Acquisition::Bookseller', 'Koha::Subscription->vendor should return a Koha::Acquisition::Bookseller' );
|
|
is( $object->vendor->id, $subscription->{aqbooksellerid}, 'Koha::Subscription->vendor should return the correct vendor' );
|
|
};
|
|
|
|
subtest 'Koha::Subscription->frequency' => sub {
|
|
plan tests => 2;
|
|
my $frequency = $builder->build_object( { class => 'Koha::Subscription::Frequencies' } );
|
|
my $subscription = $builder->build_object(
|
|
{
|
|
class => 'Koha::Subscriptions',
|
|
value => { periodicity => $frequency->id }
|
|
}
|
|
);
|
|
is( ref($subscription->frequency), 'Koha::Subscription::Frequency', 'Koha::Subscription->frequency should return a Koha::Subscription::Frequency' );
|
|
is( $subscription->frequency->id, $frequency->id, 'Koha::Subscription->frequency should return the correct frequency' );
|
|
};
|
|
|
|
my $nb_of_subs = Koha::Subscriptions->search->count;
|
|
my $biblio_1 = $builder->build_sample_biblio;
|
|
my $bi_1 = $biblio_1->biblioitem;
|
|
my $sub_freq_1 = $builder->build( { source => 'SubscriptionFrequency' } );
|
|
my $sub_np_1 = $builder->build( { source => 'SubscriptionNumberpattern' } );
|
|
my $sub_1 = $builder->build(
|
|
{
|
|
source => 'Subscription',
|
|
value => {
|
|
biblionumber => $biblio_1->biblionumber,
|
|
periodicity => $sub_freq_1->{id},
|
|
numberpattern => $sub_np_1->{id}
|
|
}
|
|
}
|
|
);
|
|
|
|
is(
|
|
Koha::Subscriptions->search->count,
|
|
$nb_of_subs + 1,
|
|
'The subscription should have been added'
|
|
);
|
|
is(
|
|
$sub_1->{biblionumber},
|
|
$biblio_1->biblionumber,
|
|
'The link between sub and biblio is well done'
|
|
);
|
|
is( $sub_1->{periodicity}, $sub_freq_1->{id},
|
|
'The link between sub and sub_freq is well done' );
|
|
is( $sub_1->{numberpattern},
|
|
$sub_np_1->{id},
|
|
'The link between sub and sub_numberpattern is well done' );
|
|
|
|
my $ref = {
|
|
'title' => $biblio_1->title,
|
|
'sfdescription' => $sub_freq_1->{description},
|
|
'unit' => $sub_freq_1->{unit},
|
|
'unitsperissue' => $sub_freq_1->{unitsperissue},
|
|
'issuesperunit' => $sub_freq_1->{issuesperunit},
|
|
'label' => $sub_np_1->{label},
|
|
'sndescription' => $sub_np_1->{description},
|
|
'numberingmethod' => $sub_np_1->{numberingmethod},
|
|
'label' => $sub_np_1->{label},
|
|
'label1' => $sub_np_1->{label1},
|
|
'add1' => $sub_np_1->{add1},
|
|
'every1' => $sub_np_1->{every1},
|
|
'whenmorethan1' => $sub_np_1->{whenmorethan1},
|
|
'setto1' => $sub_np_1->{setto1},
|
|
'numbering1' => $sub_np_1->{numbering1},
|
|
'label2' => $sub_np_1->{label2},
|
|
'add2' => $sub_np_1->{add2},
|
|
'every2' => $sub_np_1->{every2},
|
|
'whenmorethan2' => $sub_np_1->{whenmorethan2},
|
|
'setto2' => $sub_np_1->{setto2},
|
|
'numbering2' => $sub_np_1->{numbering2},
|
|
'label3' => $sub_np_1->{label3},
|
|
'add3' => $sub_np_1->{add3},
|
|
'every3' => $sub_np_1->{every3},
|
|
'whenmorethan3' => $sub_np_1->{whenmorethan3},
|
|
'setto3' => $sub_np_1->{setto3},
|
|
'numbering3' => $sub_np_1->{numbering3},
|
|
'issn' => $bi_1->issn,
|
|
'ean' => $bi_1->ean,
|
|
'publishercode' => $bi_1->publishercode,
|
|
};
|
|
|
|
is_deeply( Koha::Subscription->get_sharable_info( $sub_1->{subscriptionid} ),
|
|
$ref, "get_sharable_info function is ok" );
|
|
|
|
$schema->storage->txn_rollback;
|
|
|
|
1;
|
|
|