Passed
Push — master ( 62264f...226050 )
by Petr
08:16
created

StyleTest   A

Complexity

Total Complexity 5

Size/Duplication

Total Lines 54
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
wmc 5
eloc 33
c 0
b 0
f 0
dl 0
loc 54
rs 10
1
<?php
2
3
namespace coreTests;
4
5
6
use CommonTestClass;
7
use kalanis\kw_connect\arrays\Row;
8
use kalanis\kw_connect\core\ConnectException;
9
use kalanis\kw_connect\core\Interfaces\IRow;
10
use kalanis\kw_table\core\Table\AStyle;
11
use kalanis\kw_table\core\Table\Rules;
12
use kalanis\kw_table\core\Table\TSourceName;
13
14
15
class StyleTest extends CommonTestClass
16
{
17
    public function testSourceName(): void
18
    {
19
        $lib = new XSourceName();
20
        $this->assertEquals('', $lib->getSourceName());
21
        $lib->setSourceName('id');
22
        $this->assertEquals('id', $lib->getSourceName());
23
    }
24
25
    public function testAttributes(): void
26
    {
27
        $lib = new XStyle();
28
        $lib->classArray([
29
            'foo' => new Rules\Exact(2), // class will be set only if source matches rule
30
            'bar' => null, // class will be set every time
31
            'value:name' => new Rules\Exact('def'), // class will be read from external value under rule // source: name; is "def"; put that in class
32
        ]);
33
        $lib->setSource('size');
34
        $this->assertEquals('class="bar"', $lib->getAttributes($this->getRow()));
35
        $lib->setSource('id');
36
        $this->assertEquals('class="foo bar"', $lib->getAttributes($this->getRow()));
37
        $lib->setSource('name');
38
        $this->assertEquals('class="bar def"', $lib->getAttributes($this->getRow()));
39
        iterator_to_array($lib);
40
    }
41
42
    public function testStyles(): void
43
    {
44
        $lib = new XStyle();
45
        $lib->style('foo', new Rules\Exact(2)); // class will be set only if source matches rule
46
        $lib->style('bar', null); // class will be set every time
47
        $lib->setSource('size');
48
        $this->assertEquals(' style="bar"', $lib->getCellStyle($this->getRow()));
49
        $lib->setSource('id');
50
        $this->assertEquals(' style="foo; bar"', $lib->getCellStyle($this->getRow()));
51
    }
52
53
    public function testStyleColors(): void
54
    {
55
        $lib = new XStyle();
56
        $lib->colorizeArray([
57
            'white' => new Rules\Exact(2),
58
            'gray' => null,
59
        ]);
60
        $lib->setSource('size');
61
        $this->assertEquals(' style="background-color: gray"', $lib->getCellStyle($this->getRow()));
62
        $lib->setSource('id');
63
        $this->assertEquals(' style="background-color: white; background-color: gray"', $lib->getCellStyle($this->getRow()));
64
    }
65
66
    protected function getRow(): Row
67
    {
68
        return new Row(['id' => 2, 'name' => 'def', 'desc' => '<lang_to_"convert">', 'size' => 456, 'enabled' => 0]);
69
    }
70
}
71
72
73
class XStyle extends AStyle
74
{
75
    use TSourceName;
76
77
    public function setSource(string $source): void
78
    {
79
        $this->sourceName = $source;
80
    }
81
}
82
83
84
class XSourceName
85
{
86
    use TSourceName;
87
}
88