Bug 17168: (QA follow-up) Only remove guarantor relationship if not Child AND not...
authorNick Clemens <nick@bywatersolutions.com>
Fri, 25 Oct 2019 18:22:01 +0000 (18:22 +0000)
committerMartin Renvoize <martin.renvoize@ptfs-europe.com>
Sat, 26 Oct 2019 06:37:42 +0000 (07:37 +0100)
Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Koha/Patron.pm
t/db_dependent/Patrons.t

index e3a79bb..6f88023 100644 (file)
@@ -264,7 +264,7 @@ sub store {
                     # Clean up guarantors on category change if required
                     $self->guarantor_relationships->delete
                       if ( $self->category->category_type ne 'C'
-                        || $self->category->category_type ne 'P' );
+                        && $self->category->category_type ne 'P' );
 
                 }
 
index 25739c9..b11a9d3 100755 (executable)
@@ -106,13 +106,18 @@ foreach my $b ( $patrons->as_list() ) {
 }
 
 subtest "Update patron categories" => sub {
-    plan tests => 17;
+    plan tests => 19;
     t::lib::Mocks::mock_preference( 'borrowerRelationship', 'test' );
     my $c_categorycode = $builder->build({ source => 'Category', value => {
             category_type=>'C',
             upperagelimit=>17,
             dateofbirthrequired=>5,
         } })->{categorycode};
+    my $c_categorycode_2 = $builder->build({ source => 'Category', value => {
+            category_type=>'C',
+            upperagelimit=>17,
+            dateofbirthrequired=>5,
+        } })->{categorycode};
     my $a_categorycode = $builder->build({ source => 'Category', value => {category_type=>'A'} })->{categorycode};
     my $p_categorycode = $builder->build({ source => 'Category', value => {category_type=>'P'} })->{categorycode};
     my $i_categorycode = $builder->build({ source => 'Category', value => {category_type=>'I'} })->{categorycode};
@@ -179,7 +184,9 @@ subtest "Update patron categories" => sub {
     is( Koha::Patrons->search_patrons_to_update_category({from=>$a_categorycode,fine_max=>5})->next->borrowernumber,$adult1->borrowernumber,'One patron with fines under $5 is expected one');
 
     is( Koha::Patrons->find($adult1->borrowernumber)->guarantee_relationships->guarantees->count,3,'Guarantor has 3 guarantees');
-    is( Koha::Patrons->search_patrons_to_update_category({from=>$c_categorycode,too_young=>1})->update_category_to({category=>$a_categorycode}),1,'One child patron updated to adult category');
+    is( Koha::Patrons->search_patrons_to_update_category({from=>$c_categorycode})->update_category_to({category=>$c_categorycode_2}),3,'Three child patrons updated to another child category with no params passed');
+    is( Koha::Patrons->find($adult1->borrowernumber)->guarantee_relationships->guarantees->count,3,'Guarantees not removed when made changing child categories');
+    is( Koha::Patrons->search_patrons_to_update_category({from=>$c_categorycode_2,too_young=>1})->update_category_to({category=>$a_categorycode}),1,'One child patron updated to adult category');
     is( Koha::Patrons->find($adult1->borrowernumber)->guarantee_relationships->guarantees->count,2,'Guarantee was removed when made adult');
 
     is( Koha::Patrons->find($inst->borrowernumber)->guarantee_relationships->guarantees->count,1,'Guarantor has 1 guarantees');