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