66
77use InvalidArgumentException ;
88use Yiisoft \Data \Reader \Filter \All ;
9- use Yiisoft \Data \Reader \Filter \Any ;
10- use Yiisoft \Data \Reader \Filter \Between ;
11- use Yiisoft \Data \Reader \Filter \Equals ;
129use Yiisoft \Data \Reader \Filter \GreaterThan ;
13- use Yiisoft \Data \Reader \Filter \In ;
1410use Yiisoft \Data \Reader \Filter \LessThan ;
1511use Yiisoft \Data \Tests \TestCase ;
1612
@@ -32,53 +28,60 @@ public function testToArray(): void
3228 ], $ filter ->toCriteriaArray ());
3329 }
3430
35- public function testToArrayAndWithFiltersArray (): void
31+ public function testWithCriteriaArrayIsImmutable (): void
3632 {
3733 $ filter = new All (
3834 new LessThan ('test ' , 4 ),
3935 new GreaterThan ('test ' , 2 ),
4036 );
4137
4238 $ newFilter = $ filter ->withCriteriaArray ([
43- new Any (
44- new Between ('test ' , 2 , 4 ),
45- new In ('test ' , [1 , 2 , 3 , 4 ]),
46- ),
47- ['= ' , 'test ' , 3 ],
39+ ['> ' , 'test ' , 1 ],
40+ ['< ' , 'test ' , 5 ],
4841 ]);
4942
5043 $ this ->assertNotSame ($ filter , $ newFilter );
44+ }
5145
52- $ this ->assertSame ([
53- 'and ' ,
46+ public function testWithCriteriaArrayOverridesConstructor (): void
47+ {
48+ $ filter = new All (
49+ new LessThan ('test ' , 4 ),
50+ new GreaterThan ('test ' , 2 ),
51+ );
52+
53+ $ newFilter = $ filter ->withCriteriaArray ([
54+ ['> ' , 'test ' , 1 ],
55+ ['< ' , 'test ' , 5 ],
56+ ]);
57+
58+ $ this ->assertEquals (
5459 [
60+ 'and ' ,
5561 [
56- 'or ' ,
57- [
58- ['between ' , 'test ' , 2 , 4 ],
59- ['in ' , 'test ' , [1 , 2 , 3 , 4 ]],
60- ],
62+ ['> ' , 'test ' , 1 ],
63+ ['< ' , 'test ' , 5 ],
6164 ],
62- ['= ' , 'test ' , 3 ],
6365 ],
64- ], $ newFilter ->toCriteriaArray ());
66+ $ newFilter ->toCriteriaArray ()
67+ );
6568 }
6669
6770 /**
6871 * @dataProvider invalidFilterDataProvider
6972 */
70- public function testWithFiltersArrayFailForInvalidFilter ($ filter ): void
73+ public function testWithCriteriaArrayFailForInvalidFilter ($ filter ): void
7174 {
7275 $ this ->expectException (InvalidArgumentException::class);
7376 $ this ->expectExceptionMessage ('Invalid filter on "1" key. ' );
7477
75- (new All ())->withCriteriaArray ([new Equals ( 'test ' , 1 ) , $ filter ]);
78+ (new All ())->withCriteriaArray ([[ ' = ' , 'test ' , 1 ] , $ filter ]);
7679 }
7780
7881 /**
7982 * @dataProvider invalidFilterOperatorDataProvider
8083 */
81- public function testWithFiltersArrayFailForInvalidFilterOperator (array $ filter ): void
84+ public function testWithCriteriaArrayFailForInvalidFilterOperator (array $ filter ): void
8285 {
8386 $ this ->expectException (InvalidArgumentException::class);
8487 $ this ->expectExceptionMessage ('Invalid filter operator on "0" key. ' );
0 commit comments