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

XRenderField   A

Complexity

Total Complexity 7

Size/Duplication

Total Lines 33
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 7
eloc 5
c 1
b 0
f 0
dl 0
loc 33
rs 10
1
<?php
2
3
use kalanis\kw_connect\core\Interfaces\IFilterFactory;
4
use kalanis\kw_connect\core\Interfaces\IIterableConnector;
5
use kalanis\kw_table\core\Interfaces\Form\IField;
6
use kalanis\kw_table\core\Interfaces\Table\IFilterMulti;
7
use kalanis\kw_table\core\Interfaces\Table\IFilterRender;
8
use PHPUnit\Framework\TestCase;
9
10
11
/**
12
 * Class CommonTestClass
13
 * The structure for mocking and configuration seems so complicated, but it's necessary to let it be totally idiot-proof
14
 */
15
class CommonTestClass extends TestCase
16
{
17
    protected function basicData(): array
18
    {
19
        return [
20
            ['id' => 1, 'name' => 'abc', 'desc' => 'fill', 'size' => 123, 'enabled' => 1],
21
            ['id' => 2, 'name' => 'def', 'desc' => 'dude', 'size' => 456, 'enabled' => 0],
22
            ['id' => 3, 'name' => 'ghi', 'desc' => 'know', 'size' => 789, 'enabled' => 1],
23
            ['id' => 4, 'name' => 'jkl', 'desc' => 'hate', 'size' => 123, 'enabled' => 0],
24
            ['id' => 5, 'name' => 'mno', 'desc' => 'call', 'size' => 456, 'enabled' => 1],
25
            ['id' => 6, 'name' => 'pqr', 'desc' => 'that', 'size' => 789, 'enabled' => 0],
26
            ['id' => 7, 'name' => 'stu', 'desc' => 'life', 'size' => 321, 'enabled' => 0],
27
            ['id' => 8, 'name' => 'vwx', 'desc' => 'felt', 'size' => 654, 'enabled' => 1],
28
            ['id' => 9, 'name' => 'yz-', 'desc' => 'love', 'size' => 987, 'enabled' => 1],
29
        ];
30
    }
31
}
32
33
34
class XField implements IField
35
{
36
    public function setAlias(string $alias): void
37
    {
38
    }
39
40
    public function add(): void
41
    {
42
    }
43
44
    public function setAttributes(array $attributes): void
45
    {
46
    }
47
48
    public function setDataSourceConnector(IIterableConnector $dataSource): void
49
    {
50
    }
51
52
    public function getFilterAction(): string
53
    {
54
        return IFilterFactory::ACTION_EXACT;
55
    }
56
}
57
58
59
/**
60
 * Class XRenderField
61
 * When it's necessary to have own render output - callback and multiple input
62
 */
63
class XRenderField implements IField, IFilterRender
64
{
65
    protected $whatReturn = '';
66
67
    public function __construct($whatReturn = '')
68
    {
69
        $this->whatReturn = $whatReturn;
70
    }
71
72
    public function setAlias(string $alias): void
73
    {
74
    }
75
76
    public function add(): void
77
    {
78
    }
79
80
    public function setAttributes(array $attributes): void
81
    {
82
    }
83
84
    public function setDataSourceConnector(IIterableConnector $dataSource): void
85
    {
86
    }
87
88
    public function getFilterAction(): string
89
    {
90
        return IFilterFactory::ACTION_EXACT;
91
    }
92
93
    public function renderContent(): string
94
    {
95
        return $this->whatReturn;
96
    }
97
}
98
99
100
/**
101
 * Class XRenderMultiField
102
 * usually multiple fields which behaves as one
103
 */
104
class XRenderMultiField implements IField, IFilterRender, IFilterMulti
105
{
106
    protected $whatReturn = '';
107
    protected $pairs = [];
108
109
    public function __construct($whatReturn = '', $pairs = [])
110
    {
111
        $this->whatReturn = $whatReturn;
112
        $this->pairs = $pairs;
113
    }
114
115
    public function setAlias(string $alias): void
116
    {
117
    }
118
119
    public function add(): void
120
    {
121
    }
122
123
    public function setAttributes(array $attributes): void
124
    {
125
    }
126
127
    public function setDataSourceConnector(IIterableConnector $dataSource): void
128
    {
129
    }
130
131
    public function getFilterAction(): string
132
    {
133
        return IFilterFactory::ACTION_EXACT;
134
    }
135
136
    public function renderContent(): string
137
    {
138
        return $this->whatReturn;
139
    }
140
141
    public function getPairs(): array
142
    {
143
        return $this->pairs;
144
    }
145
}
146