18
18
use Symfony \Component \Validator \Constraints \Required ;
19
19
use Symfony \Component \Validator \Constraints \Valid ;
20
20
use Symfony \Component \Validator \Exception \ConstraintDefinitionException ;
21
+ use Symfony \Component \Validator \Exception \InvalidOptionsException ;
21
22
22
23
/**
23
24
* @author Bernhard Schussek <bschussek@gmail.com>
@@ -34,7 +35,7 @@ public function testRejectInvalidFieldsOption()
34
35
35
36
public function testRejectNonConstraints ()
36
37
{
37
- $ this ->expectException (ConstraintDefinitionException ::class);
38
+ $ this ->expectException (InvalidOptionsException ::class);
38
39
new Collection ([
39
40
'foo ' => 'bar ' ,
40
41
]);
@@ -113,4 +114,43 @@ public function testConstraintHasDefaultGroupWithOptionalValues()
113
114
$ this ->assertEquals (['Default ' ], $ constraint ->fields ['foo ' ]->groups );
114
115
$ this ->assertEquals (['Default ' ], $ constraint ->fields ['bar ' ]->groups );
115
116
}
117
+
118
+ public function testOnlySomeKeysAreKnowOptions ()
119
+ {
120
+ $ constraint = new Collection ([
121
+ 'fields ' => [new Required ()],
122
+ 'properties ' => [new Required ()],
123
+ 'catalog ' => [new Optional ()],
124
+ ]);
125
+
126
+ $ this ->assertArrayHasKey ('fields ' , $ constraint ->fields );
127
+ $ this ->assertInstanceOf (Required::class, $ constraint ->fields ['fields ' ]);
128
+ $ this ->assertArrayHasKey ('properties ' , $ constraint ->fields );
129
+ $ this ->assertInstanceOf (Required::class, $ constraint ->fields ['properties ' ]);
130
+ $ this ->assertArrayHasKey ('catalog ' , $ constraint ->fields );
131
+ $ this ->assertInstanceOf (Optional::class, $ constraint ->fields ['catalog ' ]);
132
+ }
133
+
134
+ public function testAllKeysAreKnowOptions ()
135
+ {
136
+ $ constraint = new Collection ([
137
+ 'fields ' => [
138
+ 'fields ' => [new Required ()],
139
+ 'properties ' => [new Required ()],
140
+ 'catalog ' => [new Optional ()],
141
+ ],
142
+ 'allowExtraFields ' => true ,
143
+ 'extraFieldsMessage ' => 'foo bar baz ' ,
144
+ ]);
145
+
146
+ $ this ->assertArrayHasKey ('fields ' , $ constraint ->fields );
147
+ $ this ->assertInstanceOf (Required::class, $ constraint ->fields ['fields ' ]);
148
+ $ this ->assertArrayHasKey ('properties ' , $ constraint ->fields );
149
+ $ this ->assertInstanceOf (Required::class, $ constraint ->fields ['properties ' ]);
150
+ $ this ->assertArrayHasKey ('catalog ' , $ constraint ->fields );
151
+ $ this ->assertInstanceOf (Optional::class, $ constraint ->fields ['catalog ' ]);
152
+
153
+ $ this ->assertTrue ($ constraint ->allowExtraFields );
154
+ $ this ->assertSame ('foo bar baz ' , $ constraint ->extraFieldsMessage );
155
+ }
116
156
}
0 commit comments