Passed
Push — master ( f02495...4136df )
by Alexander
01:44
created

CarouselTest::testContainerOptions()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 48
Code Lines 33

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 33
nc 1
nop 0
dl 0
loc 48
rs 9.392
c 1
b 0
f 0
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Yiisoft\Yii\Bootstrap4\Tests;
6
7
use Yiisoft\Yii\Bootstrap4\Carousel;
8
9
/**
10
 * Tests for Carousel widget.
11
 *
12
 * CarouselTest.
13
 */
14
final class CarouselTest extends TestCase
15
{
16
    public function testContainerOptions(): void
17
    {
18
        Carousel::counter(0);
19
20
        $html = Carousel::widget()
21
            ->items([
22
                [
23
                    'content' => '<img src="https://via.placeholder.com/800x400?text=First+slide" class="d-block w-100">',
24
                    'caption' => '<h5>First slide label</h5><p>Nulla vitae elit libero, a pharetra augue mollis interdum.</p>',
25
                    'captionOptions' => [
26
                        'class' => ['d-none', 'd-md-block']
27
                    ]
28
                ],
29
                [
30
                    'content' => '<img src="https://via.placeholder.com/800x400?text=Second+slide" class="d-block w-100">',
31
                    'caption' => '<h5>Second slide label</h5><p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>',
32
                    'captionOptions' => [
33
                        'class' => ['d-none', 'd-md-block']
34
                    ]
35
                ],
36
                [
37
                    'content' => '<img src="https://via.placeholder.com/800x400?text=Third+slide" class="d-block w-100">',
38
                    'caption' => '<h5>Third slide label</h5><p>Praesent commodo cursus magna, vel scelerisque nisl consectetur.</p>',
39
                    'captionOptions' => [
40
                        'class' => ['d-none', 'd-md-block']
41
                    ]
42
                ]
43
            ])
44
            ->render();
45
46
        $expected = <<<HTML
47
<div id="w0-carousel" class="carousel slide" data-ride="carousel">
48
<ol class="carousel-indicators"><li class="active" data-target="#w0-carousel" data-slide-to="0"></li>
49
<li data-target="#w0-carousel" data-slide-to="1"></li>
50
<li data-target="#w0-carousel" data-slide-to="2"></li></ol>
51
<div class="carousel-inner"><div class="carousel-item active"><img src="https://via.placeholder.com/800x400?text=First+slide" class="d-block w-100">
52
<div class="d-none d-md-block carousel-caption"><h5>First slide label</h5><p>Nulla vitae elit libero, a pharetra augue mollis interdum.</p></div></div>
53
<div class="carousel-item"><img src="https://via.placeholder.com/800x400?text=Second+slide" class="d-block w-100">
54
<div class="d-none d-md-block carousel-caption"><h5>Second slide label</h5><p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p></div></div>
55
<div class="carousel-item"><img src="https://via.placeholder.com/800x400?text=Third+slide" class="d-block w-100">
56
<div class="d-none d-md-block carousel-caption"><h5>Third slide label</h5><p>Praesent commodo cursus magna, vel scelerisque nisl consectetur.</p></div></div></div>
57
<a class="carousel-control-prev" href="#w0-carousel" data-slide="prev" role="button"><span class="carousel-control-prev-icon" aria-hidden="true"></span><span class="sr-only">Previous</span></a>
58
<a class="carousel-control-next" href="#w0-carousel" data-slide="next" role="button"><span class="carousel-control-next-icon" aria-hidden="true"></span><span class="sr-only">Next</span></a>
59
</div>
60
61
HTML;
62
63
        $this->assertEqualsWithoutLE($expected, $html);
64
    }
65
66
    public function testCrossfade(): void
67
    {
68
        Carousel::counter(0);
69
70
        $html = Carousel::widget()
71
            ->crossfade(true)
72
            ->items([
73
                [
74
                    'content' => '<img src="https://via.placeholder.com/800x400?text=First+slide" class="d-block w-100">',
75
                    'caption' => '<h5>First slide label</h5><p>Nulla vitae elit libero, a pharetra augue mollis interdum.</p>',
76
                    'captionOptions' => [
77
                        'class' => ['d-none', 'd-md-block']
78
                    ]
79
                ],
80
                [
81
                    'content' => '<img src="https://via.placeholder.com/800x400?text=Second+slide" class="d-block w-100">',
82
                    'caption' => '<h5>Second slide label</h5><p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>',
83
                    'captionOptions' => [
84
                        'class' => ['d-none', 'd-md-block']
85
                    ]
86
                ],
87
                [
88
                    'content' => '<img src="https://via.placeholder.com/800x400?text=Third+slide" class="d-block w-100">',
89
                    'caption' => '<h5>Third slide label</h5><p>Praesent commodo cursus magna, vel scelerisque nisl consectetur.</p>',
90
                    'captionOptions' => [
91
                        'class' => ['d-none', 'd-md-block']
92
                    ]
93
                ]
94
            ])
95
            ->render();
96
97
        $this->assertStringContainsString('class="carousel slide carousel-fade"', $html);
98
    }
99
}
100