ae7d5fd11b
This patch moves the logic of deciding whether or not a borrower is old enough to access this material to its own function GetAgeRestriction. This makes it easier to use AgeRestriction elsewhere, like with placing holds. This feature adds a new function C4::Members::SetAge() to make testing ages a lot easier. A ton of Unit tests included. C4::Circulate::CanBookBeIssued() fixed and issue with undefined $daysToAgeRestriction per Marc Véron's suggestion. Test plan: (See comment #10 for screenshots about using age restriction) 1) Without patch Configure Age Restricition (see Syspref AgeRestrictionMarker) and have a biblio record with e.g. PEGI 99 in age restriction field Try to check out to a patron with age < 99 Check out should be blocked Change entry in age restriction field to PEGI99 Check out schould now be blocked 2) With patch Try checkouts again, behaviour should be th same. Signed-off-by: Marc Veron <veron@veron.ch> Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com> Signed-off-by: Tomas Cohen Arazi <tomascohen@gmail.com>
34 lines
No EOL
1.6 KiB
Perl
34 lines
No EOL
1.6 KiB
Perl
#!/usr/bin/perl
|
|
|
|
use Modern::Perl;
|
|
use DateTime;
|
|
use Test::More tests => 10;
|
|
|
|
use t::lib::Mocks;
|
|
|
|
use C4::Circulation;
|
|
|
|
t::lib::Mocks::mock_preference( 'AgeRestrictionMarker', 'FSK|PEGI|Age|K' );
|
|
|
|
is ( C4::Circulation::GetAgeRestriction('FSK 16'), '16', 'FSK 16 returns 16' );
|
|
is ( C4::Circulation::GetAgeRestriction('PEGI 16'), '16', 'PEGI 16 returns 16' );
|
|
is ( C4::Circulation::GetAgeRestriction('PEGI16'), '16', 'PEGI16 returns 16' );
|
|
is ( C4::Circulation::GetAgeRestriction('Age 16'), '16', 'Age 16 returns 16' );
|
|
is ( C4::Circulation::GetAgeRestriction('K16'), '16', 'K16 returns 16' );
|
|
|
|
|
|
##Testing age restriction for a borrower.
|
|
my $now = DateTime->now();
|
|
my $borrower = {};
|
|
C4::Members::SetAge( $borrower, '0015-00-00' );
|
|
|
|
my ($restriction_age, $daysToAgeRestriction) = C4::Circulation::GetAgeRestriction('FSK 16', $borrower);
|
|
is ( ($daysToAgeRestriction > 0), 1, 'FSK 16 blocked for a 15 year old' );
|
|
($restriction_age, $daysToAgeRestriction) = C4::Circulation::GetAgeRestriction('PEGI 15', $borrower);
|
|
is ( ($daysToAgeRestriction <= 0), 1, 'PEGI 15 allowed for a 15 year old' );
|
|
($restriction_age, $daysToAgeRestriction) = C4::Circulation::GetAgeRestriction('PEGI14', $borrower);
|
|
is ( ($daysToAgeRestriction <= 0), 1, 'PEGI14 allowed for a 15 year old' );
|
|
($restriction_age, $daysToAgeRestriction) = C4::Circulation::GetAgeRestriction('Age 10', $borrower);
|
|
is ( ($daysToAgeRestriction <= 0), 1, 'Age 10 allowed for a 15 year old' );
|
|
($restriction_age, $daysToAgeRestriction) = C4::Circulation::GetAgeRestriction('K18', $borrower);
|
|
is ( ($daysToAgeRestriction > 0), 1, 'K18 blocked for a 15 year old' ); |