Bug 5670: [QA Followup] Correct housebound role search.
authorAlex Sassmannshausen <alex.sassmannshausen@ptfs-europe.com>
Mon, 10 Oct 2016 13:38:04 +0000 (15:38 +0200)
committerKyle M Hall <kyle@bywatersolutions.com>
Fri, 21 Oct 2016 18:18:06 +0000 (18:18 +0000)
* Koha/Patrons.pm (search_housebound_choosers)
  (search_housebound_deliverers): Use new table.

Signed-off-by: Claire Gravely <claire_gravely@hotmail.com>
Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Koha/Patron.pm
Koha/Patrons.pm
t/db_dependent/Patron/Housebound.t
t/db_dependent/Patron/HouseboundRoles.t [new file with mode: 0644]

index 9436bf2..612b1c5 100644 (file)
@@ -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;
+}
+
+=head3 housebound_role
+
+Returns the HouseboundRole associated with this patron.
+
+=cut
+
+sub housebound_role {
+    my ( $self ) = @_;
 
-    return Koha::Patron::HouseboundProfiles->find($self->borrowernumber);
+    my $role = $self->_result->housebound_role;
+    return Koha::Patron::HouseboundRole->_new_from_dbic($role) if ( $role );
+    return 0;
 }
 
 =head3 siblings
index 13fd091..1af2c06 100644 (file)
@@ -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);
 }
index a9728f1..0950964 100755 (executable)
@@ -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 (file)
index 0000000..c8898b9
--- /dev/null
@@ -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 <http://www.gnu.org/licenses>.
+
+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;