Commit 38132cab authored by Marcel de Rooy's avatar Marcel de Rooy Committed by joubu

Bug 18725: (QA follow-up) Use make_column_dirty instead of status change

Moving the status to the invalid 'processing' might well have unwanted
side-effects. (The status column will be set to empty string and we have
a problem if it is not processed.)

This patch allows pass-through of DBIX's make_column_dirty in
Koha::Object (simple tests included) and uses it to force an update.
If the update does not return true, it still exits.

Test plan:
[1] Read the changes.
[2] Run t/db_dependent/Koha/Object.t
Signed-off-by: default avatarMarcel de Rooy <m.de.rooy@rijksmuseum.nl>
Signed-off-by: joubu's avatarJonathan Druart <jonathan.druart@bugs.koha-community.org>
parent 8ad45474
......@@ -1065,9 +1065,9 @@ sub SendQueuedMessages {
my $unsent_messages = _get_unsent_messages( $which_unsent_messages );
MESSAGE: foreach my $message ( @$unsent_messages ) {
my $message_object = Koha::Notice::Messages->find( $message->{message_id} );
$message_object->status('processing');
# If this fails the database is unwritable and we won't manage to send a message that continues to be marked 'pending'
return unless $message_object->store();
$message_object->make_column_dirty('status');
return unless $message_object->store;
# warn Data::Dumper->Dump( [ $message ], [ 'message' ] );
warn sprintf( 'sending %s message to patron: %s',
......
......@@ -390,7 +390,7 @@ sub AUTOLOAD {
}
}
my @known_methods = qw( is_changed id in_storage get_column discard_changes update related_resultset );
my @known_methods = qw( is_changed id in_storage get_column discard_changes update related_resultset make_column_dirty );
Koha::Exceptions::Object::MethodNotCoveredByTests->throw( "The method $method is not covered by tests!" ) unless grep {/^$method$/} @known_methods;
......
......@@ -43,8 +43,8 @@ BEGIN {
my $schema = Koha::Database->new->schema;
my $builder = t::lib::TestBuilder->new();
subtest 'is_changed' => sub {
plan tests => 6;
subtest 'is_changed / make_column_dirty' => sub {
plan tests => 9;
$schema->storage->txn_begin;
......@@ -70,6 +70,15 @@ subtest 'is_changed' => sub {
$object->store();
is( $object->is_changed(), 0, "Object no longer marked as changed after being stored" );
# Test make_column_dirty
$object->make_column_dirty('firstname');
is( $object->is_changed, 1, "Object is changed after make dirty" );
$object->store;
is( $object->is_changed, 0, "Store clears dirty mark" );
$object->make_column_dirty('firstname');
$object->discard_changes;
is( $object->is_changed, 0, "Discard clears dirty mark too" );
$schema->storage->txn_rollback;
};
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment