Passed
Pull Request — master (#64)
by
unknown
07:43
created

AtLeastTest   A

Complexity

Total Complexity 6

Size/Duplication

Total Lines 79
Duplicated Lines 0 %

Importance

Changes 2
Bugs 1 Features 0
Metric Value
eloc 44
c 2
b 1
f 0
dl 0
loc 79
rs 10
wmc 6

6 Methods

Rating   Name   Duplication   Size   Complexity  
A testAtLeastMinAttribute() 0 11 1
A testAtLeastWithError() 0 12 1
A testAtLeastOne() 0 11 1
A testAtLeastOneWithOnlyAlternativeAttributes() 0 11 1
A testAtLeastOneWithOnlyAttributes() 0 11 1
A testAtLeastWithInvalidParams() 0 11 1
1
<?php
2
3
namespace Yiisoft\Validator\Tests\Rule;
4
5
use PHPUnit\Framework\TestCase;
6
use Yiisoft\Validator\DataSetInterface;
7
use Yiisoft\Validator\MissingAttributeException;
8
use Yiisoft\Validator\Rule\AtLeast;
9
10
/**
11
 * @group validators
12
 */
13
class AtLeastTest extends TestCase
14
{
15
    public function testAtLeastOne(): void
16
    {
17
        $model = new \stdClass();
18
        $model->attr1 = 1;
19
        $model->attr2 = null;
20
        $model->attr3 = null;
21
22
        $rule = new AtLeast(['attributes' => ['attr1'], 'alternativeAttributes' => ['attr2']]);
23
24
        $this->assertTrue($rule->validate($model)->isValid());
25
        $this->assertEquals([], $rule->validate($model)->getErrors());
26
    }
27
28
    public function testAtLeastOneWithOnlyAttributes(): void
29
    {
30
        $model = new \stdClass();
31
        $model->attr1 = null;
32
        $model->attr2 = 1;
33
        $model->attr3 = null;
34
35
        $rule = new AtLeast(['attributes' => ['attr2']]);
36
37
        $this->assertTrue($rule->validate($model)->isValid());
38
        $this->assertEquals([], $rule->validate($model)->getErrors());
39
    }
40
41
    public function testAtLeastOneWithOnlyAlternativeAttributes(): void
42
    {
43
        $model = new \stdClass();
44
        $model->attr1 = null;
45
        $model->attr2 = 1;
46
        $model->attr3 = null;
47
48
        $rule = new AtLeast(['alternativeAttributes' => ['attr2']]);
49
50
        $this->assertTrue($rule->validate($model)->isValid());
51
        $this->assertEquals([], $rule->validate($model)->getErrors());
52
    }
53
54
    public function testAtLeastWithError(): void
55
    {
56
        $model = new \stdClass();
57
        $model->attr1 = null;
58
        $model->attr2 = null;
59
        $model->attr3 = 1;
60
61
        $rule = new AtLeast(['attributes' => ['attr1'], 'alternativeAttributes' => ['attr2']]);
62
63
        $this->assertFalse($rule->validate($model)->isValid());
64
        $this->assertCount(1, $rule->validate($model)->getErrors());
65
        $this->assertEquals(['The model is not valid. Must have at least "1" filled attributes.'], $rule->validate($model)->getErrors());
66
    }
67
68
    public function testAtLeastMinAttribute(): void
69
    {
70
        $model = new \stdClass();
71
        $model->attr1 = 1;
72
        $model->attr2 = null;
73
74
        $rule = new AtLeast(['attributes' => ['attr1'], 'alternativeAttributes' => ['attr2'], 'min' => 2]);
75
76
        $this->assertFalse($rule->validate($model)->isValid());
77
        $this->assertCount(1, $rule->validate($model)->getErrors());
78
        $this->assertEquals(['The model is not valid. Must have at least "2" filled attributes.'], $rule->validate($model)->getErrors());
79
    }
80
81
    public function testAtLeastWithInvalidParams(): void
82
    {
83
        $model = new \stdClass();
84
        $model->attr1 = 1;
85
        $model->attr2 = null;
86
87
        $rule = new AtLeast(['at1' => ['attr1'], 'at2' => ['attr2']]);
88
89
        $this->assertFalse($rule->validate($model)->isValid());
90
        $this->assertCount(1, $rule->validate($model)->getErrors());
91
        $this->assertEquals(['The model is not valid. Must have at least "1" filled attributes.'], $rule->validate($model)->getErrors());
92
    }
93
}
94