Bug 22930: Make TestBuilder->build_object explodes if parameters are wrong
This patch implements bug 15339 for build_object. We want it to warn if the call is wrong. Test plan: Make sure the tests are still returning green Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl> Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
This commit is contained in:
parent
9515ee6bf0
commit
52325a771a
2 changed files with 25 additions and 8 deletions
|
@ -351,7 +351,7 @@ subtest 'Default values' => sub {
|
|||
|
||||
subtest 'build_object() tests' => sub {
|
||||
|
||||
plan tests => 6;
|
||||
plan tests => 5;
|
||||
|
||||
$builder = t::lib::TestBuilder->new();
|
||||
|
||||
|
@ -372,12 +372,6 @@ subtest 'build_object() tests' => sub {
|
|||
$categorycode, 'Category code correctly set' );
|
||||
is( $issuing_rule->itemtype, $itemtype, 'Item type correctly set' );
|
||||
|
||||
warning_is { $issuing_rule = $builder->build_object( {} ); }
|
||||
{ carped => 'Missing class param' },
|
||||
'The class parameter is mandatory, raises a warning if absent';
|
||||
is( $issuing_rule, undef,
|
||||
'If the class parameter is missing, undef is returned' );
|
||||
|
||||
subtest 'Test all classes' => sub {
|
||||
my $Koha_modules_dir = dirname(__FILE__) . '/../../Koha';
|
||||
my @koha_object_based_modules = `/bin/grep -rl -e '^sub object_class' $Koha_modules_dir`;
|
||||
|
@ -394,10 +388,25 @@ subtest 'build_object() tests' => sub {
|
|||
is( ref($object), $module->object_class, "Testing $module" );
|
||||
}
|
||||
};
|
||||
|
||||
subtest 'test parameters' => sub {
|
||||
plan tests => 3;
|
||||
|
||||
warning_is { $issuing_rule = $builder->build_object( {} ); }
|
||||
{ carped => 'Missing class param' },
|
||||
'The class parameter is mandatory, raises a warning if absent';
|
||||
is( $issuing_rule, undef,
|
||||
'If the class parameter is missing, undef is returned' );
|
||||
|
||||
warnings_like {
|
||||
$builder->build_object(
|
||||
{ class => 'Koha::Patrons', categorycode => 'foobar' } );
|
||||
} qr{Unknown parameter\(s\): categorycode}, "";
|
||||
};
|
||||
};
|
||||
|
||||
subtest '->build parameter' => sub {
|
||||
plan tests => 3;
|
||||
plan tests => 4;
|
||||
|
||||
# Test to make sure build() warns user of unknown parameters.
|
||||
warnings_are {
|
||||
|
@ -421,6 +430,11 @@ subtest '->build parameter' => sub {
|
|||
zource => 'Branch', # Intentional spelling error
|
||||
})
|
||||
} qr/Source parameter not specified/, "Catch warning on missing source";
|
||||
|
||||
warnings_like {
|
||||
$builder->build(
|
||||
{ source => 'Borrower', categorycode => 'foobar' } );
|
||||
} qr{Unknown parameter\(s\): categorycode}, "";
|
||||
};
|
||||
|
||||
$schema->storage->txn_rollback;
|
||||
|
|
|
@ -76,6 +76,9 @@ sub build_object {
|
|||
return;
|
||||
}
|
||||
|
||||
my @unknowns = grep( !/^(class|value)$/, keys %{ $params });
|
||||
carp "Unknown parameter(s): ", join( ', ', @unknowns ) if scalar @unknowns;
|
||||
|
||||
load $class;
|
||||
my $source = $class->_type;
|
||||
my @pks = $self->schema->source( $class->_type )->primary_columns;
|
||||
|
|
Loading…
Reference in a new issue