Bug 20443: Handle non existent attribute when importing patrons

There is much more to do here, but this patch has the same behavior than
before: a warn is displayed in the log, the UI is not aware of it

Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
This commit is contained in:
Jonathan Druart 2020-03-20 09:38:03 +01:00 committed by Martin Renvoize
parent ea5e9f25e9
commit e8c6fcb8a0
Signed by: martin.renvoize
GPG key ID: 422B469130441A0F
2 changed files with 24 additions and 3 deletions

View file

@ -1467,7 +1467,14 @@ sub extended_attributes {
# Insert the new ones
for my $attribute (@$attributes) {
$self->_result->create_related('borrower_attributes', $attribute);
eval {
$self->_result->create_related('borrower_attributes', $attribute);
};
# FIXME We should:
# 1 - Raise an exception
# 2 - Execute in a transaction and don't save
# or Insert anyway but display a message on the UI
warn $@ if $@;
}
}
);

View file

@ -2021,7 +2021,7 @@ subtest 'anonymize' => sub {
$schema->storage->txn_rollback;
subtest 'extended_attributes' => sub {
plan tests => 10;
plan tests => 11;
my $schema = Koha::Database->new->schema;
$schema->storage->txn_begin;
@ -2046,6 +2046,10 @@ subtest 'extended_attributes' => sub {
}
)->store;
my $deleted_attribute_type = $builder->build_object({ class => 'Koha::Patron::Attribute::Types' });
my $deleted_attribute_type_code = $deleted_attribute_type->code;
$deleted_attribute_type->delete;
my $new_library = $builder->build( { source => 'Branch' } );
my $attribute_type_limited = Koha::Patron::Attribute::Type->new(
{ code => 'my code3', description => 'my description3' } )->store;
@ -2074,6 +2078,10 @@ subtest 'extended_attributes' => sub {
{
attribute => 'my attribute limited 2',
code => $attribute_type_limited->code(),
},
{
attribute => 'my nonexistent attribute 2',
code => $deleted_attribute_type_code,
}
];
@ -2084,7 +2092,13 @@ subtest 'extended_attributes' => sub {
$patron_1->extended_attributes->filter_by_branch_limitations->delete;
$patron_2->extended_attributes->filter_by_branch_limitations->delete;
$patron_1->extended_attributes($attributes_for_1);
$patron_2->extended_attributes($attributes_for_2);
my $print_error = $schema->storage->dbh->{PrintError};
$schema->storage->dbh->{PrintError} = 0;
warning_like {
$patron_2->extended_attributes($attributes_for_2);
} [ qr/a foreign key constraint fails/, qr/a foreign key constraint fails/ ], 'nonexistent attribute should have not exploded but print a warning';
$schema->storage->dbh->{PrintError} = $print_error;
my $extended_attributes_for_1 = $patron_1->extended_attributes;
is( $extended_attributes_for_1->count, 3, 'There should be 3 attributes now for patron 1');