Bugzilla – Attachment 84410 Details for
Bug 21478
Koha::Hold->suspend_hold allows suspending in transit holds
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 21478: Unit tests
Bug-21478-Unit-tests.patch (text/plain), 5.03 KB, created by
Tomás Cohen Arazi (tcohen)
on 2019-01-25 16:53:03 UTC
(
hide
)
Description:
Bug 21478: Unit tests
Filename:
MIME Type:
Creator:
Tomás Cohen Arazi (tcohen)
Created:
2019-01-25 16:53:03 UTC
Size:
5.03 KB
patch
obsolete
>From 90581bcacdda602acbf6a05c36c57cd0a0450d0d Mon Sep 17 00:00:00 2001 >From: Tomas Cohen Arazi <tomascohen@theke.io> >Date: Fri, 25 Jan 2019 13:48:54 -0300 >Subject: [PATCH] Bug 21478: Unit tests > >--- > t/db_dependent/Hold.t | 106 ++++++++++++++++++++++++++++++++++++++---- > 1 file changed, 97 insertions(+), 9 deletions(-) > >diff --git a/t/db_dependent/Hold.t b/t/db_dependent/Hold.t >index 4258ba392e..6a79ab65ac 100755 >--- a/t/db_dependent/Hold.t >+++ b/t/db_dependent/Hold.t >@@ -29,7 +29,8 @@ use Koha::Item; > use Koha::DateUtils; > use t::lib::TestBuilder; > >-use Test::More tests => 33; >+use Test::More tests => 29; >+use Test::Exception; > use Test::Warn; > > use_ok('Koha::Hold'); >@@ -98,10 +99,6 @@ is( $hold->suspend_until, undef, "Hold is suspended without a date" ); > $hold->resume(); > is( $hold->suspend, 0, "Hold is not suspended" ); > is( $hold->suspend_until, undef, "Hold no longer has suspend_until date" ); >-$hold->found('W'); >-warning_like { $hold->suspend_hold } >- qr/Unable to suspend waiting hold!/, 'Catch warn about failed suspend'; >-is( $hold->suspend, 0, "Waiting hold cannot be suspended" ); > > $item = $hold->item(); > >@@ -109,10 +106,6 @@ my $hold_borrower = $hold->borrower(); > ok( $hold_borrower, 'Got hold borrower' ); > is( $hold_borrower->borrowernumber(), $borrower->{borrowernumber}, 'Hold borrower matches correct borrower' ); > >-is( $hold->is_waiting, 1, 'The hold is waiting' ); >-is( $hold->is_found, 1, 'The hold is found'); >-ok( !$hold->is_in_transit, 'The hold is not in transit' ); >- > t::lib::Mocks::mock_preference( 'ReservesMaxPickUpDelay', '5' ); > $hold->found('T'); > isnt( $hold->is_waiting, 1, 'The hold is not waiting (T)' ); >@@ -183,3 +176,98 @@ subtest "delete() tests" => sub { > $schema->storage->txn_rollback(); > }; > >+subtest 'suspend() tests' => sub { >+ >+ plan tests => 16; >+ >+ $schema->storage->txn_begin; >+ >+ # Disable logging >+ t::lib::Mocks::mock_preference( 'HoldsLog', 0 ); >+ >+ my $hold = $builder->build_object( >+ { class => 'Koha::Holds', >+ value => { suspend => 0, suspend_until => undef, waitingdate => undef } >+ } >+ ); >+ >+ ok( !$hold->is_suspended, 'Hold is not suspended' ); >+ my $suspended = $hold->suspend_hold; >+ is( ref($suspended) , 'Koha::Hold', 'suspend returns the Koha::Hold object' ); >+ is( $suspended->id, $hold->id, 'suspend returns the same object' ); >+ ok( $suspended->is_suspended, 'The hold is suspended' ); >+ is( $suspended->suspend_until, undef, 'It is an indefinite suspension' ); >+ >+ # resume the hold >+ $suspended->resume; >+ $hold->discard_changes; >+ >+ # create a DT >+ my $date = dt_from_string()->add( days => 1 ); >+ $suspended = $hold->suspend_hold( $date ); >+ is( ref($suspended) , 'Koha::Hold', 'suspend returns the Koha::Hold object' ); >+ is( $suspended->id, $hold->id, 'suspend returns the same object' ); >+ ok( $suspended->is_suspended, 'The hold is suspended' ); >+ is( $suspended->suspend_until, $date->truncate( to => 'day' ), 'It is an indefinite suspension' ); >+ >+ # resume the hold >+ $suspended->resume; >+ $hold->discard_changes; >+ >+ # set hold found=W >+ $hold->set_waiting; >+ throws_ok >+ { $hold->suspend_hold; } >+ 'Koha::Exceptions::Hold::CannotSuspendFound', >+ 'Exception is thrown when a found hold is tried to suspend'; >+ >+ is( $@->status, 'W', 'Exception gets the \'status\' parameter set correctly' ); >+ >+ # set hold found=T >+ $hold->set_waiting(1); >+ throws_ok >+ { $hold->suspend_hold; } >+ 'Koha::Exceptions::Hold::CannotSuspendFound', >+ 'Exception is thrown when a found hold is tried to suspend'; >+ >+ is( $@->status, 'T', 'Exception gets the \'status\' parameter set correctly' ); >+ >+ my $holds_module = Test::MockModule->new('Koha::Hold'); >+ $holds_module->mock( 'is_found', 1 ); >+ >+ # bad data case >+ $hold->found('X'); >+ throws_ok >+ { $hold->suspend_hold } >+ 'Koha::Exceptions::Hold::CannotSuspendFound', >+ 'Exception is thrown when a found hold is tried to suspend'; >+ >+ is( $@->error, 'Unhandled data exception on found hold (id=' >+ . $hold->id >+ . ', found=' >+ . $hold->found >+ . ')' , 'Exception gets the \'status\' parameter set correctly' ); >+ >+ $holds_module->unmock( 'is_found' ); >+ >+ # Enable logging >+ t::lib::Mocks::mock_preference( 'HoldsLog', 1 ); >+ >+ my $logs_count = $schema->resultset('ActionLog')->search( >+ { module => 'HOLDS', action => 'SUSPEND', object => $hold->id } )->count; >+ >+ $hold = $builder->build_object( >+ { class => 'Koha::Holds', >+ value => { suspend => 0, suspend_until => undef, waitingdate => undef, found => undef } >+ } >+ ); >+ >+ $hold->suspend_hold; >+ my $new_logs_count = $schema->resultset('ActionLog')->search( >+ { module => 'HOLDS', action => 'SUSPEND', object => $hold->id } )->count; >+ >+ is( $new_logs_count, $logs_count + 1, 'If logging is enabled, suspending a hold gets logged' ); >+ >+ $schema->storage->txn_rollback; >+}; >+ >-- >2.20.1
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
|
Splinter Review
Attachments on
bug 21478
:
84409
|
84410
|
84411
|
84432
|
84433
|
84434
|
84456
|
84457
|
84458
|
84487