From 19e0baa096d156778e5a6fefcb642e96cb5f9c34 Mon Sep 17 00:00:00 2001 From: Emmi Takkinen Date: Thu, 24 Apr 2025 13:46:27 +0300 Subject: [PATCH] Bug 34776: Add unit tests for sub restore_form_values Test that input values don't change when send to the sub restore_form_values. To test prove t/Form_MessagingPreferences.t Sponsored-by: Koha-Suomi Oy Signed-off-by: David Nind --- C4/Form/MessagingPreferences.pm | 2 +- t/Form_MessagingPreferences.t | 63 ++++++++++++++++++++++++++++----- 2 files changed, 56 insertions(+), 9 deletions(-) diff --git a/C4/Form/MessagingPreferences.pm b/C4/Form/MessagingPreferences.pm index 51540f1d78..36b0979099 100644 --- a/C4/Form/MessagingPreferences.pm +++ b/C4/Form/MessagingPreferences.pm @@ -150,7 +150,7 @@ PREF: foreach my $option (@$messaging_options) { =head2 restore_form_values - C4::Form::MessagingPreferences::restore_form_values({ borrowernumber => 51 }, $template, $input); + C4::Form::MessagingPreferences::restore_form_values( $input, $template ); Restores patron message preferences if error occurs while creating a patron. diff --git a/t/Form_MessagingPreferences.t b/t/Form_MessagingPreferences.t index fd1d5fee7b..fc0552ae86 100755 --- a/t/Form_MessagingPreferences.t +++ b/t/Form_MessagingPreferences.t @@ -6,21 +6,68 @@ use Template; use Test::More tests => 1; use Test::MockModule; + #use Test::NoWarnings; +use t::lib::TestBuilder; +use t::lib::Mocks; use C4::Form::MessagingPreferences; -subtest 'restore_values' => sub { - plan tests => 1; - my $cgi = CGI->new; - my $template_module = Test::MockModule->new( 'Template' ); - my $vars = {}; +my $builder = t::lib::TestBuilder->new; +my $schema = Koha::Database->new->schema; + +subtest 'restore_form_values' => sub { + + plan tests => 2; + + my $cgi = CGI->new; + my $template_module = Test::MockModule->new('Template'); + my $vars = {}; $template_module->mock( 'param', sub { my ( $self, $key, $val ) = @_; $vars->{$key} = $val; } ); my $template = Template->new( ENCODING => 'UTF-8' ); + $schema->storage->txn_begin; + + my $patron = $builder->build_object( { class => 'Koha::Patrons' } ); + t::lib::Mocks::mock_preference( 'EnhancedMessagingPreferences', 1 ); + + C4::Form::MessagingPreferences::set_form_values( { borrowernumber => $patron->id }, $template ); + my $set_form_values_vars = {%$vars}; + $vars = {}; + C4::Form::MessagingPreferences::restore_form_values( $cgi, $template ); - require Data::Dumper; warn Data::Dumper::Dumper( $vars ); #FIXME Remove debugging - # TODO Add some checking on $vars->{messaging_preferences} here + my $restore_form_values_vars = {%$vars}; + + is_deeply( + $set_form_values_vars, $restore_form_values_vars, + "Default messaging preferences don't change when handled with restore_form_values." + ); + + C4::Members::Messaging::SetMessagingPreference( + { + borrowernumber => $patron->id, + message_transport_types => ['email'], + message_attribute_id => 2, + days_in_advance => 10, + wants_digest => 1 + } + ); + + C4::Form::MessagingPreferences::set_form_values( { borrowernumber => $patron->id }, $template ); + $set_form_values_vars = {%$vars}; + $vars = {}; + + $cgi->param( -name => '2', -value => 'email' ); + $cgi->param( -name => '2-DAYS', -value => '10' ); + $cgi->param( -name => 'digest', -value => '2' ); + + C4::Form::MessagingPreferences::restore_form_values( $cgi, $template ); + $restore_form_values_vars = {%$vars}; + + is_deeply( + $set_form_values_vars, $restore_form_values_vars, + "Patrons messaging preferences don't change when handled with restore_form_values." + ); - ok(1); # FIXME Replace + $schema->storage->txn_rollback; }; -- 2.39.5