From bf1d6e895cdc48320d6c2b776e70001b7d95e518 Mon Sep 17 00:00:00 2001 From: Andrew Isherwood Date: Fri, 23 Oct 2020 15:14:28 +0100 Subject: [PATCH] Bug 23971: (follow-up) Fix tests MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Following a discussion with Tomás on Slack, this commit implements the following suggestions: - Switch from ->find to ->search in tests. ->find is only ever going to return 0 or 1 rows, which doesn't help us if there is breakage which results in more than 1 row being returned, the test would fail due to ->find not expecting more than 1 row, but we should be testing for it. So switching to ->search returns all matching rows. - Moved tests into their own subtest, they had the potential to pollute surrounding tests - Remove all action logs before each test, this ensures we're only testing the result of the current test --- t/db_dependent/Acquisition.t | 70 ++++++++++++++++++++++-------------- 1 file changed, 43 insertions(+), 27 deletions(-) diff --git a/t/db_dependent/Acquisition.t b/t/db_dependent/Acquisition.t index c47246c71b..e4de3ef5f8 100755 --- a/t/db_dependent/Acquisition.t +++ b/t/db_dependent/Acquisition.t @@ -19,7 +19,7 @@ use Modern::Perl; use POSIX qw(strftime); -use Test::More tests => 73; +use Test::More tests => 67; use t::lib::Mocks; use Koha::Database; use Koha::DateUtils qw(dt_from_string output_pref); @@ -125,8 +125,6 @@ sub _check_fields_of_orders { my $schema = Koha::Database->new()->schema(); $schema->storage->txn_begin(); -t::lib::Mocks::mock_preference('AcqLog', 1); - # Creating some orders my $bookseller = Koha::Acquisition::Bookseller->new( { @@ -150,9 +148,6 @@ ok( ); ok( $basket = GetBasket($basketno), "GetBasket($basketno) returns $basket" ); -my @create_logs = Koha::ActionLogs->find({ module =>'ACQUISITIONS', action => 'ADD_BASKET', object => $basketno }); -ok( scalar @create_logs == 1, 'Basket creation is logged'); - my $bpid=AddBudgetPeriod({ budget_period_startdate => '2008-01-01' , budget_period_enddate => '2008-12-31' @@ -416,27 +411,6 @@ $search_orders = SearchOrders({ }); is( scalar (@$search_orders), 4, "SearchOrders with pending and ordered params gets only pending ordered orders. After closing the basket, orders are marked as 'ordered' (bug 11170)" ); -my @close_logs = Koha::ActionLogs->find({ module =>'ACQUISITIONS', action => 'CLOSE_BASKET', object => $basketno }); -ok( scalar @close_logs == 1, 'Basket closure is logged'); -C4::Acquisition::ReopenBasket($basketno); -my @reopen_logs = Koha::ActionLogs->find({ module =>'ACQUISITIONS', action => 'REOPEN_BASKET', object => $basketno }); -ok( scalar @reopen_logs == 1, 'Basket reopen is logged'); -C4::Acquisition::CloseBasket($basketno, 1); -my @approve_logs = Koha::ActionLogs->find({ module =>'ACQUISITIONS', action => 'APPROVE_BASKET', object => $basketno }); -ok( scalar @approve_logs == 1, 'Basket approval is logged'); -C4::Acquisition::ModBasket({ - basketno => $basketno, - booksellerid => $booksellerid -}); -my @mod_logs = Koha::ActionLogs->find({ module =>'ACQUISITIONS', action => 'MODIFY_BASKET', object => $basketno }); -ok( scalar @mod_logs == 1, 'Basket modify is logged'); -C4::Acquisition::ModBasketHeader($basketno,"Test","","","",$booksellerid); -my @mod_header_logs = Koha::ActionLogs->find({ module =>'ACQUISITIONS', action => 'MODIFY_BASKET_HEADER', object => $basketno }); -ok( scalar @mod_header_logs == 1, 'Basket header modify is logged'); -C4::Acquisition::ModBasketUsers($basketno,(1)); -my @mod_users_logs = Koha::ActionLogs->find({ module =>'ACQUISITIONS', action => 'MODIFY_BASKET_USERS', object => $basketno }); -ok( scalar @mod_users_logs == 1, 'Basket users modify is logged'); - # # Test AddClaim # @@ -925,4 +899,46 @@ subtest 'GetHistory - is_standing' => sub { }; +subtest 'Acquisition logging' => sub { + + plan tests => 6; + + t::lib::Mocks::mock_preference('AcqLog', 1); + + Koha::ActionLogs->delete; + my $basketno = NewBasket( $booksellerid, 1 ); + my @create_logs = Koha::ActionLogs->search({ module =>'ACQUISITIONS', action => 'ADD_BASKET', object => $basketno }); + is (scalar @create_logs, 1, 'Basket creation is logged'); + + Koha::ActionLogs->delete; + C4::Acquisition::CloseBasket($basketno); + my @close_logs = Koha::ActionLogs->search({ module =>'ACQUISITIONS', action => 'CLOSE_BASKET', object => $basketno }); + is (scalar @close_logs, 1, 'Basket closure is logged'); + + Koha::ActionLogs->delete; + C4::Acquisition::ReopenBasket($basketno); + my @reopen_logs = Koha::ActionLogs->search({ module =>'ACQUISITIONS', action => 'REOPEN_BASKET', object => $basketno }); + is (scalar @reopen_logs, 1, 'Basket reopen is logged'); + + Koha::ActionLogs->delete; + C4::Acquisition::ModBasket({ + basketno => $basketno, + booksellerid => $booksellerid + }); + my @mod_logs = Koha::ActionLogs->search({ module =>'ACQUISITIONS', action => 'MODIFY_BASKET', object => $basketno }); + is (scalar @mod_logs, 1, 'Basket modify is logged'); + + Koha::ActionLogs->delete; + C4::Acquisition::ModBasketHeader($basketno,"Test","","","",$booksellerid); + my @mod_header_logs = Koha::ActionLogs->search({ module =>'ACQUISITIONS', action => 'MODIFY_BASKET_HEADER', object => $basketno }); + is (scalar @mod_header_logs, 1, 'Basket header modify is logged'); + + Koha::ActionLogs->delete; + C4::Acquisition::ModBasketUsers($basketno,(1)); + my @mod_users_logs = Koha::ActionLogs->search({ module =>'ACQUISITIONS', action => 'MODIFY_BASKET_USERS', object => $basketno }); + is (scalar @mod_users_logs, 1, 'Basket users modify is logged'); + + t::lib::Mocks::mock_preference('AcqLog', 0); +}; + $schema->storage->txn_rollback(); -- 2.20.1