Skip to content

Commit 0d272bb

Browse files
committed
test for aggregate on soft delete
1 parent 4ac0e5a commit 0d272bb

1 file changed

Lines changed: 68 additions & 25 deletions

File tree

tests/system/Database/Live/ModelTest.php

Lines changed: 68 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)