From 777e452e1b0310691a2407c43a2315d073112f05 Mon Sep 17 00:00:00 2001 From: Martin Renvoize Date: Tue, 21 Mar 2023 15:01:08 +0000 Subject: [PATCH] Bug 33284: Unit test Content-Type: text/plain; charset=utf-8 This patch adds unit tests to ensure renewals properly respect the patron privacy settings. Signed-off-by: Andrew Fuerste-Henry Signed-off-by: Marcel de Rooy --- t/db_dependent/Koha/Old/Checkout.t | 37 ++++++++++++++++++++++------- t/db_dependent/Koha/Old/Checkouts.t | 28 +++++++++++++++++++++- 2 files changed, 56 insertions(+), 9 deletions(-) diff --git a/t/db_dependent/Koha/Old/Checkout.t b/t/db_dependent/Koha/Old/Checkout.t index 840afe052f..1ccaebac31 100755 --- a/t/db_dependent/Koha/Old/Checkout.t +++ b/t/db_dependent/Koha/Old/Checkout.t @@ -30,7 +30,7 @@ my $builder = t::lib::TestBuilder->new; subtest 'anonymize() tests' => sub { - plan tests => 8; + plan tests => 9; $schema->storage->txn_begin; @@ -50,6 +50,25 @@ subtest 'anonymize() tests' => sub { value => { borrowernumber => $patron->id } } ); + my $renewal_1 = $builder->build_object( + { + class => 'Koha::Checkouts::Renewals', + value => { + checkout_id => $checkout_2->id, + interface => 'opac', + renewer_id => $patron->id + } + } + ); + my $renewal_2 = $builder->build_object( + { + class => 'Koha::Checkouts::Renewals', + value => { + checkout_id => $checkout_2->id, + interface => 'intranet' + } + } + ); is( $patron->old_checkouts->count, 2, 'Patron has 2 completed checkouts' ); @@ -62,24 +81,26 @@ subtest 'anonymize() tests' => sub { is( $@->syspref, 'AnonymousPatron', 'syspref parameter is correctly passed' ); is( $patron->old_checkouts->count, 2, 'No changes, patron has 2 linked completed checkouts' ); - is( - $checkout_1->borrowernumber, $patron->id, - 'Anonymized hold not linked to patron' - ); is( $checkout_2->borrowernumber, $patron->id, - 'Not anonymized hold still linked to patron' + 'Checkout to anonymize still linked to patron' ); + is( $checkout_2->renewals->count, 2, 'Checkout 2 has 2 renewals' ); my $anonymous_patron = $builder->build_object( { class => 'Koha::Patrons' } ); t::lib::Mocks::mock_preference( 'AnonymousPatron', $anonymous_patron->id ); - # anonymize second hold + # anonymize second checkout $checkout_2->anonymize; $checkout_2->discard_changes; is( $checkout_2->borrowernumber, $anonymous_patron->id, - 'Anonymized hold linked to anonymouspatron' + 'Anonymized checkout linked to anonymouspatron' + ); + is( + $checkout_2->renewals->search( { renewer_id => $anonymous_patron->id } )->count, + 1, + 'OPAC renewal was anonymized' ); $schema->storage->txn_rollback; diff --git a/t/db_dependent/Koha/Old/Checkouts.t b/t/db_dependent/Koha/Old/Checkouts.t index 73c3368835..d4bdaac598 100755 --- a/t/db_dependent/Koha/Old/Checkouts.t +++ b/t/db_dependent/Koha/Old/Checkouts.t @@ -32,7 +32,7 @@ my $builder = t::lib::TestBuilder->new; subtest 'anonymize() tests' => sub { - plan tests => 10; + plan tests => 13; $schema->storage->txn_begin; @@ -89,8 +89,28 @@ subtest 'anonymize() tests' => sub { } } ); + my $renewal_1 = $builder->build_object( + { + class => 'Koha::Checkouts::Renewals', + value => { + checkout_id => $checkout_4->id, + interface => 'opac', + renewer_id => $patron->id + } + } + ); + my $renewal_2 = $builder->build_object( + { + class => 'Koha::Checkouts::Renewals', + value => { + checkout_id => $checkout_4->id, + interface => 'intranet' + } + } + ); is( $patron->old_checkouts->count, 4, 'Patron has 4 completed checkouts' ); + is( $checkout_4->renewals->count, 2, 'Checkout 4 has 2 renewals' ); # filter them so only the older two are part of the resultset my $checkouts = $patron->old_checkouts->filter_by_last_update( { min_days => 1 } ); @@ -110,6 +130,12 @@ subtest 'anonymize() tests' => sub { is( $anonymized_count, 2, 'update() tells 2 rows were updated' ); is( $patron->old_checkouts->count, 2, 'Patron has 2 completed checkouts' ); + is( $checkout_4->renewals->count, 2, 'Checkout 4 still has 2 renewals' ); + is( + $checkout_4->renewals->search( { renewer_id => $anonymous_patron->id } )->count, + 1, + 'OPAC renewal was anonymized' + ); $schema->storage->txn_rollback; }; -- 2.39.5