1818use Symfony \Component \Validator \Constraints \Required ;
1919use Symfony \Component \Validator \Constraints \Valid ;
2020use Symfony \Component \Validator \Exception \ConstraintDefinitionException ;
21+ use Symfony \Component \Validator \Exception \InvalidOptionsException ;
2122
2223/**
2324 * @author Bernhard Schussek <bschussek@gmail.com>
@@ -34,7 +35,7 @@ public function testRejectInvalidFieldsOption()
3435
3536 public function testRejectNonConstraints ()
3637 {
37- $ this ->expectException (ConstraintDefinitionException ::class);
38+ $ this ->expectException (InvalidOptionsException ::class);
3839 new Collection ([
3940 'foo ' => 'bar ' ,
4041 ]);
@@ -113,4 +114,43 @@ public function testConstraintHasDefaultGroupWithOptionalValues()
113114 $ this ->assertEquals (['Default ' ], $ constraint ->fields ['foo ' ]->groups );
114115 $ this ->assertEquals (['Default ' ], $ constraint ->fields ['bar ' ]->groups );
115116 }
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+ }
116156}
0 commit comments