From 7ffc698c9b7b441b0493f40b856aba0a2ac997d3 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 Signed-off-by: Martin Renvoize Signed-off-by: Kyle M Hall Signed-off-by: Tomas Cohen Arazi --- 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 728c84f137..22206045e0 100644 --- a/C4/Letters.pm +++ b/C4/Letters.pm @@ -1609,7 +1609,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 c8fb64f0dd..594f5689f8 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 => 29; +use Test::More tests => 30; use Test::MockModule; use Test::Warn; @@ -1188,6 +1188,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.20.1