GitHub Access Token became invalid

It seems like the GitHub access token used for retrieving details about this repository from GitHub became invalid. This might prevent certain types of inspections from being run (in particular, everything related to pull requests).
Please ask an admin of your repository to re-new the access token on this website.
Completed
Push — master ( b864c9...ed9166 )
by butschster
12:41
created

FormElementTest   A

Complexity

Total Complexity 16

Size/Duplication

Total Lines 255
Duplicated Lines 9.41 %

Coupling/Cohesion

Components 1
Dependencies 6

Importance

Changes 0
Metric Value
dl 24
loc 255
c 0
b 0
f 0
rs 10
wmc 16
lcom 1
cbo 6

How to fix   Duplicated Code   

Duplicated Code

Duplicate code is one of the most pungent code smells. A rule that is often used is to re-structure code once it is duplicated in three or more places.

Common duplication problems, and corresponding solutions are:

1
<?php
2
3
use Mockery as m;
4
use SleepingOwl\Admin\Form\FormElement;
5
6
class FormElementTest extends TestCase
7
{
8
    public function tearDown()
9
    {
10
        m::close();
11
    }
12
13
    /**
14
     * @return FormElement|PHPUnit_Framework_MockObject_MockObject
15
     */
16
    protected function getElement()
17
    {
18
        return $this->getMockForAbstractClass(FormElement::class);
19
    }
20
21
    /**
22
     * FormDefault::__construct
23
     * FormDefault::getElements
24
     * FormDefault::getButtons.
25
     */
26
    public function test_constructor()
27
    {
28
        PackageManager::shouldReceive('load')->once();
29
        PackageManager::shouldReceive('add')->once();
30
31
        $this->getElement();
32
    }
33
34
    /**
35
     * @covers FormElement::initialize
36
     */
37
    public function test_initializable()
38
    {
39
        //\KodiCMS\Assets\Facades\Meta::shouldReceive('loadPackage')->once();
40
41
        $this->assertNull(
42
            $this->getElement()->initialize()
43
        );
44
    }
45
46
    /**
47
     * @covers FormElement::getValidationRules
48
     * @covers FormElement::addValidationRule
49
     */
50
    public function test_adds_validation_rule()
51
    {
52
        $element = $this->getElement();
53
54
        $this->assertEmpty($element->getValidationRules());
55
56
        $rule = 'some_rule';
57
58
        $this->assertEquals($element, $element->addValidationRule($rule));
59
        $this->assertEquals([$rule], $element->getValidationRules());
60
    }
61
62
    /**
63
     * @covers FormElement::getValidationRules
64
     * @covers FormElement::addValidationRule
65
     * @covers FormElement::addValidationMessage
66
     * @covers FormElement::getValidationMessages
67
     */
68
    public function test_adds_validation_rule_with_message()
69
    {
70
        $element = $this->getElement();
71
72
        $this->assertEmpty($element->getValidationRules());
73
        $this->assertEmpty($element->getValidationMessages());
74
75
        $element->addValidationRule(
76
            $rule = 'some_rule',
77
            $message = 'my custom message'
78
        );
79
80
        $this->assertEquals([$rule], $element->getValidationRules());
81
        $this->assertEquals([$rule => $message], $element->getValidationMessages());
82
    }
83
84
    /**
85
     * @covers FormElement::getValidationMessages
86
     * @covers FormElement::addValidationMessage
87
     */
88
    public function test_adds_validation_message()
89
    {
90
        $element = $this->getElement();
91
        $this->assertEmpty($element->getValidationMessages());
92
93
        $this->assertEquals(
94
            $element,
95
            $element->addValidationMessage(
96
                $rule = 'min:10',
97
                $message = 'my custom message'
98
            )
99
        );
100
101
        $element->addValidationMessage(
102
            $rule1 = 'string',
103
            $message1 = 'my custom message 1'
104
        );
105
106
        $this->assertEquals(['min' => $message, $rule1 => $message1], $element->getValidationMessages());
107
    }
108
109
    /**
110
     * @covers FormElement::getValidationMessages
111
     * @covers FormElement::setValidationMessages
112
     */
113
    public function test_sets_validation_messages()
114
    {
115
        $element = $this->getElement();
116
        $this->assertEmpty($element->getValidationMessages());
117
118
        $this->assertEquals(
119
            $element,
120
            $element->setValidationMessages([
121
                'min' => 'test',
122
                'max' => 'test',
123
            ])
124
        );
125
126
        $this->assertEquals(['min' => 'test', 'max' => 'test'], $element->getValidationMessages());
127
128
        $element->setValidationMessages([
129
            'max' => 'test',
130
        ]);
131
132
        $this->assertEquals(['max' => 'test'], $element->getValidationMessages());
133
    }
134
135
    /**
136
     * @covers FormElement::getValidationRules
137
     * @covers FormElement::setValidationRules
138
     */
139
    public function test_sets_validation_rules_as_array()
140
    {
141
        $element = $this->getElement();
142
143
        $this->assertEmpty($element->getValidationRules());
144
145
        $this->assertEquals(
146
            $element,
147
            $element->setValidationRules([
148
                'rule|one',
149
                'rule|two',
150
            ])
151
        );
152
153
        $this->assertEquals([
154
            'rule', 'one', 'rule', 'two',
155
        ], $element->getValidationRules());
156
    }
157
158
    /**
159
     * @covers FormElement::getValidationRules
160
     * @covers FormElement::setValidationRules
161
     */
162
    public function test_sets_validation_rules_as_arguments()
163
    {
164
        $element = $this->getElement();
165
166
        $this->assertEmpty($element->getValidationRules());
167
        $element->setValidationRules('rule|one', 'rule|two');
168
        $this->assertEquals([
169
            'rule', 'one', 'rule', 'two',
170
        ], $element->getValidationRules());
171
    }
172
173
    /**
174
     * @covers FormElement::setView
175
     */
176
    public function test_set_view()
177
    {
178
        $element = $this->getElement();
179
180
        $this->assertEquals($element, $element->setView('my.custom.view'));
181
182
        $this->assertEquals('my.custom.view', $element->getView());
183
    }
184
185
    /**
186
     * @covers FormElement::getModel
187
     * @covers FormElement::setModel
188
     */
189
    public function test_get_and_set_model()
190
    {
191
        $element = $this->getElement();
192
        $this->assertEmpty($element->getModel());
193
194
        $model = m::mock(\Illuminate\Database\Eloquent\Model::class);
195
196
        $this->assertEquals($element, $element->setModel($model));
197
        $this->assertEquals($model, $element->getModel());
198
    }
199
200
    /**
201
     * @covers FormElement::toArray
202
     */
203
    public function test_is_arrayable()
204
    {
205
        $array = $this->getElement()->toArray();
206
        $this->assertTrue(is_array($array));
207
        $this->assertEquals(['value', 'readonly', 'model'], array_keys($array));
208
    }
209
210
    /**
211
     * @covers FormElement::render
212
     */
213
    public function test_render()
214
    {
215
        $template = m::mock(\SleepingOwl\Admin\Contracts\TemplateInterface::class);
216
        $template->shouldReceive('view')->andReturn($view = m::mock(\Illuminate\Contracts\View\View::class));
217
218
        $this->app->instance('sleeping_owl.template', $template);
219
220
        $this->assertEquals($view, $this->getElement()->render());
221
    }
222
223
    /**
224
     * @covers FormElement::__toString
225
     */
226
    public function test_converts_into_string()
227
    {
228
        $template = m::mock(\SleepingOwl\Admin\Contracts\TemplateInterface::class);
229
        $template->shouldReceive('view->__toString')->andReturn('hello world');
230
231
        $this->app->instance('sleeping_owl.template', $template);
232
233
        $this->assertEquals('hello world', (string) $this->getElement());
234
    }
235
236
    /**
237
     * @covers FormElement::isReadonly
238
     * @covers FormElement::setReadonly
239
     */
240
    public function test_readOnly()
241
    {
242
        $element = $this->getElement();
243
244
        $this->assertEquals($element, $element->setReadonly(true));
245
        $this->assertTrue($element->isReadonly());
246
247
        $element->setReadonly(false);
248
        $this->assertFalse($element->isReadonly());
249
250
        $model = m::mock(\Illuminate\Database\Eloquent\Model::class);
251
        $model->shouldReceive('isAuthor')->andReturn(true)->once();
252
253
        $element->setModel($model);
254
255
        $element->setReadonly(function ($model) {
256
            return $model->isAuthor();
257
        });
258
259
        $this->assertTrue($element->isReadonly());
260
    }
261
262
    /**
263
     * @covers FormElement::isValueSkipped()
264
     * @covers FormElement::setValueSkipped()
265
     */
266
    public function test_valueSkipped()
267
    {
268
        $element = $this->getElement();
269
270
        $this->assertEquals($element, $element->setValueSkipped(true));
271
        $this->assertTrue($element->isValueSkipped());
272
273
        $element->setValueSkipped(false);
274
        $this->assertFalse($element->isValueSkipped());
275
276
        $model = m::mock(\Illuminate\Database\Eloquent\Model::class);
277
        $model->shouldReceive('isAuthor')->andReturn(true)->once();
278
279
        $element->setModel($model);
280
281
        $element->setValueSkipped(function ($model) {
282
            return $model->isAuthor();
283
        });
284
285
        $this->assertTrue($element->isValueSkipped());
286
    }
287
288
    /**
289
     * @covers FormElement::setVisibilityCondition
290
     * @covers FormElement::isVisible
291
     */
292
    public function test_visibility()
293
    {
294
        $element = $this->getElement();
295
        $model = m::mock(\Illuminate\Database\Eloquent\Model::class);
296
        $model->shouldReceive('isAuthor')->andReturn(true)->once();
297
        $element->setModel($model);
298
299
        $this->assertEquals(
300
            $element,
301
            $element->setVisibilityCondition(function ($model) {
302
                return $model->isAuthor();
303
            })
304
        );
305
306
        $this->assertTrue($element->isVisible());
307
    }
308
}
309