Passed
Push — master ( 590085...649359 )
by
unknown
37s
created

generateValidationMultiFieldMultiRules()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 13
Code Lines 9

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 1
Metric Value
cc 1
eloc 9
c 1
b 0
f 1
nc 1
nop 0
dl 0
loc 13
rs 9.4285
1
<?php
2
3
namespace PluginSimpleValidate\Tests\unit;
4
5
use PluginSimpleValidate\Field;
6
use function PluginSimpleValidate\helper\Validate\length;
7
use PluginSimpleValidate\Validation;
8
9
class ValidationTest extends Base
10
{
11
    public function setUp()
12
    {
13
        parent::setUp();
14
    }
15
16
    public function test_run()
17
    {
18
        $validation = $this->generateValidationMultiFieldMultiRules();
19
20
        $this->assertFalse($validation->run());
21
22
        $this->assertEquals(
23
            [
24
                'email' => [
25
                    'field is required',
26
                    'field must be a valid email address',
27
                ],
28
                'password' => [
29
                    'field is required',
30
                    'field may only letters and numbers',
31
                    'field length must be greater than 5',
32
                ],
33
            ],
34
            $validation->getErrors()
35
        );
36
    }
37
38
    public function test_run_contain_multi_field_multi_value()
39
    {
40
        $validation = $this->generateValidationMultiFieldMultiRules();
41
        $name = '';
42
        $validation->addField((new \PluginSimpleValidate\MultiValues\Field('name'))
43
            ->isTrue($name !== '', 'required')
44
            ->isTrue(strlen($name) > 6, 'length must be greater than 6'));
45
46
        $this->assertFalse($validation->run());
47
48
        $this->assertEquals(
49
            [
50
                'email' => [
51
                    'field is required',
52
                    'field must be a valid email address',
53
                ],
54
                'password' => [
55
                    'field is required',
56
                    'field may only letters and numbers',
57
                    'field length must be greater than 5',
58
                ],
59
                'name' => [
60
                    'required',
61
                    'length must be greater than 6'
62
                ]
63
            ],
64
            $validation->getErrors()
65
        );
66
    }
67
68
    public function test_run_with_error_break()
69
    {
70
        $validation = $this->generateValidationMultiFieldMultiRules();
71
72
        $this->assertFalse($validation->run(true));
73
74
        $this->assertEquals(
75
            [
76
                'email' => [
77
                    'field is required',
78
                    'field must be a valid email address',
79
                ],
80
            ],
81
            $validation->getErrors()
82
        );
83
    }
84
85
    private function generateValidationMultiFieldMultiRules()
86
    {
87
        $validation = new Validation($this->language);
88
89
        return $validation->addField((new Field('email', ''))
90
            ->required()
91
            ->validEmail()
92
        )->addField((new Field('password', ''))
93
            ->required()
94
            ->isAlphaOrNumeric()
95
            ->lengthGreaterThan(5)
96
        );
97
    }
98
}
99