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 <david@davidnind.com>

Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
Signed-off-by: Lucas Gass <lucas@bywatersolutions.com>
(cherry picked from commit 2c4a89801e)
Signed-off-by: Paul Derscheid <paul.derscheid@lmscloud.de>
(cherry picked from commit a57bd07127)
Signed-off-by: Fridolin Somers <fridolin.somers@biblibre.com>
This commit is contained in:
Emmi Takkinen 2025-04-24 13:46:27 +03:00 committed by Fridolin Somers
parent 4e591a268e
commit 27262c0058
No known key found for this signature in database
GPG Key ID: 9A8E73E2A8B96537
2 changed files with 57 additions and 10 deletions

View File

@ -141,7 +141,7 @@ sub set_form_values {
=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.

View File

@ -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' );
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
$schema->storage->txn_begin;
ok(1); # FIXME Replace
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 );
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."
);
$schema->storage->txn_rollback;
};