@@ -137,19 +137,22 @@ function (Builder $builder) {
137137 ];
138138
139139 yield 'whereNotBetween array of numbers ' => [
140- ['find ' => [['$or ' => [['id ' => ['$lte ' => 1 ]], ['id ' => ['$gte ' => 2 ]]]], []]],
140+ ['find ' => [
141+ ['$or ' => [
142+ ['id ' => ['$lte ' => 1 ]],
143+ ['id ' => ['$gte ' => 2 ]],
144+ ]],
145+ [], // options
146+ ]],
141147 fn (Builder $ builder ) => $ builder ->whereNotBetween ('id ' , [1 , 2 ]),
142148 ];
143149
144- $ period = now ()->toPeriod (now ()->addDay ());
145- yield 'whereBetween CarbonPeriod ' => [
146- ['find ' => [['created_at ' => ['$gte ' => new UTCDateTime ($ period ->start ), '$lte ' => new UTCDateTime ($ period ->end )]], []]],
147- fn (Builder $ builder ) => $ builder ->whereBetween ('created_at ' , $ period ),
148- ];
149-
150150 $ period = now ()->toPeriod (now ()->addMonth ());
151- yield 'custom long carbon period date ' => [
152- ['find ' => [['created_at ' => ['$gte ' => new UTCDateTime ($ period ->start ), '$lte ' => new UTCDateTime ($ period ->end )]], []]],
151+ yield 'whereBetween CarbonPeriod ' => [
152+ ['find ' => [
153+ ['created_at ' => ['$gte ' => new UTCDateTime ($ period ->start ), '$lte ' => new UTCDateTime ($ period ->end )]],
154+ [], // options
155+ ]],
153156 fn (Builder $ builder ) => $ builder ->whereBetween ('created_at ' , $ period ),
154157 ];
155158
@@ -160,51 +163,105 @@ function (Builder $builder) {
160163
161164 /** @see DatabaseQueryBuilderTest::testOrWhereBetween() */
162165 yield 'whereBetween array numbers ' => [
163- ['find ' => [['$or ' => [['id ' => 1 ], ['id ' => ['$gte ' => 3 , '$lte ' => 5 ]]]], []]],
166+ ['find ' => [
167+ ['$or ' => [
168+ ['id ' => 1 ],
169+ ['id ' => ['$gte ' => 3 , '$lte ' => 5 ]],
170+ ]],
171+ [], // options
172+ ]],
164173 fn (Builder $ builder ) => $ builder
165174 ->where ('id ' , '= ' , 1 )
166175 ->orWhereBetween ('id ' , [3 , 5 ]),
167176 ];
168177
169178 /** @link https://www.mongodb.com/docs/manual/reference/bson-type-comparison-order/#arrays */
170179 yield 'orWhereBetween nested array of numbers ' => [
171- ['find ' => [['$or ' => [['id ' => 1 ], ['id ' => ['$gte ' => [4 ], '$lte ' => [6 , 8 ]]]]], []]],
180+ ['find ' => [
181+ ['$or ' => [
182+ ['id ' => 1 ],
183+ ['id ' => ['$gte ' => [4 ], '$lte ' => [6 , 8 ]]],
184+ ]],
185+ [], // options
186+ ]],
172187 fn (Builder $ builder ) => $ builder
173188 ->where ('id ' , '= ' , 1 )
174189 ->orWhereBetween ('id ' , [[4 ], [6 , 8 ]]),
175190 ];
176191
177192 yield 'orWhereBetween collection ' => [
178- ['find ' => [['$or ' => [['id ' => 1 ], ['id ' => ['$gte ' => 3 , '$lte ' => 4 ]]]], []]],
193+ ['find ' => [
194+ ['$or ' => [
195+ ['id ' => 1 ],
196+ ['id ' => ['$gte ' => 3 , '$lte ' => 4 ]],
197+ ]],
198+ [], // options
199+ ]],
179200 fn (Builder $ builder ) => $ builder
180201 ->where ('id ' , '= ' , 1 )
181202 ->orWhereBetween ('id ' , collect ([3 , 4 ])),
182203 ];
183204
184205 /** @see DatabaseQueryBuilderTest::testOrWhereNotBetween() */
185206 yield 'orWhereNotBetween array of numbers ' => [
186- ['find ' => [['$or ' => [['id ' => 1 ], ['$or ' => [['id ' => ['$lte ' => 3 ]], ['id ' => ['$gte ' => 5 ]]]]]], []]],
207+ ['find ' => [
208+ ['$or ' => [
209+ ['id ' => 1 ],
210+ ['$or ' => [
211+ ['id ' => ['$lte ' => 3 ]],
212+ ['id ' => ['$gte ' => 5 ]],
213+ ]],
214+ ]],
215+ [], // options
216+ ]],
187217 fn (Builder $ builder ) => $ builder
188218 ->where ('id ' , '= ' , 1 )
189219 ->orWhereNotBetween ('id ' , [3 , 5 ]),
190220 ];
191221
192222 yield 'orWhereNotBetween nested array of numbers ' => [
193- ['find ' => [['$or ' => [['id ' => 1 ], ['$or ' => [['id ' => ['$lte ' => [2 , 3 ]]], ['id ' => ['$gte ' => [5 ]]]]]]], []]],
223+ ['find ' => [
224+ ['$or ' => [
225+ ['id ' => 1 ],
226+ ['$or ' => [
227+ ['id ' => ['$lte ' => [2 , 3 ]]],
228+ ['id ' => ['$gte ' => [5 ]]],
229+ ]],
230+ ]],
231+ [], // options
232+ ]],
194233 fn (Builder $ builder ) => $ builder
195234 ->where ('id ' , '= ' , 1 )
196235 ->orWhereNotBetween ('id ' , [[2 , 3 ], [5 ]]),
197236 ];
198237
199238 yield 'orWhereNotBetween excessive nested array of numbers ' => [
200- ['find ' => [['$or ' => [['id ' => 1 ], ['$or ' => [['id ' => ['$lte ' => [4 ]]], ['id ' => ['$gte ' => [6 , 8 ]]]]]]], []]],
239+ ['find ' => [
240+ ['$or ' => [
241+ ['id ' => 1 ],
242+ ['$or ' => [
243+ ['id ' => ['$lte ' => [4 ]]],
244+ ['id ' => ['$gte ' => [6 , 8 ]]],
245+ ]],
246+ ]],
247+ [], // options
248+ ]],
201249 fn (Builder $ builder ) => $ builder
202250 ->where ('id ' , '= ' , 1 )
203251 ->orWhereNotBetween ('id ' , [[4 ], [6 , 8 ]]),
204252 ];
205253
206254 yield 'orWhereNotBetween collection ' => [
207- ['find ' => [['$or ' => [['id ' => 1 ], ['$or ' => [['id ' => ['$lte ' => 3 ]], ['id ' => ['$gte ' => 4 ]]]]]], []]],
255+ ['find ' => [
256+ ['$or ' => [
257+ ['id ' => 1 ],
258+ ['$or ' => [
259+ ['id ' => ['$lte ' => 3 ]],
260+ ['id ' => ['$gte ' => 4 ]],
261+ ]],
262+ ]],
263+ [], // options
264+ ]],
208265 fn (Builder $ builder ) => $ builder
209266 ->where ('id ' , '= ' , 1 )
210267 ->orWhereNotBetween ('id ' , collect ([3 , 4 ])),
@@ -216,7 +273,10 @@ function (Builder $builder) {
216273 ];
217274
218275 yield 'groupBy ' => [
219- ['aggregate ' => [[['$group ' => ['_id ' => ['foo ' => '$foo ' ], 'foo ' => ['$last ' => '$foo ' ]]]], []]],
276+ ['aggregate ' => [
277+ [['$group ' => ['_id ' => ['foo ' => '$foo ' ], 'foo ' => ['$last ' => '$foo ' ]]]],
278+ [], // options
279+ ]],
220280 fn (Builder $ builder ) => $ builder ->groupBy ('foo ' ),
221281 ];
222282 }
@@ -244,19 +304,19 @@ public static function provideExceptions(): iterable
244304 /** @see DatabaseQueryBuilderTest::testWhereBetweens */
245305 yield 'whereBetween array too short ' => [
246306 \InvalidArgumentException::class,
247- 'Between $values must have exactly two elements: [min, max] ' ,
307+ 'Between $values must be a list with exactly two elements: [min, max] ' ,
248308 fn (Builder $ builder ) => $ builder ->whereBetween ('id ' , [1 ]),
249309 ];
250310
251311 yield 'whereBetween array too long ' => [
252312 \InvalidArgumentException::class,
253- 'Between $values must have exactly two elements: [min, max] ' ,
313+ 'Between $values must be a list with exactly two elements: [min, max] ' ,
254314 fn (Builder $ builder ) => $ builder ->whereBetween ('id ' , [1 , 2 , 3 ]),
255315 ];
256316
257317 yield 'whereBetween collection too long ' => [
258318 \InvalidArgumentException::class,
259- 'Between $values must have exactly two elements: [min, max] ' ,
319+ 'Between $values must be a list with exactly two elements: [min, max] ' ,
260320 fn (Builder $ builder ) => $ builder ->whereBetween ('id ' , new Collection ([1 , 2 , 3 ])),
261321 ];
262322
@@ -268,7 +328,7 @@ public static function provideExceptions(): iterable
268328
269329 yield 'whereBetween nested ' => [
270330 \InvalidArgumentException::class,
271- 'Between $values must have exactly two elements: [min, max] ' ,
331+ 'Between $values must be a list with exactly two elements: [min, max] ' ,
272332 fn (Builder $ builder ) => $ builder ->whereBetween ('id ' , [[1 , 2 ]]),
273333 ];
274334 }
0 commit comments