@@ -131,17 +131,10 @@ function (Builder $builder) {
131131 fn (Builder $ builder ) => $ builder ->whereBetween ('id ' , [1 , 2 ]),
132132 ];
133133
134- /*
135- yield 'whereBetween excessive nested array of numbers' => [
136- ['find' => [['id' => ['$gte' => 1, '$lte' => 2]], []],
137- fn (Builder $builder) => $builder->whereBetween('id', [[1, 2, 3]]),
138- ];
139-
140134 yield 'whereBetween nested array of numbers ' => [
141- ['find' => [['id' => ['$gte' => 1 , '$lte' => 2 ]], []]],
135+ ['find ' => [['id ' => ['$gte ' => [ 1 ] , '$lte ' => [ 2 , 3 ] ]], []]],
142136 fn (Builder $ builder ) => $ builder ->whereBetween ('id ' , [[1 ], [2 , 3 ]]),
143137 ];
144- */
145138
146139 yield 'whereNotBetween array of numbers ' => [
147140 ['find ' => [['$or ' => [['id ' => ['$lte ' => 1 ]], ['id ' => ['$gte ' => 2 ]]]], []]],
@@ -173,28 +166,13 @@ function (Builder $builder) {
173166 ->orWhereBetween ('id ' , [3 , 5 ]),
174167 ];
175168
176- /*
177- yield 'whereBetween excessive nested array numbers' => [
178- ['find' => [['$or' => [['id' => 1], ['id' => ['$gte' => 3, '$lte' => 4]]]], []],
179- fn (Builder $builder) => $builder
180- ->where('id', '=', 1)
181- ->orWhereBetween('id', [[3, 4, 5]]),
182- ];
183-
184- yield 'orWhereBetween nested array numbers' => [
185- ['find' => [['$or' => [['id' => 1], ['id' => ['$gte' => 3, '$lte' => 5]]]], []],
186- fn (Builder $builder) => $builder
187- ->where('id', '=', 1)
188- ->orWhereBetween('id', [[3, 5]]),
189- ];
190-
191- yield 'orWhereBetween nested excessive array numbers' => [
192- ['find' => [['$or' => [['id' => 1], ['id' => ['$gte' => 4, '$lte' => 6]]]], []],
169+ /** @link https://www.mongodb.com/docs/manual/reference/bson-type-comparison-order/#arrays */
170+ yield 'orWhereBetween nested array of numbers ' => [
171+ ['find ' => [['$or ' => [['id ' => 1 ], ['id ' => ['$gte ' => [4 ], '$lte ' => [6 , 8 ]]]]], []]],
193172 fn (Builder $ builder ) => $ builder
194173 ->where ('id ' , '= ' , 1 )
195174 ->orWhereBetween ('id ' , [[4 ], [6 , 8 ]]),
196175 ];
197- */
198176
199177 yield 'orWhereBetween collection ' => [
200178 ['find ' => [['$or ' => [['id ' => 1 ], ['id ' => ['$gte ' => 3 , '$lte ' => 4 ]]]], []]],
@@ -211,24 +189,15 @@ function (Builder $builder) {
211189 ->orWhereNotBetween ('id ' , [3 , 5 ]),
212190 ];
213191
214- /*
215- yield 'orWhereNotBetween excessive array of numbers' => [
216- ['find' => [['$or' => [['id' => 1], ['$or' => [['id' => ['$lte' => 3]], ['id' => ['$gte' => 4]]]]]], []],
217- fn (Builder $builder) => $builder
218- ->where('id', '=', 1)
219- ->orWhereNotBetween('id', [[3, 4, 5]]),
220- ];
221-
222192 yield 'orWhereNotBetween nested array of numbers ' => [
223- ['find' => [['$or' => [['id' => 1], ['$or' => [['id' => ['$lte' => 3]], ['id' => ['$gte' => 5]]]]]], []],
193+ ['find ' => [['$or ' => [['id ' => 1 ], ['$or ' => [['id ' => ['$lte ' => [ 2 , 3 ]]] , ['id ' => ['$gte ' => [ 5 ]]]]]]] , [] ]],
224194 fn (Builder $ builder ) => $ builder
225195 ->where ('id ' , '= ' , 1 )
226- ->orWhereNotBetween('id', [[3, 5]]),
196+ ->orWhereNotBetween ('id ' , [[2 , 3 ], [ 5 ]]),
227197 ];
228- */
229198
230199 yield 'orWhereNotBetween excessive nested array of numbers ' => [
231- ['find ' => [['$or ' => [['id ' => 1 ], ['$or ' => [['id ' => ['$lte ' => [4 ]]], ['id ' => ['$gte ' => [6 , 8 ]]]]]]]]],
200+ ['find ' => [['$or ' => [['id ' => 1 ], ['$or ' => [['id ' => ['$lte ' => [4 ]]], ['id ' => ['$gte ' => [6 , 8 ]]]]]]], [] ]],
232201 fn (Builder $ builder ) => $ builder
233202 ->where ('id ' , '= ' , 1 )
234203 ->orWhereNotBetween ('id ' , [[4 ], [6 , 8 ]]),
@@ -297,6 +266,11 @@ public static function provideExceptions(): iterable
297266 fn (Builder $ builder ) => $ builder ->whereBetween ('id ' , ['min ' => 1 , 'max ' => 2 ]),
298267 ];
299268
269+ yield 'whereBetween nested ' => [
270+ \InvalidArgumentException::class,
271+ 'Between $values must have exactly two elements: [min, max] ' ,
272+ fn (Builder $ builder ) => $ builder ->whereBetween ('id ' , [[1 , 2 ]]),
273+ ];
300274 }
301275
302276 /** @dataProvider getEloquentMethodsNotSupported */
0 commit comments