Bug 18448: Fix a few db_dependent tests

Tests in db_dependent may expect a Koha database, but should not rely on
hardcoded categories, currencies, branch codes, etc.

This patch fixes a bunch of those. But this is a continuous project. We also
need QA to closely watch new edits.

Accounts.t: hardcoded category PT replaced
Acquisition/OrderFromSubscription.t: hardcoded USD
Acquisition/StandingOrders.t: same
ArticleRequests.t: create itemtype, branch and category for testing
AuthorisedValues.t: remove $dbh, add two test branches
AuthoritiesMarc.t: add hardcoded GEOGR_NAME authtype
Bookseller.t: add test currency
Koha.t: add test itemtype instead of hardcoded BK
UsageStats.t: add test branch and category

Test plan:
Run the adjusted tests.

Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>

All tests successful (see comment #9)
Signed-off-by: Marc Véron <veron@veron.ch>

Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>

Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
This commit is contained in:
Marcel de Rooy 2017-04-16 18:50:58 +02:00 committed by Kyle M Hall
parent d0a37bb8bf
commit 2ba4a661d3
9 changed files with 72 additions and 39 deletions

View File

@ -103,8 +103,8 @@ my @test_data = (
{ amount => -5 , days_ago => $days , description =>'purge_zero_balance_fees should not delete fees with negative amout owed on threshold day' , delete => 0 } ,
{ amount => -5 , days_ago => $days + 1 , description =>'purge_zero_balance_fees should not delete fees with negative amout owed after threshold day' , delete => 0 }
);
my $borrower = Koha::Patron->new( { firstname => 'Test', surname => 'Patron', categorycode => 'PT', branchcode => $branchcode } )->store();
my $categorycode = $builder->build({ source => 'Category' })->{categorycode};
my $borrower = Koha::Patron->new( { firstname => 'Test', surname => 'Patron', categorycode => $categorycode, branchcode => $branchcode } )->store();
for my $data ( @test_data ) {
$sth->execute($borrower->borrowernumber, $data->{amount}, $data->{days_ago}, $data->{description});

View File

@ -2,6 +2,8 @@ use Modern::Perl;
use Test::More tests => 12;
use t::lib::TestBuilder;
use_ok('C4::Acquisition');
use_ok('C4::Biblio');
use_ok('C4::Budgets');
@ -13,9 +15,12 @@ use Koha::Database;
# Start transaction
my $schema = Koha::Database->new()->schema();
$schema->storage->txn_begin();
my $builder = t::lib::TestBuilder->new;
my $dbh = C4::Context->dbh;
$dbh->{RaiseError} = 1;
my $curcode = $builder->build({ source => 'Currency' })->{currencycode};
my $bookseller = Koha::Acquisition::Bookseller->new(
{
name => "my vendor",
@ -61,7 +66,7 @@ my $order = Koha::Acquisition::Order->new({
biblionumber => $subscription->{biblionumber},
entrydate => '01-01-2013',
quantity => 1,
currency => 'USD',
currency => $curcode,
listprice => $cost,
notes => "This is a note",
basketno => $basketno,

View File

@ -22,6 +22,7 @@ my $branch = $builder->build( { source => 'Branch' } );
my $bookseller = $builder->build( { source => 'Aqbookseller' } );
my $budget = $builder->build( { source => 'Aqbudget' } );
my $staffmember = $builder->build( { source => 'Borrower' } );
my $curcode = $builder->build( { source => 'Currency' })->{currencycode};
# Create baskets and orders
@ -61,7 +62,7 @@ my $ordernumber = Koha::Acquisition::Order->new(
basketno => $basketno,
biblionumber => $biblionumber,
budget_id => $budget->{budget_id},
currency => 'USD',
currency => $curcode,
quantity => 0,
rrp => 42,
rrp_tax_included => 42,

View File

@ -20,8 +20,10 @@ use Modern::Perl;
use POSIX qw(strftime);
use Test::More tests => 49;
use Koha::Database;
use t::lib::TestBuilder;
use Koha::Database;
use Koha::Biblio;
use Koha::Patron;
use Koha::Library;
@ -34,6 +36,7 @@ BEGIN {
my $schema = Koha::Database->new()->schema();
$schema->storage->txn_begin();
my $builder = t::lib::TestBuilder->new;
my $dbh = C4::Context->dbh;
$dbh->{RaiseError} = 1;
@ -50,21 +53,22 @@ my $biblioitem = $schema->resultset('Biblioitem')->new(
)->insert();
ok( $biblioitem->id, 'biblioitem created' );
my $itype = $builder->build({ source => 'Itemtype' });
my $item = Koha::Item->new(
{
biblionumber => $biblio->id,
biblioitemnumber => $biblioitem->id,
itype => $schema->resultset('Itemtype')->search()->next()->itemtype(),
itype => $itype->{itype},
}
)->store();
ok( $item->id, 'Koha::Item created' );
my $branch = Koha::Libraries->search()->next();
my $category = $schema->resultset('Category')->next();
my $branch = $builder->build({ source => 'Branch' });
my $category = $builder->build({ source => 'Category' });
my $patron = Koha::Patron->new(
{
categorycode => $category->id,
branchcode => $branch->id,
categorycode => $category->{categorycode},
branchcode => $branch->{branchcode},
}
)->store();
ok( $patron->id, 'Koha::Patron created' );

View File

@ -3,18 +3,21 @@
use Modern::Perl;
use Test::More tests => 15;
use t::lib::TestBuilder;
use Koha::Database;
use C4::Context;
use Koha::AuthorisedValue;
use Koha::AuthorisedValues;
use Koha::AuthorisedValueCategories;
use Koha::MarcSubfieldStructures;
my $dbh = C4::Context->dbh;
$dbh->{AutoCommit} = 0;
$dbh->{RaiseError} = 1;
my $schema = Koha::Database->new->schema;
$schema->storage->txn_begin;
my $builder = t::lib::TestBuilder->new;
$dbh->do("DELETE FROM authorised_values");
$dbh->do("DELETE FROM authorised_value_categories");
Koha::AuthorisedValues->delete;
Koha::AuthorisedValueCategories->delete;
# insert
Koha::AuthorisedValueCategory->new({ category_name => 'av_for_testing' })->store;
@ -89,11 +92,8 @@ my @authorised_values =
Koha::AuthorisedValues->new()->search( { category => 'av_for_testing' } );
is( @authorised_values, 3, "Get correct number of values" );
my $branches_rs = Koha::Database->new()->schema()->resultset('Branch')->search();
my $branch1 = $branches_rs->next();
my $branchcode1 = $branch1->branchcode();
my $branch2 = $branches_rs->next();
my $branchcode2 = $branch2->branchcode();
my $branchcode1 = $builder->build({ source => 'Branch' })->{branchcode};
my $branchcode2 = $builder->build({ source => 'Branch' })->{branchcode};
$av1->add_branch_limitation( $branchcode1 );
@ -225,3 +225,5 @@ subtest 'search_by_*_field + find_by_koha_field + get_description' => sub {
);
};
};
$schema->storage->txn_rollback;

View File

@ -11,7 +11,9 @@ use Test::Warn;
use MARC::Record;
use t::lib::Mocks;
use t::lib::TestBuilder;
use Koha::Database;
use Koha::Authority::Types;
BEGIN {
use_ok('C4::AuthoritiesMarc');
@ -61,9 +63,15 @@ $module->mock('GetAuthority', sub {
my $schema = Koha::Database->new->schema;
$schema->storage->txn_begin;
my $dbh = C4::Context->dbh;
my $builder = t::lib::TestBuilder->new;
t::lib::Mocks::mock_preference('marcflavour', 'MARC21');
# Authority type GEOGR_NAME is hardcoded here
if( ! Koha::Authority::Types->find('GEOGR_NAME') ) {
$builder->build({ source => 'AuthType', value => { authtypecode => 'GEOGR_NAME' }});
};
is(BuildAuthHierarchies(3, 1), '1,2,3', "Built linked authtrees hierarchy string");
my $expectedhierarchy = [ [ {

View File

@ -6,6 +6,8 @@ use Test::More tests => 86;
use Test::MockModule;
use Test::Warn;
use t::lib::TestBuilder;
use C4::Context;
use Koha::DateUtils;
use DateTime::Duration;
@ -35,8 +37,8 @@ my $dbh = C4::Context->dbh;
my $database = Koha::Database->new();
my $schema = $database->schema();
$schema->storage->txn_begin();
$dbh->{RaiseError} = 1;
my $builder = t::lib::TestBuilder->new;
#Start tests
$dbh->do(q|DELETE FROM aqorders|);
@ -44,6 +46,9 @@ $dbh->do(q|DELETE FROM aqbasket|);
$dbh->do(q|DELETE FROM aqbooksellers|);
$dbh->do(q|DELETE FROM subscription|);
# Add currency
my $curcode = $builder->build({ source => 'Currency' })->{currencycode};
#Test AddBookseller
my $count = Koha::Acquisition::Booksellers->search()->count();
my $sample_supplier1 = {
@ -350,7 +355,7 @@ my $order1 = Koha::Acquisition::Order->new(
biblionumber => $biblionumber,
budget_id => $id_budget,
entrydate => '01-01-2013',
currency => 'EUR',
currency => $curcode,
notes => "This is a note1",
tax_rate => 0.0500,
orderstatus => 1,
@ -370,7 +375,7 @@ my $order2 = Koha::Acquisition::Order->new(
biblionumber => $biblionumber,
budget_id => $id_budget,
entrydate => '01-01-2013',
currency => 'EUR',
currency => $curcode,
notes => "This is a note2",
tax_rate => 0.0500,
orderstatus => 1,
@ -388,7 +393,7 @@ my $order3 = Koha::Acquisition::Order->new(
biblionumber => $biblionumber,
budget_id => $id_budget,
entrydate => '02-02-2013',
currency => 'EUR',
currency => $curcode,
notes => "This is a note3",
tax_rate => 0.0500,
orderstatus => 2,
@ -406,7 +411,7 @@ my $order4 = Koha::Acquisition::Order->new(
biblionumber => $biblionumber,
budget_id => $id_budget,
entrydate => '02-02-2013',
currency => 'EUR',
currency => $curcode,
notes => "This is a note3",
tax_rate => 0.0500,
orderstatus => 2,

View File

@ -4,22 +4,28 @@
# It requires a working Koha database with the sample data
use Modern::Perl;
use DateTime::Format::MySQL;
use Test::More tests => 7;
use t::lib::TestBuilder;
use C4::Context;
use Koha::Database;
use Koha::DateUtils qw(dt_from_string);
use Koha::AuthorisedValue;
use Koha::AuthorisedValueCategories;
use Test::More tests => 7;
use DateTime::Format::MySQL;
BEGIN {
use_ok('C4::Koha', qw( :DEFAULT GetDailyQuote GetItemTypesCategorized));
use_ok('C4::Members');
}
my $schema = Koha::Database->new->schema;
$schema->storage->txn_begin;
my $builder = t::lib::TestBuilder->new;
my $dbh = C4::Context->dbh;
$dbh->{AutoCommit} = 0;
$dbh->{RaiseError} = 1;
our $itype_1 = $builder->build({ source => 'Itemtype' });
subtest 'Authorized Values Tests' => sub {
plan tests => 3;
@ -152,9 +158,9 @@ subtest 'Authorized Values Tests' => sub {
};
subtest 'Itemtype info Tests' => sub {
like ( getitemtypeinfo('BK')->{'imageurl'}, qr/intranet-tmpl/, 'getitemtypeinfo on unspecified interface returns intranet imageurl (legacy behavior)' );
like ( getitemtypeinfo('BK', 'intranet')->{'imageurl'}, qr/intranet-tmpl/, 'getitemtypeinfo on "intranet" interface returns intranet imageurl' );
like ( getitemtypeinfo('BK', 'opac')->{'imageurl'}, qr/opac-tmpl/, 'getitemtypeinfo on "opac" interface returns opac imageurl' );
like ( getitemtypeinfo( $itype_1->{itemtype} )->{'imageurl'}, qr/intranet-tmpl/, 'getitemtypeinfo on unspecified interface returns intranet imageurl (legacy behavior)' );
like ( getitemtypeinfo( $itype_1->{itemtype}, 'intranet')->{'imageurl'}, qr/intranet-tmpl/, 'getitemtypeinfo on "intranet" interface returns intranet imageurl' );
like ( getitemtypeinfo( $itype_1->{itemtype}, 'opac')->{'imageurl'}, qr/opac-tmpl/, 'getitemtypeinfo on "opac" interface returns opac imageurl' );
};
### test for C4::Koha->GetDailyQuote()
@ -294,4 +300,4 @@ subtest 'GetItemTypesCategorized test' => sub{
is_deeply(\@results,\@expected, 'GetItemTypesCategorized: grouped and ungrouped items returned as expected.');
};
$dbh->rollback();
$schema->storage->txn_rollback;

View File

@ -17,6 +17,7 @@
use Modern::Perl;
use Test::More tests => 57;
use t::lib::Mocks qw(mock_preference);
use t::lib::TestBuilder;
use POSIX qw(strftime);
use Data::Dumper;
use Koha::Biblios;
@ -41,9 +42,10 @@ can_ok(
_count )
);
my $schema = Koha::Database->new->schema;
$schema->storage->txn_begin;
my $builder = t::lib::TestBuilder->new;
my $dbh = C4::Context->dbh;
$dbh->{AutoCommit} = 0;
$dbh->{RaiseError} = 1;
$dbh->do('DELETE FROM issues');
$dbh->do('DELETE FROM biblio');
@ -213,8 +215,8 @@ sub construct_objects_needed {
my $cardnumber1 = 'test_card1';
my $cardnumber2 = 'test_card2';
my $cardnumber3 = 'test_card3';
my $categorycode = Koha::Database->new()->schema()->resultset('Category')->first()->categorycode();
my $branchcode = Koha::Database->new()->schema()->resultset('Branch')->first()->branchcode();
my $categorycode = $builder->build({ source => 'Category' })->{categorycode};
my $branchcode = $builder->build({ source => 'Branch' })->{branchcode};
my $query = '
INSERT INTO borrowers
@ -613,4 +615,4 @@ sub verif_systempreferences_values {
}
}
$dbh->rollback;
$schema->storage->txn_rollback;