Bugzilla – Attachment 57218 Details for
Bug 17557
Move GetAge to Koha::Patron->get_age (and remove SetAge)
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 17557: Revised patron age calculation tests
Bug-17557-Revised-patron-age-calculation-tests.patch (text/plain), 6.77 KB, created by
Jonathan Druart
on 2016-11-04 17:04:15 UTC
(
hide
)
Description:
Bug 17557: Revised patron age calculation tests
Filename:
MIME Type:
Creator:
Jonathan Druart
Created:
2016-11-04 17:04:15 UTC
Size:
6.77 KB
patch
obsolete
>From cb1f994f7cbed975355769836ef66eaf1e502e9f Mon Sep 17 00:00:00 2001 >From: Jonathan Druart <jonathan.druart@bugs.koha-community.org> >Date: Fri, 4 Nov 2016 16:18:00 +0000 >Subject: [PATCH] Bug 17557: Revised patron age calculation tests > >The SetAge and GetAge test coverage are excessive. >First the SetAge subroutine was only created for testing purpose. >The goal of GetAge is quite simple and it seems quite easy to provide >corect test coverage using DateTime->add using negative numbers. >--- > t/db_dependent/Koha/Patrons.t | 23 +++++++++++- > t/db_dependent/Members.t | 82 +------------------------------------------ > 2 files changed, 23 insertions(+), 82 deletions(-) > >diff --git a/t/db_dependent/Koha/Patrons.t b/t/db_dependent/Koha/Patrons.t >index 6b85dcc..6954b25 100644 >--- a/t/db_dependent/Koha/Patrons.t >+++ b/t/db_dependent/Koha/Patrons.t >@@ -19,7 +19,7 @@ > > use Modern::Perl; > >-use Test::More tests => 11; >+use Test::More tests => 12; > use Test::Warn; > > use C4::Members; >@@ -337,6 +337,27 @@ subtest 'add_enrolment_fee_if_needed' => sub { > $patron->delete; > }; > >+subtest 'get_age' => sub { >+ plan tests => 6; >+ my $patron = $builder->build( { source => 'Borrower' } ); >+ $patron = Koha::Patrons->find( $patron->{borrowernumber} ); >+ my $today = dt_from_string; >+ $patron->dateofbirth( $today->clone->add( years => -12, months => -6, days => -1 ) ); >+ is( $patron->get_age, 12, 'Patron should be 12' ); >+ $patron->dateofbirth( $today->clone->add( years => -18, months => 0, days => 1 ) ); >+ is( $patron->get_age, 17, 'Patron should be 17, happy birthday tomorrow!' ); >+ $patron->dateofbirth( $today->clone->add( years => -18, months => 0, days => 0 ) ); >+ is( $patron->get_age, 18, 'Patron should be 18' ); >+ $patron->dateofbirth( $today->clone->add( years => -18, months => -12, days => -31 ) ); >+ is( $patron->get_age, 19, 'Patron should be 19' ); >+ $patron->dateofbirth( $today->clone->add( years => -18, months => -12, days => -30 ) ); >+ is( $patron->get_age, 19, 'Patron should be 19 again' ); >+ $patron->dateofbirth( $today->clone->add( years => 0, months => -1, days => -1 ) ); >+ is( $patron->get_age, 0, 'Patron is a newborn child' ); >+ >+ $patron->delete; >+}; >+ > $retrieved_patron_1->delete; > is( Koha::Patrons->search->count, $nb_of_patrons + 1, 'Delete should have deleted the patron' ); > >diff --git a/t/db_dependent/Members.t b/t/db_dependent/Members.t >index 963d790..2296805 100755 >--- a/t/db_dependent/Members.t >+++ b/t/db_dependent/Members.t >@@ -17,7 +17,7 @@ > > use Modern::Perl; > >-use Test::More tests => 79; >+use Test::More tests => 66; > use Test::MockModule; > use Data::Dumper; > use C4::Context; >@@ -90,8 +90,6 @@ my %data = ( > userid => 'tomasito' > ); > >-testAgeAccessors(\%data); #Age accessor tests don't touch the db so it is safe to run them with just the object. >- > my $addmem=AddMember(%data); > ok($addmem, "AddMember()"); > >@@ -497,84 +495,6 @@ $borrower = GetMember(borrowernumber => $borrowernumber); > my $hashed_up = Koha::AuthUtils::hash_password("Nexus-6", $borrower->{password}); > is( $borrower->{password} eq $hashed_up, 1, 'Check password hash equals hash of submitted password' ); > >- >- >-### ------------------------------------- ### >-### Testing GetAge() / SetAge() functions ### >-### ------------------------------------- ### >-#USES the package $member-variable to mock a koha.borrowers-object >-sub testAgeAccessors { >- my ($member) = @_; >- my $original_dateofbirth = $member->{dateofbirth}; >- >- ##Testing GetAge() >- my $age=GetAge("1992-08-14", "2011-01-19"); >- is ($age, "18", "Age correct"); >- >- $age=GetAge("2011-01-19", "1992-01-19"); >- is ($age, "-19", "Birthday In the Future"); >- >- ##Testing SetAge() for now() >- my $dt_now = DateTime->now(); >- $age = DateTime::Duration->new(years => 12, months => 6, days => 1); >- C4::Members::SetAge( $member, $age ); >- $age = C4::Members::GetAge( $member->{dateofbirth} ); >- is ($age, '12', "SetAge 12 years"); >- >- $age = DateTime::Duration->new(years => 18, months => 12, days => 31); >- C4::Members::SetAge( $member, $age ); >- $age = C4::Members::GetAge( $member->{dateofbirth} ); >- is ($age, '19', "SetAge 18+1 years"); #This is a special case, where months=>12 and days=>31 constitute one full year, hence we get age 19 instead of 18. >- >- $age = DateTime::Duration->new(years => 18, months => 12, days => 30); >- C4::Members::SetAge( $member, $age ); >- $age = C4::Members::GetAge( $member->{dateofbirth} ); >- is ($age, '19', "SetAge 18 years"); >- >- $age = DateTime::Duration->new(years => 0, months => 1, days => 1); >- C4::Members::SetAge( $member, $age ); >- $age = C4::Members::GetAge( $member->{dateofbirth} ); >- is ($age, '0', "SetAge 0 years"); >- >- $age = '0018-12-31'; >- C4::Members::SetAge( $member, $age ); >- $age = C4::Members::GetAge( $member->{dateofbirth} ); >- is ($age, '19', "SetAge ISO_Date 18+1 years"); #This is a special case, where months=>12 and days=>31 constitute one full year, hence we get age 19 instead of 18. >- >- $age = '0018-12-30'; >- C4::Members::SetAge( $member, $age ); >- $age = C4::Members::GetAge( $member->{dateofbirth} ); >- is ($age, '19', "SetAge ISO_Date 18 years"); >- >- $age = '18-1-1'; >- eval { C4::Members::SetAge( $member, $age ); }; >- is ((length $@ > 1), '1', "SetAge ISO_Date $age years FAILS"); >- >- $age = '0018-01-01'; >- eval { C4::Members::SetAge( $member, $age ); }; >- is ((length $@ == 0), '1', "SetAge ISO_Date $age years succeeds"); >- >- ##Testing SetAge() for relative_date >- my $relative_date = DateTime->new(year => 3010, month => 3, day => 15); >- >- $age = DateTime::Duration->new(years => 10, months => 3); >- C4::Members::SetAge( $member, $age, $relative_date ); >- $age = C4::Members::GetAge( $member->{dateofbirth}, $relative_date->ymd() ); >- is ($age, '10', "SetAge, 10 years and 3 months old person was born on ".$member->{dateofbirth}." if todays is ".$relative_date->ymd()); >- >- $age = DateTime::Duration->new(years => 112, months => 1, days => 1); >- C4::Members::SetAge( $member, $age, $relative_date ); >- $age = C4::Members::GetAge( $member->{dateofbirth}, $relative_date->ymd() ); >- is ($age, '112', "SetAge, 112 years, 1 months and 1 days old person was born on ".$member->{dateofbirth}." if today is ".$relative_date->ymd()); >- >- $age = '0112-01-01'; >- C4::Members::SetAge( $member, $age, $relative_date ); >- $age = C4::Members::GetAge( $member->{dateofbirth}, $relative_date->ymd() ); >- is ($age, '112', "SetAge ISO_Date, 112 years, 1 months and 1 days old person was born on ".$member->{dateofbirth}." if today is ".$relative_date->ymd()); >- >- $member->{dateofbirth} = $original_dateofbirth; #It is polite to revert made changes in the unit tests. >-} #sub testAgeAccessors >- > # regression test for bug 16009 > my $patron; > eval { >-- >2.1.4
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
|
Splinter Review
Attachments on
bug 17557
:
57218
|
57219
|
57220
|
57221
|
57862
|
57863
|
58104
|
58105