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

testAtLeastOneWithOnlyAlternativeAttributes()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 11
Code Lines 7

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 7
c 1
b 0
f 0
nc 1
nop 0
dl 0
loc 11
rs 10
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