Bugzilla – Attachment 94853 Details for
Bug 14697
Extend and enhance "Claims returned" lost status
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 14697: (QA follow-up) Organize tests in subtests
Bug-14697-QA-follow-up-Organize-tests-in-subtests.patch (text/plain), 13.42 KB, created by
Kyle M Hall (khall)
on 2019-10-29 19:21:14 UTC
(
hide
)
Description:
Bug 14697: (QA follow-up) Organize tests in subtests
Filename:
MIME Type:
Creator:
Kyle M Hall (khall)
Created:
2019-10-29 19:21:14 UTC
Size:
13.42 KB
patch
obsolete
>From d9522e459d7a34eefbe64db44170f4e6bca202d9 Mon Sep 17 00:00:00 2001 >From: Tomas Cohen Arazi <tomascohen@theke.io> >Date: Tue, 29 Oct 2019 15:38:48 -0300 >Subject: [PATCH] Bug 14697: (QA follow-up) Organize tests in subtests > >This patch organizes the tests better, and adds some more. > >Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io> > >Signed-off-by: Andrew Fuerste-Henry <andrew@bywatersolutions.com> > >Signed-off-by: Lisette Scheer <lisetteslatah@gmail.com> >--- > Koha/REST/V1/ReturnClaims.pm | 2 +- > api/v1/swagger/paths/return_claims.json | 2 +- > t/db_dependent/api/v1/return_claims.t | 356 +++++++++++++++--------- > 3 files changed, 233 insertions(+), 127 deletions(-) > >diff --git a/Koha/REST/V1/ReturnClaims.pm b/Koha/REST/V1/ReturnClaims.pm >index c497e01561..ce6b58ecef 100644 >--- a/Koha/REST/V1/ReturnClaims.pm >+++ b/Koha/REST/V1/ReturnClaims.pm >@@ -175,7 +175,7 @@ sub resolve_claim { > > return try { > >- my $resolved_by = $body->{updated_by}; >+ my $resolved_by = $body->{resolved_by}; > my $resolution = $body->{resolution}; > > my $user = $c->stash('koha.user'); >diff --git a/api/v1/swagger/paths/return_claims.json b/api/v1/swagger/paths/return_claims.json >index b711f957bc..2c1046d136 100644 >--- a/api/v1/swagger/paths/return_claims.json >+++ b/api/v1/swagger/paths/return_claims.json >@@ -130,7 +130,7 @@ > "type": "string" > }, > "updated_by": { >- "description": "User id for the librarian updating the claim notes", >+ "description": "Interal identifier for the librarian updating the claim notes", > "type": "string" > } > } >diff --git a/t/db_dependent/api/v1/return_claims.t b/t/db_dependent/api/v1/return_claims.t >index 986ff512af..382248a548 100644 >--- a/t/db_dependent/api/v1/return_claims.t >+++ b/t/db_dependent/api/v1/return_claims.t >@@ -17,21 +17,18 @@ > > use Modern::Perl; > >-use Test::More tests => 32; >-use Test::MockModule; >+use Test::More tests => 4; >+ > use Test::Mojo; > use Test::Warn; > use t::lib::Mocks; > use t::lib::TestBuilder; > >-use DateTime; >- >-use C4::Context; >-use C4::Circulation; >+use C4::Circulation qw(AddIssue); > > use Koha::Checkouts::ReturnClaims; > use Koha::Database; >-use Koha::DateUtils; >+use Koha::DateUtils qw(dt_from_string); > > my $schema = Koha::Database->schema; > my $builder = t::lib::TestBuilder->new; >@@ -39,76 +36,57 @@ my $builder = t::lib::TestBuilder->new; > t::lib::Mocks::mock_preference( 'RESTBasicAuth', 1 ); > my $t = Test::Mojo->new('Koha::REST::V1'); > >-$schema->storage->txn_begin; >+subtest 'claim_returned() tests' => sub { > >-my $dbh = C4::Context->dbh; >+ plan tests => 9; > >-my $librarian = $builder->build_object( >- { >- class => 'Koha::Patrons', >- value => { flags => 1 } >- } >-); >-my $password = 'thePassword123'; >-$librarian->set_password( { password => $password, skip_validation => 1 } ); >-my $userid = $librarian->userid; >- >-my $patron = $builder->build_object( >- { >- class => 'Koha::Patrons', >- value => { flags => 0 } >- } >-); >-my $unauth_password = 'thePassword000'; >-$patron->set_password( >- { password => $unauth_password, skip_validattion => 1 } ); >-my $unauth_userid = $patron->userid; >-my $patron_id = $patron->borrowernumber; >- >-my $branchcode = $builder->build( { source => 'Branch' } )->{branchcode}; >-my $module = new Test::MockModule('C4::Context'); >-$module->mock( 'userenv', sub { { branch => $branchcode } } ); >- >-my $item1 = $builder->build_sample_item; >-my $itemnumber1 = $item1->itemnumber; >- >-my $date_due = DateTime->now->add( weeks => 2 ); >-my $issue1 = >- C4::Circulation::AddIssue( $patron->unblessed, $item1->barcode, $date_due ); >- >-t::lib::Mocks::mock_preference( 'ClaimReturnedChargeFee', 'ask' ); >-t::lib::Mocks::mock_preference( 'ClaimReturnedLostValue', '99' ); >- >-# Test creating a return claim >-## Invalid id >-$t->post_ok( >- "//$userid:$password@/api/v1/return_claims" => json => { >- item_id => 1, >- charge_lost_fee => Mojo::JSON->false, >- created_by => $librarian->id, >- notes => "This is a test note." >- } >-)->status_is(404) >- ->json_is( '/error' => 'Checkout not found' ); >- >-## Valid id >-$t->post_ok( >- "//$userid:$password@/api/v1/return_claims" => json => { >- item_id => $itemnumber1, >- charge_lost_fee => Mojo::JSON->false, >- created_by => $librarian->id, >- notes => "This is a test note." >- } >-)->status_is(201) >- ->header_like( Location => qr|^\/api\/v1\/return_claims/\d*|, 'SWAGGER3.4.1'); >+ $schema->storage->txn_begin; >+ >+ my $librarian = $builder->build_object( >+ { >+ class => 'Koha::Patrons', >+ value => { flags => 1 } >+ } >+ ); >+ my $password = 'thePassword123'; >+ $librarian->set_password( { password => $password, skip_validation => 1 } ); >+ my $userid = $librarian->userid; >+ >+ my $patron = $builder->build_object( >+ { >+ class => 'Koha::Patrons', >+ value => { flags => 0 } >+ } >+ ); > >-my $claim_id = $t->tx->res->json->{claim_id}; >+ t::lib::Mocks::mock_userenv({ branchcode => $librarian->branchcode }); > >-## Duplicate id >-warning_like { >+ my $item = $builder->build_sample_item; >+ my $issue = AddIssue( $patron->unblessed, $item->barcode, dt_from_string->add( weeks => 2 ) ); >+ >+ t::lib::Mocks::mock_preference( 'ClaimReturnedChargeFee', 'ask' ); >+ t::lib::Mocks::mock_preference( 'ClaimReturnedLostValue', '99' ); >+ >+ ## Valid id >+ $t->post_ok( >+ "//$userid:$password@/api/v1/return_claims" => json => { >+ item_id => $item->itemnumber, >+ charge_lost_fee => Mojo::JSON->false, >+ created_by => $librarian->id, >+ notes => "This is a test note." >+ } >+ )->status_is(201)->header_like( >+ Location => qr|^\/api\/v1\/return_claims/\d*|, >+ 'SWAGGER3.4.1' >+ ); >+ >+ my $claim_id = $t->tx->res->json->{claim_id}; >+ >+ ## Duplicate id >+ warning_like { > $t->post_ok( > "//$userid:$password@/api/v1/return_claims" => json => { >- item_id => $itemnumber1, >+ item_id => $item->itemnumber, > charge_lost_fee => Mojo::JSON->false, > created_by => $librarian->id, > notes => "This is a test note." >@@ -117,57 +95,185 @@ warning_like { > } > qr/^DBD::mysql::st execute failed: Duplicate entry/; > >-# Test editing a claim note >-## Valid claim id >-$t->put_ok( >- "//$userid:$password@/api/v1/return_claims/$claim_id/notes" => json => { >- notes => "This is a different test note.", >- updated_by => $librarian->id, >- } >-)->status_is(200); >-my $claim = Koha::Checkouts::ReturnClaims->find($claim_id); >-is( $claim->notes, "This is a different test note." ); >-is( $claim->updated_by, $librarian->id ); >-ok( $claim->updated_on ); >- >-## Bad claim id >-$t->put_ok( >- "//$userid:$password@/api/v1/return_claims/99999999999/notes" => json => { >- notes => "This is a different test note.", >- updated_by => $librarian->id, >- } >-)->status_is(404) >- ->json_is( '/error' => 'Claim not found' ); >- >-# Resolve a claim >-## Valid claim id >-$t->put_ok( >- "//$userid:$password@/api/v1/return_claims/$claim_id/resolve" => json => { >- resolved_by => $librarian->id, >- resolution => "FOUNDINLIB", >- } >-)->status_is(200); >-$claim = Koha::Checkouts::ReturnClaims->find($claim_id); >-is( $claim->resolution, "FOUNDINLIB" ); >-is( $claim->updated_by, $librarian->id ); >-ok( $claim->resolved_on ); >- >-## Invalid claim id >-$t->put_ok( >- "//$userid:$password@/api/v1/return_claims/999999999999/resolve" => json => { >- resolved_by => $librarian->id, >- resolution => "FOUNDINLIB", >- } >-)->status_is(404) >- ->json_is( '/error' => 'Claim not found' ); >- >-# Test deleting a return claim >-$t->delete_ok("//$userid:$password@/api/v1/return_claims/$claim_id") >- ->status_is( 204, 'SWAGGER3.2.4' ) >- ->content_is( '', 'SWAGGER3.3.4' ); >-$claim = Koha::Checkouts::ReturnClaims->find($claim_id); >-isnt( $claim, "Return claim was deleted" ); >- >-$t->delete_ok("//$userid:$password@/api/v1/return_claims/$claim_id") >- ->status_is(404) >- ->json_is( '/error' => 'Claim not found' ); >+ $issue->delete; >+ >+ $t->post_ok( >+ "//$userid:$password@/api/v1/return_claims" => json => { >+ item_id => $item->itemnumber, >+ charge_lost_fee => Mojo::JSON->false, >+ created_by => $librarian->id, >+ notes => "This is a test note." >+ } >+ )->status_is(404) >+ ->json_is( '/error' => 'Checkout not found' ); >+ >+ $schema->storage->txn_rollback; >+}; >+ >+subtest 'update_notes() tests' => sub { >+ >+ plan tests => 8; >+ >+ $schema->storage->txn_begin; >+ >+ my $librarian = $builder->build_object( >+ { >+ class => 'Koha::Patrons', >+ value => { flags => 1 } >+ } >+ ); >+ my $password = 'thePassword123'; >+ $librarian->set_password( { password => $password, skip_validation => 1 } ); >+ my $userid = $librarian->userid; >+ >+ my $item = $builder->build_sample_item; >+ >+ t::lib::Mocks::mock_userenv( { branchcode => $item->homebranch } ) >+ ; # needed by AddIssue >+ >+ my $issue = AddIssue( $librarian->unblessed, $item->barcode, >+ dt_from_string->add( weeks => 2 ) ); >+ >+ my $claim = $issue->claim_returned( >+ { >+ created_by => $librarian->borrowernumber, >+ notes => 'Dummy notes' >+ } >+ ); >+ >+ my $claim_id = $claim->id; >+ >+ # Test editing a claim note >+ ## Valid claim id >+ $t->put_ok( >+ "//$userid:$password@/api/v1/return_claims/$claim_id/notes" => json => { >+ notes => "This is a different test note.", >+ updated_by => $librarian->id, >+ } >+ )->status_is(200); >+ >+ $claim->discard_changes; >+ >+ is( $claim->notes, "This is a different test note." ); >+ is( $claim->updated_by, $librarian->id ); >+ ok( $claim->updated_on ); >+ >+ # Make sure the claim doesn't exist on the DB anymore >+ $claim->delete; >+ >+ ## Bad claim id >+ $t->put_ok( >+ "//$userid:$password@/api/v1/return_claims/$claim_id/notes" => json => { >+ notes => "This is a different test note.", >+ updated_by => $librarian->id, >+ } >+ )->status_is(404) >+ ->json_is( '/error' => 'Claim not found' ); >+ >+ $schema->storage->txn_rollback; >+}; >+ >+subtest 'resolve_claim() tests' => sub { >+ >+ plan tests => 8; >+ >+ $schema->storage->txn_begin; >+ >+ my $librarian = $builder->build_object( >+ { >+ class => 'Koha::Patrons', >+ value => { flags => 1 } >+ } >+ ); >+ my $password = 'thePassword123'; >+ $librarian->set_password( { password => $password, skip_validation => 1 } ); >+ my $userid = $librarian->userid; >+ >+ my $item = $builder->build_sample_item; >+ >+ t::lib::Mocks::mock_userenv( { branchcode => $item->homebranch } ); # needed by AddIssue >+ >+ my $issue = AddIssue( $librarian->unblessed, $item->barcode, dt_from_string->add( weeks => 2 ) ); >+ >+ my $claim = $issue->claim_returned( >+ { >+ created_by => $librarian->borrowernumber, >+ notes => 'Dummy notes' >+ } >+ ); >+ >+ my $claim_id = $claim->id; >+ >+ # Resolve a claim >+ $t->put_ok( >+ "//$userid:$password@/api/v1/return_claims/$claim_id/resolve" => json => { >+ resolved_by => $librarian->id, >+ resolution => "FOUNDINLIB", >+ } >+ )->status_is(200); >+ >+ $claim->discard_changes; >+ is( $claim->resolution, "FOUNDINLIB" ); >+ is( $claim->resolved_by, $librarian->id ); >+ ok( $claim->resolved_on ); >+ >+ # Make sure the claim doesn't exist on the DB anymore >+ $claim->delete; >+ >+ ## Invalid claim id >+ $t->put_ok( >+ "//$userid:$password@/api/v1/return_claims/$claim_id/resolve" => json => >+ { >+ resolved_by => $librarian->id, >+ resolution => "FOUNDINLIB", >+ } >+ )->status_is(404) >+ ->json_is( '/error' => 'Claim not found' ); >+ >+ $schema->storage->txn_rollback; >+}; >+ >+subtest 'delete() tests' => sub { >+ >+ plan tests => 7; >+ >+ $schema->storage->txn_begin; >+ >+ my $librarian = $builder->build_object( >+ { >+ class => 'Koha::Patrons', >+ value => { flags => 1 } >+ } >+ ); >+ my $password = 'thePassword123'; >+ $librarian->set_password( { password => $password, skip_validation => 1 } ); >+ my $userid = $librarian->userid; >+ >+ my $item = $builder->build_sample_item; >+ >+ t::lib::Mocks::mock_userenv({ branchcode => $item->homebranch }); >+ >+ my $issue = C4::Circulation::AddIssue( $librarian->unblessed, >+ $item->barcode, dt_from_string->add( weeks => 2 ) ); >+ >+ my $claim = $issue->claim_returned( >+ { >+ created_by => $librarian->borrowernumber, >+ notes => 'Dummy notes' >+ } >+ ); >+ >+ # Test deleting a return claim >+ $t->delete_ok("//$userid:$password@/api/v1/return_claims/" . $claim->id) >+ ->status_is( 204, 'SWAGGER3.2.4' ) >+ ->content_is( '', 'SWAGGER3.3.4' ); >+ >+ my $THE_claim = Koha::Checkouts::ReturnClaims->find($claim->id); >+ isnt( $THE_claim, "Return claim was deleted" ); >+ >+ $t->delete_ok("//$userid:$password@/api/v1/return_claims/" . $claim->id) >+ ->status_is(404) >+ ->json_is( '/error' => 'Claim not found' ); >+ >+ $schema->storage->txn_rollback; >+}; >-- >2.21.0 (Apple Git-122)
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 14697
:
92407
|
92408
|
92409
|
92410
|
92962
|
92963
|
92964
|
92965
|
93005
|
93006
|
93007
|
93008
|
93012
|
93013
|
93014
|
93015
|
93017
|
93038
|
93039
|
93040
|
93041
|
93042
|
93061
|
93062
|
93063
|
93064
|
93065
|
93952
|
93953
|
93954
|
93955
|
93956
|
93957
|
93959
|
94842
|
94843
|
94844
|
94845
|
94846
|
94847
|
94848
|
94849
|
94850
|
94851
|
94852
| 94853 |
94854
|
94857
|
94877
|
94878