From 8876df984468e554bf45e5f614f02c6fb2ff55e6 Mon Sep 17 00:00:00 2001 From: Jonathan Druart Date: Thu, 1 Jun 2017 13:51:09 -0300 Subject: [PATCH] Bug 18789: add tests for is_adult and is_child This patch add 2 methods to the Koha::Patron module: is_adult and is_child. That way the business logic is at only one place and covered by tests. Signed-off-by: Kyle M Hall --- Koha/Patron.pm | 10 +++++++ t/db_dependent/Koha/Patrons.t | 67 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 77 insertions(+) diff --git a/Koha/Patron.pm b/Koha/Patron.pm index 0d7cca4..0ae6128 100644 --- a/Koha/Patron.pm +++ b/Koha/Patron.pm @@ -801,6 +801,16 @@ sub can { return C4::Auth::haspermission( $self->userid, $flagsrequired ); } +sub is_adult { + my ( $self ) = @_; + return $self->category->category_type =~ /^(A|I)$/ ? 1 : 0; +} + +sub is_child { + my( $self ) = @_; + return $self->category->category_type eq 'C' ? 1 : 0; +} + =head3 type =cut diff --git a/t/db_dependent/Koha/Patrons.t b/t/db_dependent/Koha/Patrons.t index bd3d586..7f55b6f 100644 --- a/t/db_dependent/Koha/Patrons.t +++ b/t/db_dependent/Koha/Patrons.t @@ -1055,6 +1055,73 @@ subtest 'account_locked' => sub { $patron->delete; }; +subtest 'is_child | is_adult' => sub { + plan tests => 8; + my $category = $builder->build_object( + { + class => 'Koha::Patron::Categories', + value => { category_type => 'A' } + } + ); + my $patron_adult = $builder->build_object( + { + class => 'Koha::Patrons', + value => { categorycode => $category->categorycode } + } + ); + $category = $builder->build_object( + { + class => 'Koha::Patron::Categories', + value => { category_type => 'I' } + } + ); + my $patron_adult_i = $builder->build_object( + { + class => 'Koha::Patrons', + value => { categorycode => $category->categorycode } + } + ); + $category = $builder->build_object( + { + class => 'Koha::Patron::Categories', + value => { category_type => 'C' } + } + ); + my $patron_child = $builder->build_object( + { + class => 'Koha::Patrons', + value => { categorycode => $category->categorycode } + } + ); + $category = $builder->build_object( + { + class => 'Koha::Patron::Categories', + value => { category_type => 'O' } + } + ); + my $patron_other = $builder->build_object( + { + class => 'Koha::Patrons', + value => { categorycode => $category->categorycode } + } + ); + is( $patron_adult->is_adult, 1, 'Patron from category A should be considered adult' ); + is( $patron_adult_i->is_adult, 1, 'Patron from category I should be considered adult' ); + is( $patron_child->is_adult, 0, 'Patron from category C should not be considered adult' ); + is( $patron_other->is_adult, 0, 'Patron from category O should not be considered adult' ); + + is( $patron_adult->is_child, 0, 'Patron from category A should be considered child' ); + is( $patron_adult_i->is_child, 0, 'Patron from category I should be considered child' ); + is( $patron_child->is_child, 1, 'Patron from category C should not be considered child' ); + is( $patron_other->is_child, 0, 'Patron from category O should not be considered child' ); + + # Clean up + $patron_adult->delete; + $patron_adult_i->delete; + $patron_child->delete; + $patron_other->delete; +}; + $retrieved_patron_1->delete; is( Koha::Patrons->search->count, $nb_of_patrons + 1, 'Delete should have deleted the patron' ); -- 2.10.2