Browse Source

Bug 23893: Unit tests

This patch introduces tests for the implemented methods.

Signed-off-by: Josef Moravec <josef.moravec@gmail.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
20.05.x
Tomás Cohen Arazi 5 years ago
committed by Martin Renvoize
parent
commit
474f5a3bfd
Signed by: martin.renvoize GPG Key ID: 422B469130441A0F
  1. 124
      t/db_dependent/Koha/Object.t

124
t/db_dependent/Koha/Object.t

@ -17,7 +17,7 @@
use Modern::Perl;
use Test::More tests => 12;
use Test::More tests => 16;
use Test::Exception;
use Test::Warn;
use DateTime;
@ -260,7 +260,127 @@ subtest "to_api() tests" => sub {
# Pick a class that won't have a mapping for the API
my $illrequest = $builder->build_object({ class => 'Koha::Illrequests' });
is_deeply( $illrequest->to_api, $illrequest->TO_JSON, 'If no to_api_method present, return TO_JSON' );
is_deeply( $illrequest->to_api, $illrequest->TO_JSON, 'If no overloaded to_api_mapping method, return TO_JSON' );
$schema->storage->txn_rollback;
};
subtest "to_api_mapping() tests" => sub {
plan tests => 1;
$schema->storage->txn_begin;
my $illrequest = $builder->build_object({ class => 'Koha::Illrequests' });
is_deeply( $illrequest->to_api_mapping, {}, 'If no to_api_mapping present, return empty hashref' );
$schema->storage->txn_rollback;
};
subtest "from_api_mapping() tests" => sub {
plan tests => 3;
$schema->storage->txn_begin;
my $city = $builder->build_object({ class => 'Koha::Cities' });
# Lets emulate an undef
my $city_class = Test::MockModule->new('Koha::City');
$city_class->mock( 'to_api_mapping',
sub {
return {
cityid => 'city_id',
city_country => 'country',
city_zipcode => undef
};
}
);
is_deeply(
$city->from_api_mapping,
{
city_id => 'cityid',
country => 'city_country'
},
'Mapping returns correctly, undef ommited'
);
$city_class->unmock( 'to_api_mapping');
$city_class->mock( 'to_api_mapping',
sub {
return {
cityid => 'city_id',
city_country => 'country',
city_zipcode => 'postal_code'
};
}
);
is_deeply(
$city->from_api_mapping,
{
city_id => 'cityid',
country => 'city_country'
},
'Reverse mapping is cached'
);
# Get a fresh object
$city = $builder->build_object({ class => 'Koha::Cities' });
is_deeply(
$city->from_api_mapping,
{
city_id => 'cityid',
country => 'city_country',
postal_code => 'city_zipcode'
},
'Fresh mapping loaded'
);
$schema->storage->txn_rollback;
};
subtest 'set_from_api() tests' => sub {
plan tests => 4;
$schema->storage->txn_begin;
my $city = $builder->build_object({ class => 'Koha::Cities' });
my $city_unblessed = $city->unblessed;
my $attrs = {
name => 'Cordoba',
country => 'Argentina',
postal_code => '5000'
};
$city->set_from_api($attrs);
is( $city->city_state, $city_unblessed->{city_state}, 'Untouched attributes are preserved' );
is( $city->city_name, $attrs->{name}, 'city_name updated correctly' );
is( $city->city_country, $attrs->{country}, 'city_country updated correctly' );
is( $city->city_zipcode, $attrs->{postal_code}, 'city_zipcode updated correctly' );
$schema->storage->txn_rollback;
};
subtest 'new_from_api() tests' => sub {
plan tests => 4;
$schema->storage->txn_begin;
my $attrs = {
name => 'Cordoba',
country => 'Argentina',
postal_code => '5000'
};
my $city = Koha::City->new_from_api($attrs);
is( ref($city), 'Koha::City', 'Object type is correct' );
is( $city->city_name, $attrs->{name}, 'city_name updated correctly' );
is( $city->city_country, $attrs->{country}, 'city_country updated correctly' );
is( $city->city_zipcode, $attrs->{postal_code}, 'city_zipcode updated correctly' );
$schema->storage->txn_rollback;
};

Loading…
Cancel
Save