diff --git a/Koha/Patron.pm b/Koha/Patron.pm index 9436bf25e3..612b1c5ad6 100644 --- a/Koha/Patron.pm +++ b/Koha/Patron.pm @@ -30,7 +30,8 @@ use Koha::Holds; use Koha::Issues; use Koha::OldIssues; use Koha::Patron::Categories; -use Koha::Patron::HouseboundProfiles; +use Koha::Patron::HouseboundProfile; +use Koha::Patron::HouseboundRole; use Koha::Patron::Images; use Koha::Patrons; use Koha::Virtualshelves; @@ -132,8 +133,24 @@ Returns the HouseboundProfile associated with this patron. sub housebound_profile { my ( $self ) = @_; + my $profile = $self->_result->housebound_profile; + return Koha::Patron::HouseboundProfile->_new_from_dbic($profile) + if ( $profile ); + return 0; +} - return Koha::Patron::HouseboundProfiles->find($self->borrowernumber); +=head3 housebound_role + +Returns the HouseboundRole associated with this patron. + +=cut + +sub housebound_role { + my ( $self ) = @_; + + my $role = $self->_result->housebound_role; + return Koha::Patron::HouseboundRole->_new_from_dbic($role) if ( $role ); + return 0; } =head3 siblings diff --git a/Koha/Patrons.pm b/Koha/Patrons.pm index 13fd091b5e..1af2c06a3f 100644 --- a/Koha/Patrons.pm +++ b/Koha/Patrons.pm @@ -45,10 +45,9 @@ Returns all Patrons which are Housebound choosers. sub search_housebound_choosers { my ( $self ) = @_; - my $cho = $self->_resultset->search - ->search_related('borrower_attributes', { - code => 'HSBND', - attribute => 'CHO', + my $cho = $self->_resultset + ->search_related('housebound_role', { + housebound_chooser => 1, })->search_related('borrowernumber'); return Koha::Patrons->_new_from_dbic($cho); } @@ -61,10 +60,9 @@ Returns all Patrons which are Housebound deliverers. sub search_housebound_deliverers { my ( $self ) = @_; - my $del = $self->_resultset->search - ->search_related('borrower_attributes', { - code => 'HSBND', - attribute => 'DEL', + my $del = $self->_resultset + ->search_related('housebound_role', { + housebound_deliverer => 1, })->search_related('borrowernumber'); return Koha::Patrons->_new_from_dbic($del); } diff --git a/t/db_dependent/Patron/Housebound.t b/t/db_dependent/Patron/Housebound.t index a9728f1c7f..095096457b 100755 --- a/t/db_dependent/Patron/Housebound.t +++ b/t/db_dependent/Patron/Housebound.t @@ -6,7 +6,7 @@ use C4::Circulation; use Koha::Database; use Koha::Patrons; -use Test::More tests => 6; +use Test::More tests => 2; use_ok('Koha::Patron'); @@ -34,42 +34,6 @@ is( "Fetch housebound_profile." ); -# patron_choosers and patron_deliverers Tests - -# Current Patron Chooser / Deliverer count -my $orig_del_count = Koha::Patrons->search_housebound_deliverers->count; -my $orig_cho_count = Koha::Patrons->search_housebound_choosers->count; - -# We add one, just in case the above is 0, so we're guaranteed one of each. -my $patron_chooser = $builder->build({ source => 'Borrower' }); -$builder->build({ - source => 'BorrowerAttribute', - value => { - borrowernumber => $patron_chooser->{borrowernumber}, - code => 'HSBND', - attribute => 'CHO', - password => undef, - }, -}); - -my $patron_deliverer = $builder->build({ source => 'Borrower' }); -$builder->build({ - source => 'BorrowerAttribute', - value => { - borrowernumber => $patron_deliverer->{borrowernumber}, - code => 'HSBND', - attribute => 'DEL', - password => undef, - }, -}); - -# Test search_housebound_choosers -is(Koha::Patrons->search_housebound_choosers->count, $orig_cho_count + 1, "Correct count of choosers."); -is(Koha::Patrons->search_housebound_deliverers->count, $orig_del_count + 1, "Correct count of deliverers"); - -isa_ok(Koha::Patrons->search_housebound_choosers->next, "Koha::Patron"); -isa_ok(Koha::Patrons->search_housebound_deliverers->next, "Koha::Patron"); - $schema->storage->txn_rollback; 1; diff --git a/t/db_dependent/Patron/HouseboundRoles.t b/t/db_dependent/Patron/HouseboundRoles.t new file mode 100644 index 0000000000..c8898b93b0 --- /dev/null +++ b/t/db_dependent/Patron/HouseboundRoles.t @@ -0,0 +1,88 @@ +#!/usr/bin/perl + +# 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 . + +use Modern::Perl; + +use Test::More tests => 6; + +use Koha::Database; +use Koha::Patron::HouseboundRoles; +use Koha::Patrons; + +use t::lib::TestBuilder; + +my $schema = Koha::Database->new->schema; +$schema->storage->txn_begin; + +my $builder = t::lib::TestBuilder->new; + +# Profile Tests + +my $role = $builder->build({ source => 'HouseboundRole' }); + +is( + Koha::Patron::HouseboundRoles + ->find($role->{borrowernumber_id})->borrowernumber_id, + $role->{borrowernumber_id}, + "Find created role." +); + +my @roles = Koha::Patron::HouseboundRoles + ->search({ borrowernumber_id => $role->{borrowernumber_id} }); +my $found_role = shift @roles; +is( + $found_role->borrowernumber_id, + $role->{borrowernumber_id}, + "Search for created role." +); + +# patron_choosers and patron_deliverers Tests + +# Current Patron Chooser / Deliverer count +my $orig_del_count = Koha::Patrons->search_housebound_deliverers->count; +my $orig_cho_count = Koha::Patrons->search_housebound_choosers->count; + +# We add one, just in case the above is 0, so we're guaranteed one of each. +my $patron_chooser = $builder->build({ source => 'Borrower' }); +$builder->build({ + source => 'HouseboundRole', + value => { + borrowernumber_id => $patron_chooser->{borrowernumber}, + housebound_chooser => 1, + }, +}); + +my $patron_deliverer = $builder->build({ source => 'Borrower' }); +$builder->build({ + source => 'HouseboundRole', + value => { + borrowernumber_id => $patron_deliverer->{borrowernumber}, + housebound_deliverer => 1, + }, +}); + +# Test search_housebound_choosers +is(Koha::Patrons->search_housebound_choosers->count, $orig_cho_count + 1, "Correct count of choosers."); +is(Koha::Patrons->search_housebound_deliverers->count, $orig_del_count + 1, "Correct count of deliverers"); + +isa_ok(Koha::Patrons->search_housebound_choosers->next, "Koha::Patron"); +isa_ok(Koha::Patrons->search_housebound_deliverers->next, "Koha::Patron"); + + +$schema->storage->txn_rollback; + +1;