From 95b069128c43548c07f3a080e64bd8fb944fe360 Mon Sep 17 00:00:00 2001 From: Jonathan Druart Date: Wed, 13 Oct 2021 14:46:08 +0200 Subject: [PATCH] Bug 28739: Execute the letter processing inside a transaction --- C4/Letters.pm | 3 +++ t/db_dependent/Letters/TemplateToolkit.t | 23 ++++++++++++++++++++++- 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/C4/Letters.pm b/C4/Letters.pm index c36553ac9ad..18b9da864fa 100644 --- a/C4/Letters.pm +++ b/C4/Letters.pm @@ -1651,7 +1651,10 @@ sub _process_tt { $content = qq|[% USE KohaDates %][% USE Remove_MARC_punctuation %]$content|; my $output; + my $schema = Koha::Database->new->schema; + $schema->txn_begin; $template->process( \$content, $tt_params, \$output ) || croak "ERROR PROCESSING TEMPLATE: " . $template->error(); + $schema->txn_rollback; return $output; } diff --git a/t/db_dependent/Letters/TemplateToolkit.t b/t/db_dependent/Letters/TemplateToolkit.t index b69ebe118ee..ea0a52bba81 100755 --- a/t/db_dependent/Letters/TemplateToolkit.t +++ b/t/db_dependent/Letters/TemplateToolkit.t @@ -19,7 +19,7 @@ # along with Koha; if not, see . use Modern::Perl; -use Test::More tests => 28; +use Test::More tests => 29; use Test::MockModule; use Test::Warn; @@ -1176,6 +1176,27 @@ EOF is( $letter->{content}, $expected_content ); }; +subtest 'Execute TT process in a DB transaction' => sub { + plan tests => 2; + my $code = 'TEST_TXN'; + my $library = $builder->build_object( { class => 'Koha::Libraries' } ); + my $template = < $template, code => $code, module => 'test' }); + my $letter = GetPreparedLetter( + module => 'test', + letter_code => $code, + tables => { + branches => $library->branchcode, + } + ); + my $branchcode = $library->branchcode; + like($letter->{content}, qr{=$branchcode=}, 'content generated with the library'); + is( ref($library->get_from_storage), 'Koha::Library', 'calling ->delete on the object has not been comitted'); +}; + sub reset_template { my ( $params ) = @_; my $template = $params->{template}; -- 2.25.1