@@ -285,40 +285,72 @@ public function testFirstAggregate($groupBy)
285285
286286 //--------------------------------------------------------------------
287287
288+ public function provideAggregateAndGroupBy ()
289+ {
290+ return [
291+ [
292+ true ,
293+ true ,
294+ ],
295+ [
296+ false ,
297+ false ,
298+ ],
299+ [
300+ true ,
301+ false ,
302+ ],
303+ [
304+ false ,
305+ true ,
306+ ],
307+ ];
308+ }
309+
288310 /**
289- * @dataProvider provideGroupBy
311+ * @dataProvider provideAggregateAndGroupBy
290312 */
291- public function testFirstRespectsSoftDeletes ($ groupBy )
313+ public function testFirstRespectsSoftDeletes ($ aggregate , $ groupBy )
292314 {
293315 $ this ->db ->table ('user ' )
294316 ->where ('id ' , 1 )
295317 ->update (['deleted_at ' => date ('Y-m-d H:i:s ' )]);
296318
297319 $ model = new UserModel ();
298- if ($ groupBy )
320+ if ($ aggregate )
299321 {
300- $ user = $ model ->groupBy ( ' id ' )-> first ( );
322+ $ model ->select ( ' SUM(id) as id ' );
301323 }
302- else
324+
325+ if ($ groupBy )
303326 {
304- $ user = $ model ->first ( );
327+ $ model ->groupBy ( ' id ' );
305328 }
306329
307- // fix for PHP7.2
308- $ count = is_array ($ user ) ? count ($ user ) : 1 ;
309- $ this ->assertEquals (1 , $ count );
310- $ this ->assertEquals (2 , $ user ->id );
330+ $ user = $ model ->first ();
311331
312- $ user = $ model ->withDeleted ();
313- if ($ groupBy )
332+ if (! $ aggregate )
314333 {
315- $ user = $ model ->groupBy ('id ' )->first ();
334+ // fix for PHP7.2
335+ $ count = is_array ($ user ) ? count ($ user ) : 1 ;
336+ $ this ->assertEquals (1 , $ count );
337+ $ this ->assertEquals (2 , $ user ->id );
316338 }
317339 else
318340 {
319- $ user = $ model ->first ();
341+ if ($ groupBy )
342+ {
343+ $ this ->assertEquals (2 , $ user ->id );
344+ }
345+ else
346+ {
347+ $ this ->assertEquals (9 , $ user ->id );
348+ }
320349 }
321350
351+ $ user = $ model ->withDeleted ();
352+ $ user = $ model ->first ();
353+
322354 $ this ->assertEquals (1 , $ user ->id );
323355 }
324356
@@ -1926,30 +1958,41 @@ public function testUndefinedMethodInBuilder()
19261958 }
19271959
19281960 /**
1929- * @dataProvider provideGroupBy
1961+ * @dataProvider provideAggregateAndGroupBy
19301962 */
1931- public function testFirstRecoverTempUseSoftDeletes ($ groupBy )
1963+ public function testFirstRecoverTempUseSoftDeletes ($ aggregate , $ groupBy )
19321964 {
19331965 $ model = new UserModel ($ this ->db );
19341966 $ model ->delete (1 );
1935- if ($ groupBy )
1967+ if ($ aggregate )
19361968 {
1937- $ user = $ model ->groupBy ( ' id ' )-> withDeleted ()-> first ( );
1969+ $ model ->select ( ' sum(id) as id ' );
19381970 }
1939- else
1971+
1972+ if ($ groupBy )
19401973 {
1941- $ user = $ model ->withDeleted ()-> first ( );
1974+ $ model ->groupBy ( ' id ' );
19421975 }
1943- $ this ->assertEquals (1 , $ user ->id );
1944- $ user2 = $ model ->first ();
1945- if ($ groupBy )
1976+
1977+ $ user = $ model ->withDeleted ()->first ();
1978+
1979+ if (! $ aggregate )
19461980 {
1947- $ user2 = $ model -> groupBy ( ' id ' )-> first ( );
1981+ $ this -> assertEquals ( 1 , $ user -> id );
19481982 }
19491983 else
19501984 {
1951- $ user2 = $ model ->first ();
1985+ if ($ groupBy )
1986+ {
1987+ $ this ->assertEquals (1 , $ user ->id );
1988+ }
1989+ else
1990+ {
1991+ $ this ->assertEquals (10 , $ user ->id );
1992+ }
19521993 }
1994+
1995+ $ user2 = $ model ->first ();
19531996 $ this ->assertEquals (2 , $ user2 ->id );
19541997 }
19551998
0 commit comments