Passed
Pull Request — master (#305)
by Wilmer
14:19
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
namespace tests\unit\widgets;
4
5
use app\widgets\Alert;
6
use Yii;
7
8
class AlertTest extends \Codeception\Test\Unit
9
{
10
    public function testSingleErrorMessage()
11
    {
12
        $message = 'This is an error message';
13
14
        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

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