/
CollectionTest.php
115 lines (99 loc) · 3.26 KB
/
CollectionTest.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
<?php
/*
* This file is part of the Symfony package.
*
* (c) Fabien Potencier <fabien@symfony.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Symfony\Component\Validator\Tests\Constraints;
use PHPUnit\Framework\TestCase;
use Symfony\Component\Validator\Constraints\Collection;
use Symfony\Component\Validator\Constraints\Email;
use Symfony\Component\Validator\Constraints\Optional;
use Symfony\Component\Validator\Constraints\Required;
use Symfony\Component\Validator\Constraints\Valid;
/**
* @author Bernhard Schussek <bschussek@gmail.com>
*/
class CollectionTest extends TestCase
{
public function testRejectInvalidFieldsOption()
{
$this->expectException('Symfony\Component\Validator\Exception\ConstraintDefinitionException');
new Collection([
'fields' => 'foo',
]);
}
public function testRejectNonConstraints()
{
$this->expectException('Symfony\Component\Validator\Exception\ConstraintDefinitionException');
new Collection([
'foo' => 'bar',
]);
}
public function testRejectValidConstraint()
{
$this->expectException('Symfony\Component\Validator\Exception\ConstraintDefinitionException');
new Collection([
'foo' => new Valid(),
]);
}
public function testRejectValidConstraintWithinOptional()
{
$this->expectException('Symfony\Component\Validator\Exception\ConstraintDefinitionException');
new Collection([
'foo' => new Optional(new Valid()),
]);
}
public function testRejectValidConstraintWithinRequired()
{
$this->expectException('Symfony\Component\Validator\Exception\ConstraintDefinitionException');
new Collection([
'foo' => new Required(new Valid()),
]);
}
public function testAcceptOptionalConstraintAsOneElementArray()
{
$collection1 = new Collection([
'fields' => [
'alternate_email' => [
new Optional(new Email()),
],
],
]);
$collection2 = new Collection([
'fields' => [
'alternate_email' => new Optional(new Email()),
],
]);
$this->assertEquals($collection1, $collection2);
}
public function testAcceptRequiredConstraintAsOneElementArray()
{
$collection1 = new Collection([
'fields' => [
'alternate_email' => [
new Required(new Email()),
],
],
]);
$collection2 = new Collection([
'fields' => [
'alternate_email' => new Required(new Email()),
],
]);
$this->assertEquals($collection1, $collection2);
}
public function testConstraintHasDefaultGroupWithOptionalValues()
{
$constraint = new Collection([
'foo' => new Required(),
'bar' => new Optional(),
]);
$this->assertEquals(['Default'], $constraint->groups);
$this->assertEquals(['Default'], $constraint->fields['foo']->groups);
$this->assertEquals(['Default'], $constraint->fields['bar']->groups);
}
}