SetupTest::testErrorSetWrongAlertLibrary()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 2
nc 1
nop 0
dl 0
loc 4
rs 10
c 1
b 0
f 0
1
<?php
2
3
namespace Jaxon\Dialogs\Tests\TestDialog;
4
5
require_once __DIR__ . '/../src/dialog.php';
6
7
use Jaxon\Jaxon;
8
use Jaxon\Dialogs\DialogPlugin;
9
use Jaxon\Dialogs\Dialog\Library\Alert;
10
use Jaxon\Dialogs\Dialog\Library\Alertify;
11
use Jaxon\Dialogs\Dialog\Library\Bootbox;
12
use Jaxon\Exception\SetupException;
13
use Jaxon\Utils\Http\UriException;
14
use PHPUnit\Framework\TestCase;
15
16
use ClassWithInterface;
17
use Dialog;
18
use TestDialogLibrary;
19
20
use function get_class;
21
use function Jaxon\jaxon;
22
use function Jaxon\Dialogs\dialog;
23
use function Jaxon\Dialogs\_register;
24
25
class SetupTest extends TestCase
26
{
27
    /**
28
     * @throws SetupException
29
     */
30
    public function setUp(): void
31
    {
32
        _register();
33
        jaxon()->setOption('core.prefix.class', '');
34
        jaxon()->setOption('core.request.uri', 'http://example.test/path');
35
        jaxon()->register(Jaxon::CALLABLE_CLASS, Dialog::class);
36
    }
37
38
    /**
39
     * @throws SetupException
40
     */
41
    public function tearDown(): void
42
    {
43
        jaxon()->reset();
44
        parent::tearDown();
45
    }
46
47
    public function testDialogSettings()
48
    {
49
        $this->assertEquals('', dialog()->getConfirmLibrary()->getName());
50
        $this->assertEquals(Alert::class, get_class(dialog()->getConfirmLibrary()));
51
        $this->assertEquals(Alert::class, get_class(dialog()->getAlertLibrary()));
52
        $this->assertEquals(null, dialog()->getModalLibrary());
53
54
        jaxon()->setAppOptions([
55
            'modal' => 'alertify',
56
            'alert' => 'alertify',
57
            'confirm' => 'alertify',
58
        ], 'dialogs.default');
59
        $this->assertEquals(Alertify::class, get_class(dialog()->getConfirmLibrary()));
60
        $this->assertEquals(Alertify::class, get_class(dialog()->getAlertLibrary()));
61
        $this->assertEquals(Alertify::class, get_class(dialog()->getModalLibrary()));
0 ignored issues
show
Bug introduced by
It seems like dialog()->getModalLibrary() can also be of type null; however, parameter $object of get_class() does only seem to accept object, maybe add an additional type check? ( Ignorable by Annotation )

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

61
        $this->assertEquals(Alertify::class, get_class(/** @scrutinizer ignore-type */ dialog()->getModalLibrary()));
Loading history...
62
63
        jaxon()->setAppOptions([
64
            'modal' => 'bootbox',
65
            'alert' => 'bootbox',
66
            'confirm' => 'bootbox',
67
        ], 'dialogs.default');
68
        $this->assertEquals(Bootbox::class, get_class(dialog()->getConfirmLibrary()));
69
        $this->assertEquals(Bootbox::class, get_class(dialog()->getAlertLibrary()));
70
        $this->assertEquals(Bootbox::class, get_class(dialog()->getModalLibrary()));
71
    }
72
73
    public function testDialogOptions()
74
    {
75
        jaxon()->app()->setup(__DIR__ . '/../config/dialog.php');
76
        $this->assertStringContainsString('toast-top-center', jaxon()->script());
77
78
        /** @var DialogPlugin */
79
        $xDialogPlugin = jaxon()->di()->g(DialogPlugin::class);
80
        $this->assertStringContainsString('5.0.0', $xDialogPlugin->getHash());
81
    }
82
83
    public function testDialogDefaultMethods()
84
    {
85
        dialog()->registerLibrary(TestDialogLibrary::class, TestDialogLibrary::NAME);
86
        // Registering a library twice should not cause any issue.
87
        dialog()->registerLibrary(TestDialogLibrary::class, TestDialogLibrary::NAME);
88
        jaxon()->setAppOption('dialogs.default.confirm', TestDialogLibrary::NAME);
89
        $xConfirmLibrary = dialog()->getConfirmLibrary();
90
        $this->assertEquals('', $xConfirmLibrary->getUri());
91
        $this->assertEquals('', $xConfirmLibrary->getJs());
92
        $this->assertEquals('', $xConfirmLibrary->getScript());
93
        $this->assertEquals('', $xConfirmLibrary->getJsCode()->sJs);
94
        $this->assertEquals('', $xConfirmLibrary->getJsCode()->sJsBefore);
95
        $this->assertEquals('', $xConfirmLibrary->getJsCode()->sJsAfter);
96
    }
97
98
    public function testExtDialogLibrary()
99
    {
100
        dialog()->registerLibrary(TestDialogLibrary::class, TestDialogLibrary::NAME);
101
        jaxon()->setAppOption('dialogs.default.confirm', TestDialogLibrary::NAME);
102
        $this->assertEquals(TestDialogLibrary::class, get_class(dialog()->getConfirmLibrary()));
103
    }
104
105
    public function testExtDialogLibraryConfigSet()
106
    {
107
        jaxon()->setAppOption('dialogs.lib.ext', [
108
            TestDialogLibrary::NAME => TestDialogLibrary::class,
109
        ]);
110
        jaxon()->setAppOption('dialogs.default.confirm', TestDialogLibrary::NAME);
111
        $this->assertEquals(TestDialogLibrary::class, get_class(dialog()->getConfirmLibrary()));
112
    }
113
114
    public function testExtDialogLibraryConfigFile()
115
    {
116
        jaxon()->app()->setup(__DIR__ . '/../config/ext.php');
117
        $this->assertEquals(TestDialogLibrary::class, get_class(dialog()->getConfirmLibrary()));
118
    }
119
120
    public function testDialogJsCode()
121
    {
122
        jaxon()->setAppOption('dialogs.lib.use', ['bootbox', 'alertify', 'cute']);
123
        $sJsCode = jaxon()->js();
124
        $this->assertStringContainsString('bootbox.min.js', $sJsCode);
125
        $this->assertStringContainsString('alertify.min.js', $sJsCode);
126
        $this->assertStringContainsString('cute-alert.js', $sJsCode);
127
    }
128
129
    public function testDialogCssCode()
130
    {
131
        jaxon()->setAppOption('dialogs.lib.use', ['alertify', 'cute']);
132
        $sCssCode = jaxon()->css();
133
        $this->assertStringContainsString('alertify.min.css', $sCssCode);
134
        $this->assertStringContainsString('cute-alert/style.css', $sCssCode);
135
    }
136
137
    /**
138
     * @throws UriException
139
     */
140
    public function testDialogScriptCode()
141
    {
142
        jaxon()->setAppOptions([
143
            'default' => [
144
                'modal' => 'alertify',
145
                'alert' => 'alertify',
146
                'confirm' => 'alertify',
147
            ],
148
            'lib' => [
149
                'use' => ['bootbox', 'cute', 'jalert'],
150
            ],
151
        ], 'dialogs');
152
153
        $sScriptCode = jaxon()->getScript();
154
        $this->assertStringContainsString("jaxon.dialog.register('alertify'", $sScriptCode);
155
        $this->assertStringContainsString("jaxon.dialog.register('bootbox'", $sScriptCode);
156
        $this->assertStringContainsString("jaxon.dialog.register('cute'", $sScriptCode);
157
        $this->assertStringContainsString("jaxon.dialog.register('jalert'", $sScriptCode);
158
    }
159
160
    /**
161
     * @throws UriException
162
     */
163
    public function testDialogScriptFile()
164
    {
165
        jaxon()->setOptions([
166
            'export' => true,
167
            'minify' => false,
168
            'file' => 'app',
169
            'dir' => __DIR__ . '/../js',
170
            'uri' => 'http://localhost',
171
        ], 'js.app');
172
        jaxon()->setAppOptions([
173
            'default' => [
174
                'modal' => 'alertify',
175
                'alert' => 'alertify',
176
                'confirm' => 'alertify',
177
            ],
178
            'lib' => [
179
                'use' => ['bootbox', 'cute', 'jalert'],
180
            ],
181
        ], 'dialogs');
182
183
        $sScriptCode = jaxon()->getScript();
184
        $this->assertStringNotContainsString("jaxon.dialog.register('alertify'", $sScriptCode);
185
        $this->assertStringNotContainsString("jaxon.dialog.register('bootbox'", $sScriptCode);
186
        $this->assertStringNotContainsString("jaxon.dialog.register('cute'", $sScriptCode);
187
        $this->assertStringNotContainsString("jaxon.dialog.register('jalert'", $sScriptCode);
188
189
        $this->assertStringContainsString('/js/alertify.js', $sScriptCode);
190
        $this->assertStringContainsString('/js/bootbox.js', $sScriptCode);
191
        $this->assertStringContainsString('/js/cute.js', $sScriptCode);
192
        $this->assertStringContainsString('/js/jalert.js', $sScriptCode);
193
    }
194
195
    /**
196
     * @throws UriException
197
     */
198
    public function testDialogScriptMinFile()
199
    {
200
        jaxon()->setOptions([
201
            'export' => true,
202
            'minify' => true,
203
            'file' => 'app',
204
            'dir' => __DIR__ . '/../js',
205
            'uri' => 'http://localhost',
206
        ], 'js.app');
207
        jaxon()->setAppOptions([
208
            'default' => [
209
                'modal' => 'alertify',
210
                'alert' => 'alertify',
211
                'confirm' => 'alertify',
212
            ],
213
            'lib' => [
214
                'use' => ['bootbox', 'cute', 'jalert'],
215
            ],
216
        ], 'dialogs');
217
218
        $sScriptCode = jaxon()->getScript();
219
        $this->assertStringNotContainsString("jaxon.dialog.register('alertify'", $sScriptCode);
220
        $this->assertStringNotContainsString("jaxon.dialog.register('bootbox'", $sScriptCode);
221
        $this->assertStringNotContainsString("jaxon.dialog.register('cute'", $sScriptCode);
222
        $this->assertStringNotContainsString("jaxon.dialog.register('jalert'", $sScriptCode);
223
224
        $this->assertStringContainsString('/js/alertify.min.js', $sScriptCode);
225
        $this->assertStringContainsString('/js/bootbox.min.js', $sScriptCode);
226
        $this->assertStringContainsString('/js/cute.min.js', $sScriptCode);
227
        $this->assertStringContainsString('/js/jalert.min.js', $sScriptCode);
228
    }
229
230
    public function testAlertifyLibrary()
231
    {
232
        jaxon()->setAppOption('dialogs.lib.use', ['alertify']);
233
234
        $this->assertStringContainsString('alertify.min.js', jaxon()->js());
235
        $this->assertStringContainsString('css/alertify.min.css', jaxon()->css());
236
        $this->assertStringContainsString('css/themes/default.min.css', jaxon()->css());
237
        $this->assertStringContainsString("jaxon.dialog.register('alertify'", jaxon()->script());
238
    }
239
240
    public function testBootboxLibrary()
241
    {
242
        jaxon()->setAppOption('dialogs.lib.use', ['bootbox']);
243
244
        $this->assertStringContainsString('bootbox.min.js', jaxon()->js());
245
        $this->assertStringContainsString("jaxon.dialog.register('bootbox'", jaxon()->script());
246
    }
247
248
    public function testBootstrap3Library()
249
    {
250
        jaxon()->setAppOption('dialogs.lib.use', ['bootstrap3']);
251
252
        $this->assertStringContainsString("jaxon.dialog.register('bootstrap3'", jaxon()->script());
253
    }
254
255
    public function testBootstrap4Library()
256
    {
257
        jaxon()->setAppOption('dialogs.lib.use', ['bootstrap4']);
258
259
        $this->assertStringContainsString("jaxon.dialog.register('bootstrap4'", jaxon()->script());
260
    }
261
262
    public function testBootstrap5Library()
263
    {
264
        jaxon()->setAppOption('dialogs.lib.use', ['bootstrap5']);
265
266
        $this->assertStringContainsString("jaxon.dialog.register('bootstrap5'", jaxon()->script());
267
    }
268
269
    public function testButterupLibrary()
270
    {
271
        jaxon()->setAppOption('dialogs.lib.use', ['butterup']);
272
273
        $this->assertStringContainsString('butterup.min.js', jaxon()->js());
274
        $this->assertStringContainsString('butterup.min.css', jaxon()->css());
275
        $this->assertStringContainsString("jaxon.dialog.register('butterup'", jaxon()->script());
276
    }
277
278
    public function testCuteAlertLibrary()
279
    {
280
        jaxon()->setAppOption('dialogs.lib.use', ['cute']);
281
282
        $this->assertStringContainsString('cute-alert/cute-alert.js', jaxon()->js());
283
        $this->assertStringContainsString('cute-alert/style.css', jaxon()->css());
284
        $this->assertStringContainsString("jaxon.dialog.register('cute'", jaxon()->script());
285
    }
286
287
    public function testIziToastLibrary()
288
    {
289
        jaxon()->setAppOption('dialogs.lib.use', ['izitoast']);
290
291
        $this->assertStringContainsString('js/iziToast.min.js', jaxon()->js());
292
        $this->assertStringContainsString('css/iziToast.min.css', jaxon()->css());
293
        $this->assertStringContainsString("jaxon.dialog.register('izitoast'", jaxon()->script());
294
    }
295
296
    public function testJAlertLibrary()
297
    {
298
        jaxon()->setAppOption('dialogs.lib.use', ['jalert']);
299
300
        $this->assertStringContainsString('jAlert.min.js', jaxon()->js());
301
        $this->assertStringContainsString('jAlert.min.css', jaxon()->css());
302
        $this->assertStringContainsString("jaxon.dialog.register('jalert'", jaxon()->script());
303
    }
304
305
    public function testJQueryConfirmLibrary()
306
    {
307
        jaxon()->setAppOption('dialogs.lib.use', ['jconfirm']);
308
309
        $this->assertStringContainsString('jquery-confirm.min.js', jaxon()->js());
310
        $this->assertStringContainsString('jquery-confirm.min.css', jaxon()->css());
311
        $this->assertStringContainsString("jaxon.dialog.register('jconfirm'", jaxon()->script());
312
    }
313
314
    public function testNotifyLibrary()
315
    {
316
        jaxon()->setAppOption('dialogs.lib.use', ['notify']);
317
318
        $this->assertStringContainsString('notify.min.js', jaxon()->js());
319
        $this->assertStringContainsString("jaxon.dialog.register('notify'", jaxon()->script());
320
    }
321
322
    public function testNotyLibrary()
323
    {
324
        jaxon()->setAppOption('dialogs.lib.use', ['noty']);
325
326
        $this->assertStringContainsString('noty.min.js', jaxon()->js());
327
        $this->assertStringContainsString('noty.min.css', jaxon()->css());
328
        $this->assertStringContainsString("jaxon.dialog.register('noty'", jaxon()->script());
329
    }
330
331
    public function testNotyfLibrary()
332
    {
333
        jaxon()->setAppOption('dialogs.lib.use', ['notyf']);
334
335
        $this->assertStringContainsString('notyf.min.js', jaxon()->js());
336
        $this->assertStringContainsString('notyf.min.css', jaxon()->css());
337
        $this->assertStringContainsString("jaxon.dialog.register('notyf'", jaxon()->script());
338
    }
339
340
    public function testQuantumLibrary()
341
    {
342
        jaxon()->setAppOption('dialogs.lib.use', ['quantum']);
343
344
        $this->assertStringContainsString('minfile/quantumalert.js', jaxon()->js());
345
        $this->assertStringContainsString("jaxon.dialog.register('quantum'", jaxon()->script());
346
    }
347
348
    public function testSweetAlertLibrary()
349
    {
350
        jaxon()->setAppOption('dialogs.lib.use', ['sweetalert']);
351
352
        $this->assertStringContainsString('sweetalert.min.js', jaxon()->js());
353
        $this->assertStringContainsString("jaxon.dialog.register('sweetalert'", jaxon()->script());
354
    }
355
356
    public function testTingleLibrary()
357
    {
358
        jaxon()->setAppOption('dialogs.lib.use', ['tingle']);
359
360
        $this->assertStringContainsString('tingle.min.js', jaxon()->js());
361
        $this->assertStringContainsString('tingle.min.css', jaxon()->css());
362
        $this->assertStringContainsString("jaxon.dialog.register('tingle'", jaxon()->script());
363
    }
364
365
    public function testToastrLibrary()
366
    {
367
        jaxon()->setAppOption('dialogs.lib.use', ['toastr']);
368
369
        $this->assertStringContainsString('toastr.min.js', jaxon()->js());
370
        $this->assertStringContainsString('build/toastr.min.css', jaxon()->css());
371
        $this->assertStringContainsString("jaxon.dialog.register('toastr'", jaxon()->script());
372
    }
373
374
    /**
375
     * @throws SetupException
376
     */
377
    public function testErrorRegisterIncorrectDialogClass()
378
    {
379
        $this->expectException(SetupException::class);
380
        dialog()->registerLibrary(Dialog::class, 'incorrect');
381
    }
382
383
    public function testErrorRegisterIncorrectDialogClassWithInterface()
384
    {
385
        $this->expectException(SetupException::class);
386
        dialog()->registerLibrary(ClassWithInterface::class, 'incorrect');
387
    }
388
389
    public function testErrorSetWrongAlertLibrary()
390
    {
391
        $this->expectException(SetupException::class);
392
        jaxon()->setAppOption('dialogs.default.alert', 'incorrect');
393
    }
394
395
    public function testErrorSetWrongModalLibrary()
396
    {
397
        $this->expectException(SetupException::class);
398
        jaxon()->setAppOption('dialogs.default.modal', 'incorrect');
399
    }
400
401
    public function testErrorSetWrongConfirmLibrary()
402
    {
403
        $this->expectException(SetupException::class);
404
        jaxon()->setAppOption('dialogs.default.confirm', 'incorrect');
405
    }
406
}
407