Bug 26384: Fix executable flags
[koha.git] / t / db_dependent / Letters / GetLettersAvailableForALibrary.t
1 use Modern::Perl;
2 use Test::More tests => 19;
3
4 use C4::Context;
5 use C4::Letters qw( GetLettersAvailableForALibrary DelLetter );
6 use Koha::Database;
7
8 my $schema = Koha::Database->new->schema;
9 $schema->storage->txn_begin;
10 my $dbh = C4::Context->dbh;
11
12 $dbh->do(q|DELETE FROM letter|);
13
14 my $letters = [
15     {
16         module                 => 'circulation',
17         code                   => 'code1',
18         branchcode             => '',
19         name                   => 'B name for code1 circ',
20         is_html                => 0,
21         title                  => 'default title for code1 email',
22         content                => 'default content for code1 email',
23         message_transport_type => 'email',
24     },
25     {
26         module                 => 'circulation',
27         code                   => 'code1',
28         branchcode             => '',
29         name                   => 'B name for code1 circ',
30         is_html                => 0,
31         title                  => 'default title for code1 sms',
32         content                => 'default content for code1 sms',
33         message_transport_type => 'sms',
34     },
35     {
36         module                 => 'circulation',
37         code                   => 'code2',
38         branchcode             => '',
39         name                   => 'A name for code2 circ',
40         is_html                => 0,
41         title                  => 'default title for code2 email',
42         content                => 'default content for code2 email',
43         message_transport_type => 'email',
44     },
45     {
46         module                 => 'circulation',
47         code                   => 'code3',
48         branchcode             => '',
49         name                   => 'C name for code3 circ',
50         is_html                => 0,
51         title                  => 'default title for code3 email',
52         content                => 'default content for code3 email',
53         message_transport_type => 'email',
54     },
55
56     {
57         module                 => 'cataloguing',
58         code                   => 'code1',
59         branchcode             => '',
60         name                   => 'D name for code1 cat',
61         is_html                => 0,
62         title                  => 'default title for code1 cat email',
63         content                => 'default content for code1 cat email',
64         message_transport_type => 'email',
65     },
66
67     {
68         module                 => 'circulation',
69         code                   => 'code1',
70         branchcode             => 'CPL',
71         name                   => 'B name for code1 circ',
72         is_html                => 0,
73         title                  => 'CPL title for code1 email',
74         content                => 'CPL content for code1 email',
75         message_transport_type => 'email',
76     },
77     {
78         module                 => 'circulation',
79         code                   => 'code2',
80         branchcode             => 'CPL',
81         name                   => 'A name for code2 circ',
82         is_html                => 0,
83         title                  => 'CPL title for code2 sms',
84         content                => 'CPL content for code2 sms',
85         message_transport_type => 'sms',
86     },
87     {
88         module                 => 'circulation',
89         code                   => 'code1',
90         branchcode             => 'MPL',
91         name                   => 'B name for code1 circ',
92         is_html                => 0,
93         title                  => 'MPL title for code1 email',
94         content                => 'MPL content for code1 email',
95         message_transport_type => 'email',
96     },
97 ];
98
99 my $sth = $dbh->prepare(
100 q|INSERT INTO letter(module, code, branchcode, name, title, content, message_transport_type) VALUES (?, ?, ?, ?, ?, ?, ?)|
101 );
102 for my $l (@$letters) {
103     $sth->execute( $l->{module}, $l->{code}, $l->{branchcode}, $l->{name},
104         $l->{title}, $l->{content}, $l->{message_transport_type} );
105
106     # GetLettersAvailableForALibrary does not return these fields
107     delete $l->{title};
108     delete $l->{content};
109     delete $l->{is_html};
110     delete $l->{message_transport_type};
111 }
112
113 my $available_letters;
114 $available_letters =
115   C4::Letters::GetLettersAvailableForALibrary( { module => 'circulation' } );
116 is( scalar(@$available_letters),
117     3, 'There should be 3 default letters for circulation (3 distinct codes)' );
118
119 $available_letters = C4::Letters::GetLettersAvailableForALibrary(
120     { module => 'circulation', branchcode => '' } );
121 is( scalar(@$available_letters), 3,
122 'There should be 3 default letters for circulation (3 distinct codes), branchcode=""'
123 );
124 is_deeply( $available_letters->[0],
125     $letters->[2], 'The letters should be sorted by name (A)' );
126 is_deeply( $available_letters->[1],
127     $letters->[0], 'The letters should be sorted by name (B)' );
128 is_deeply( $available_letters->[2],
129     $letters->[3], 'The letters should be sorted by name (C)' );
130
131 $available_letters = C4::Letters::GetLettersAvailableForALibrary(
132     { module => 'circulation', branchcode => 'CPL' } );
133 is( scalar(@$available_letters), 3,
134 'There should be 3 default letters for circulation (3 distinct codes), branchcode="CPL"'
135 );
136 is_deeply( $available_letters->[0],
137     $letters->[6], 'The letters should be sorted by name (A)' );
138 is_deeply( $available_letters->[1],
139     $letters->[5], 'The letters should be sorted by name (B)' );
140 is_deeply( $available_letters->[2],
141     $letters->[3], 'The letters should be sorted by name (C)' );
142
143 $available_letters = C4::Letters::GetLettersAvailableForALibrary(
144     { module => 'circulation', branchcode => 'MPL' } );
145 is( scalar(@$available_letters), 3,
146 'There should be 3 default letters for circulation (3 distinct codes), branchcode="CPL"'
147 );
148 is_deeply( $available_letters->[0],
149     $letters->[2], 'The letters should be sorted by name (A)' );
150 is_deeply( $available_letters->[1],
151     $letters->[7], 'The letters should be sorted by name (B)' );
152 is_deeply( $available_letters->[2],
153     $letters->[3], 'The letters should be sorted by name (C)' );
154
155 my $letters_by_module = C4::Letters::GetLetters( { module => 'circulation' } );
156 is( scalar(@$letters_by_module),
157     3, '3 different letter codes exist for circulation' );
158
159 my $letters_by_branchcode = C4::Letters::GetLetters( { branchcode => 'CPL' } );
160 is( scalar(@$letters_by_branchcode),
161     2, '2 different letter codes exist for CPL' );
162
163 # On the way, we test DelLetter
164 is(
165     C4::Letters::DelLetter(
166         { module => 'cataloguing', code => 'code1', branchcode => 'MPL' }
167     ),
168     '0E0',
169     'No letter exist for MPL cat/code1'
170 );
171 is(
172     C4::Letters::DelLetter(
173         { module => 'circulation', code => 'code1', branchcode => '' }
174     ),
175     2,
176     '2 default letters existed for circ/code1 (1 for email and 1 for sms)'
177 );
178 is(
179     C4::Letters::DelLetter(
180         {
181             module     => 'circulation',
182             code       => 'code1',
183             branchcode => 'CPL',
184             mtt        => 'email'
185         }
186     ),
187     1,
188     '1 letter existed for CPL circ/code1/email'
189 );
190 is(
191     C4::Letters::DelLetter(
192         { module => 'circulation', code => 'code1', branchcode => 'MPL' }
193     ),
194     1,
195     '1 letter existed for MPL circ/code1'
196 );