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

ValidationTest   A

Complexity

Total Complexity 5

Size/Duplication

Total Lines 90
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 5

Importance

Changes 2
Bugs 1 Features 1
Metric Value
dl 0
loc 90
rs 10
c 2
b 1
f 1
wmc 5
lcom 1
cbo 5

5 Methods

Rating   Name   Duplication   Size   Complexity  
A setUp() 0 4 1
A test_run() 0 21 1
B test_run_contain_multi_field_multi_value() 0 29 1
A test_run_with_error_break() 0 16 1
A generateValidationMultiFieldMultiRules() 0 13 1
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