Bug 29897: Move code to private method for reusability
[koha.git] / t / db_dependent / Letters / GetLetterTemplates.t
1 use Modern::Perl;
2 use Test::More tests => 8;
3
4 use C4::Context;
5 use C4::Letters qw( GetLetterTemplates );
6 use Koha::Database;
7 use t::lib::Mocks;
8
9 my $schema = Koha::Database->new->schema;
10 $schema->storage->txn_begin;
11 my $dbh = C4::Context->dbh;
12
13 $dbh->do(q|DELETE FROM letter|);
14
15 my $letters = [
16     {
17         module                 => 'circulation',
18         code                   => 'code1',
19         branchcode             => '',
20         name                   => 'B default name for code1 circ',
21         is_html                => 0,
22         title                  => 'default title for code1 email',
23         content                => 'default content for code1 email',
24         message_transport_type => 'email',
25         lang                   => 'default',
26     },
27     {
28         module                 => 'circulation',
29         code                   => 'code1',
30         branchcode             => '',
31         name                   => 'B default name for code1 circ',
32         is_html                => 0,
33         title                  => 'default title for code1 sms',
34         content                => 'default content for code1 sms',
35         message_transport_type => 'sms',
36         lang                   => 'es-ES',
37     },
38     {
39         module                 => 'circulation',
40         code                   => 'code2',
41         branchcode             => '',
42         name                   => 'A default name for code2 circ',
43         is_html                => 0,
44         title                  => 'default title for code2 email',
45         content                => 'default content for code2 email',
46         message_transport_type => 'email',
47         lang                   => 'default',
48     },
49     {
50         module                 => 'circulation',
51         code                   => 'code3',
52         branchcode             => '',
53         name                   => 'C default name for code3 circ',
54         is_html                => 0,
55         title                  => 'default title for code3 email',
56         content                => 'default content for code3 email',
57         message_transport_type => 'email',
58         lang                   => 'default',
59     },
60
61     {
62         module                 => 'cataloguing',
63         code                   => 'code1',
64         branchcode             => '',
65         name                   => 'default name for code1 cat',
66         is_html                => 0,
67         title                  => 'default title for code1 cat email',
68         content                => 'default content for code1 cat email',
69         message_transport_type => 'email',
70         lang                   => 'default',
71     },
72
73     {
74         module                 => 'circulation',
75         code                   => 'code1',
76         branchcode             => 'CPL',
77         name                   => 'B CPL name for code1 circ',
78         is_html                => 0,
79         title                  => 'CPL title for code1 email',
80         content                => 'CPL content for code1 email',
81         message_transport_type => 'email',
82         lang                   => 'default',
83     },
84     {
85         module                 => 'circulation',
86         code                   => 'code2',
87         branchcode             => 'CPL',
88         name                   => 'A CPL name for code1 circ',
89         is_html                => 0,
90         title                  => 'CPL title for code1 sms',
91         content                => 'CPL content for code1 sms',
92         message_transport_type => 'sms',
93         lang                   => 'default',
94     },
95 ];
96
97 my $sth = $dbh->prepare(
98 q|INSERT INTO letter(module, code, branchcode, name, title, content, message_transport_type, lang) VALUES (?, ?, ?, ?, ?, ?, ?, ?)|
99 );
100 for my $l (@$letters) {
101     $sth->execute( $l->{module}, $l->{code}, $l->{branchcode}, $l->{name},
102         $l->{title}, $l->{content}, $l->{message_transport_type}, $l->{lang} );
103 }
104
105 t::lib::Mocks::mock_preference('TranslateNotices', 1);
106 my $letter_templates;
107 $letter_templates = C4::Letters::GetLetterTemplates;
108 is_deeply( $letter_templates, [],
109     'GetLetterTemplates should not return templates if not param is given' );
110
111 $letter_templates = C4::Letters::GetLetterTemplates(
112     { module => 'circulation', code => 'code1', branchcode => '' } );
113 is( scalar( @$letter_templates ),
114     2, '2 default templates should exist for circulation code1' );
115 my $has_email = grep { $_->{message_transport_type} eq 'email' } @$letter_templates;
116 is( $has_email, 1, 'The mtt email should exist for circulation code1' );
117 my $has_sms = grep { $_->{message_transport_type} eq 'sms' } @$letter_templates;
118 is( $has_sms, 1, 'The mtt sms should exist for circulation code1' );
119
120 $letter_templates = C4::Letters::GetLetterTemplates(
121     { module => 'circulation', code => 'code1', branchcode => 'CPL' } );
122 is( scalar( @$letter_templates ),
123     1, '1 template should exist for circulation CPL code1' );
124 $has_email = grep { $_->{message_transport_type} eq 'email' } @$letter_templates;
125 is( $has_email, 1, 'The mtt should be email for circulation CPL code1' );
126
127 $letter_templates = C4::Letters::GetLetterTemplates(
128     { module => 'circulation', code => 'code1' } );
129 is( scalar( @$letter_templates ),
130     2, '2 default templates should exist for circulation code1 (even if branchcode is not given)' );
131
132 t::lib::Mocks::mock_preference('TranslateNotices', 0);
133 $letter_templates = C4::Letters::GetLetterTemplates(
134     { module => 'circulation', code => 'code1' } );
135 is( scalar( @$letter_templates ),
136     1, 'There should exist only 1 template circulation code1 for default language' );