Passed
Pull Request — master (#305)
by Wilmer
03:39
created

AlertTest::testFlashIntegrity()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 16
Code Lines 9

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 9
dl 0
loc 16
rs 9.9666
c 0
b 0
f 0
cc 1
nc 1
nop 0
1
<?php
2
3
declare(strict_types=1);
4
5
namespace tests\unit\widgets;
6
7
use app\widgets\Alert;
8
use Yii;
9
10
final class AlertTest extends \Codeception\Test\Unit
11
{
12
    public function testSingleErrorMessage(): void
13
    {
14
        $message = 'This is an error message';
15
16
        Yii::$app->session->setFlash('error', $message);
0 ignored issues
show
Bug introduced by
The property session does not seem to exist on __Application.
Loading history...
Bug introduced by
The method setFlash() does not exist on null. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

16
        Yii::$app->session->/** @scrutinizer ignore-call */ 
17
                            setFlash('error', $message);

This check looks for calls to methods that do not seem to exist on a given type. It looks for the method on the type itself as well as in inherited classes or implemented interfaces.

This is most likely a typographical error or the method has been renamed.

Loading history...
17
18
        $renderingResult = Alert::widget();
19
20
        verify($renderingResult)->stringContainsString($message);
21
        verify($renderingResult)->stringContainsString('alert-danger');
22
23
        verify($renderingResult)->stringNotContainsString('alert-success');
24
        verify($renderingResult)->stringNotContainsString('alert-info');
25
        verify($renderingResult)->stringNotContainsString('alert-warning');
26
    }
27
28
    public function testMultipleErrorMessages(): void
29
    {
30
        $firstMessage = 'This is the first error message';
31
        $secondMessage = 'This is the second error message';
32
33
        Yii::$app->session->setFlash('error', [$firstMessage, $secondMessage]);
0 ignored issues
show
Bug introduced by
The property session does not seem to exist on __Application.
Loading history...
34
35
        $renderingResult = Alert::widget();
36
37
        verify($renderingResult)->stringContainsString($firstMessage);
38
        verify($renderingResult)->stringContainsString($secondMessage);
39
        verify($renderingResult)->stringContainsString('alert-danger');
40
41
        verify($renderingResult)->stringNotContainsString('alert-success');
42
        verify($renderingResult)->stringNotContainsString('alert-info');
43
        verify($renderingResult)->stringNotContainsString('alert-warning');
44
    }
45
46
    public function testSingleDangerMessage(): void
47
    {
48
        $message = 'This is a danger message';
49
50
        Yii::$app->session->setFlash('danger', $message);
0 ignored issues
show
Bug introduced by
The property session does not seem to exist on __Application.
Loading history...
51
52
        $renderingResult = Alert::widget();
53
54
        verify($renderingResult)->stringContainsString($message);
55
        verify($renderingResult)->stringContainsString('alert-danger');
56
57
        verify($renderingResult)->stringNotContainsString('alert-success');
58
        verify($renderingResult)->stringNotContainsString('alert-info');
59
        verify($renderingResult)->stringNotContainsString('alert-warning');
60
    }
61
62
    public function testMultipleDangerMessages(): void
63
    {
64
        $firstMessage = 'This is the first danger message';
65
        $secondMessage = 'This is the second danger message';
66
67
        Yii::$app->session->setFlash('danger', [$firstMessage, $secondMessage]);
0 ignored issues
show
Bug introduced by
The property session does not seem to exist on __Application.
Loading history...
68
69
        $renderingResult = Alert::widget();
70
71
        verify($renderingResult)->stringContainsString($firstMessage);
72
        verify($renderingResult)->stringContainsString($secondMessage);
73
        verify($renderingResult)->stringContainsString('alert-danger');
74
75
        verify($renderingResult)->stringNotContainsString('alert-success');
76
        verify($renderingResult)->stringNotContainsString('alert-info');
77
        verify($renderingResult)->stringNotContainsString('alert-warning');
78
    }
79
80
    public function testSingleSuccessMessage(): void
81
    {
82
        $message = 'This is a success message';
83
84
        Yii::$app->session->setFlash('success', $message);
0 ignored issues
show
Bug introduced by
The property session does not seem to exist on __Application.
Loading history...
85
86
        $renderingResult = Alert::widget();
87
88
        verify($renderingResult)->stringContainsString($message);
89
        verify($renderingResult)->stringContainsString('alert-success');
90
91
        verify($renderingResult)->stringNotContainsString('alert-danger');
92
        verify($renderingResult)->stringNotContainsString('alert-info');
93
        verify($renderingResult)->stringNotContainsString('alert-warning');
94
    }
95
96
    public function testMultipleSuccessMessages(): void
97
    {
98
        $firstMessage = 'This is the first danger message';
99
        $secondMessage = 'This is the second danger message';
100
101
        Yii::$app->session->setFlash('success', [$firstMessage, $secondMessage]);
0 ignored issues
show
Bug introduced by
The property session does not seem to exist on __Application.
Loading history...
102
103
        $renderingResult = Alert::widget();
104
105
        verify($renderingResult)->stringContainsString($firstMessage);
106
        verify($renderingResult)->stringContainsString($secondMessage);
107
        verify($renderingResult)->stringContainsString('alert-success');
108
109
        verify($renderingResult)->stringNotContainsString('alert-danger');
110
        verify($renderingResult)->stringNotContainsString('alert-info');
111
        verify($renderingResult)->stringNotContainsString('alert-warning');
112
    }
113
114
    public function testSingleInfoMessage(): void
115
    {
116
        $message = 'This is an info message';
117
118
        Yii::$app->session->setFlash('info', $message);
0 ignored issues
show
Bug introduced by
The property session does not seem to exist on __Application.
Loading history...
119
120
        $renderingResult = Alert::widget();
121
122
        verify($renderingResult)->stringContainsString($message);
123
        verify($renderingResult)->stringContainsString('alert-info');
124
125
        verify($renderingResult)->stringNotContainsString('alert-danger');
126
        verify($renderingResult)->stringNotContainsString('alert-success');
127
        verify($renderingResult)->stringNotContainsString('alert-warning');
128
    }
129
130
    public function testMultipleInfoMessages(): void
131
    {
132
        $firstMessage = 'This is the first info message';
133
        $secondMessage = 'This is the second info message';
134
135
        Yii::$app->session->setFlash('info', [$firstMessage, $secondMessage]);
0 ignored issues
show
Bug introduced by
The property session does not seem to exist on __Application.
Loading history...
136
137
        $renderingResult = Alert::widget();
138
139
        verify($renderingResult)->stringContainsString($firstMessage);
140
        verify($renderingResult)->stringContainsString($secondMessage);
141
        verify($renderingResult)->stringContainsString('alert-info');
142
143
        verify($renderingResult)->stringNotContainsString('alert-danger');
144
        verify($renderingResult)->stringNotContainsString('alert-success');
145
        verify($renderingResult)->stringNotContainsString('alert-warning');
146
    }
147
148
    public function testSingleWarningMessage(): void
149
    {
150
        $message = 'This is a warning message';
151
152
        Yii::$app->session->setFlash('warning', $message);
0 ignored issues
show
Bug introduced by
The property session does not seem to exist on __Application.
Loading history...
153
154
        $renderingResult = Alert::widget();
155
156
        verify($renderingResult)->stringContainsString($message);
157
        verify($renderingResult)->stringContainsString('alert-warning');
158
159
        verify($renderingResult)->stringNotContainsString('alert-danger');
160
        verify($renderingResult)->stringNotContainsString('alert-success');
161
        verify($renderingResult)->stringNotContainsString('alert-info');
162
    }
163
164
    public function testMultipleWarningMessages(): void
165
    {
166
        $firstMessage = 'This is the first warning message';
167
        $secondMessage = 'This is the second warning message';
168
169
        Yii::$app->session->setFlash('warning', [$firstMessage, $secondMessage]);
0 ignored issues
show
Bug introduced by
The property session does not seem to exist on __Application.
Loading history...
170
171
        $renderingResult = Alert::widget();
172
173
        verify($renderingResult)->stringContainsString($firstMessage);
174
        verify($renderingResult)->stringContainsString($secondMessage);
175
        verify($renderingResult)->stringContainsString('alert-warning');
176
177
        verify($renderingResult)->stringNotContainsString('alert-danger');
178
        verify($renderingResult)->stringNotContainsString('alert-success');
179
        verify($renderingResult)->stringNotContainsString('alert-info');
180
    }
181
182
    public function testSingleMixedMessages(): void
183
    {
184
        $errorMessage = 'This is an error message';
185
        $dangerMessage = 'This is a danger message';
186
        $successMessage = 'This is a success message';
187
        $infoMessage = 'This is a info message';
188
        $warningMessage = 'This is a warning message';
189
190
        Yii::$app->session->setFlash('error', $errorMessage);
0 ignored issues
show
Bug introduced by
The property session does not seem to exist on __Application.
Loading history...
191
        Yii::$app->session->setFlash('danger', $dangerMessage);
192
        Yii::$app->session->setFlash('success', $successMessage);
193
        Yii::$app->session->setFlash('info', $infoMessage);
194
        Yii::$app->session->setFlash('warning', $warningMessage);
195
196
        $renderingResult = Alert::widget();
197
198
        verify($renderingResult)->stringContainsString($errorMessage);
199
        verify($renderingResult)->stringContainsString($dangerMessage);
200
        verify($renderingResult)->stringContainsString($successMessage);
201
        verify($renderingResult)->stringContainsString($infoMessage);
202
        verify($renderingResult)->stringContainsString($warningMessage);
203
204
        verify($renderingResult)->stringContainsString('alert-danger');
205
        verify($renderingResult)->stringContainsString('alert-success');
206
        verify($renderingResult)->stringContainsString('alert-info');
207
        verify($renderingResult)->stringContainsString('alert-warning');
208
    }
209
210
    public function testMultipleMixedMessages(): void
211
    {
212
        $firstErrorMessage = 'This is the first error message';
213
        $secondErrorMessage = 'This is the second error message';
214
        $firstDangerMessage = 'This is the first danger message';
215
        $secondDangerMessage = 'This is the second';
216
        $firstSuccessMessage = 'This is the first success message';
217
        $secondSuccessMessage = 'This is the second success message';
218
        $firstInfoMessage = 'This is the first info message';
219
        $secondInfoMessage = 'This is the second info message';
220
        $firstWarningMessage = 'This is the first warning message';
221
        $secondWarningMessage = 'This is the second warning message';
222
223
        Yii::$app->session->setFlash('error', [$firstErrorMessage, $secondErrorMessage]);
0 ignored issues
show
Bug introduced by
The property session does not seem to exist on __Application.
Loading history...
224
        Yii::$app->session->setFlash('danger', [$firstDangerMessage, $secondDangerMessage]);
225
        Yii::$app->session->setFlash('success', [$firstSuccessMessage, $secondSuccessMessage]);
226
        Yii::$app->session->setFlash('info', [$firstInfoMessage, $secondInfoMessage]);
227
        Yii::$app->session->setFlash('warning', [$firstWarningMessage, $secondWarningMessage]);
228
229
        $renderingResult = Alert::widget();
230
231
        verify($renderingResult)->stringContainsString($firstErrorMessage);
232
        verify($renderingResult)->stringContainsString($secondErrorMessage);
233
        verify($renderingResult)->stringContainsString($firstDangerMessage);
234
        verify($renderingResult)->stringContainsString($secondDangerMessage);
235
        verify($renderingResult)->stringContainsString($firstSuccessMessage);
236
        verify($renderingResult)->stringContainsString($secondSuccessMessage);
237
        verify($renderingResult)->stringContainsString($firstInfoMessage);
238
        verify($renderingResult)->stringContainsString($secondInfoMessage);
239
        verify($renderingResult)->stringContainsString($firstWarningMessage);
240
        verify($renderingResult)->stringContainsString($secondWarningMessage);
241
242
        verify($renderingResult)->stringContainsString('alert-danger');
243
        verify($renderingResult)->stringContainsString('alert-success');
244
        verify($renderingResult)->stringContainsString('alert-info');
245
        verify($renderingResult)->stringContainsString('alert-warning');
246
    }
247
248
    public function testFlashIntegrity(): void
249
    {
250
        $errorMessage = 'This is an error message';
251
        $unrelatedMessage = 'This is a message that is not related to the alert widget';
252
253
        Yii::$app->session->setFlash('error', $errorMessage);
0 ignored issues
show
Bug introduced by
The property session does not seem to exist on __Application.
Loading history...
254
        Yii::$app->session->setFlash('unrelated', $unrelatedMessage);
255
256
        Alert::widget();
257
258
        // Simulate redirect
259
        Yii::$app->session->close();
260
        Yii::$app->session->open();
261
262
        verify(Yii::$app->session->getFlash('error'))->empty();
263
        verify(Yii::$app->session->getFlash('unrelated'))->equals($unrelatedMessage);
264
    }
265
}
266