Skip to content

Commit

Permalink
Add tests for upsert
Browse files Browse the repository at this point in the history
  • Loading branch information
imanghafoori1 committed Jun 18, 2023
1 parent c753c0f commit 7e44327
Showing 1 changed file with 40 additions and 0 deletions.
40 changes: 40 additions & 0 deletions tests/UpsertTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Carbon;
use Imanghafoori\EloquentMockery\FakeDB;
use PHPUnit\Framework\TestCase;

Expand All @@ -26,24 +27,63 @@ public function test_upsert()
UpsertModel::query()->upsert([
'name' => 'a1',
'age' => 12,
'weight' => 50,
], ['name']);

$this->assertEquals(1, UpsertModel::query()->count());

UpsertModel::query()->upsert([
'name' => 'a',
'age' => 10,
'weight' => 60,
], ['name']);

// Assert is inserted:
$this->assertEquals(2, UpsertModel::query()->count());

UpsertModel::query()->upsert([
'name' => 'a',
'age' => 11,
'weight' => 66,
], ['name']);

// Assert is updated:
$this->assertEquals(2, UpsertModel::query()->count());

$upsert = UpsertModel::query()->get();
$this->assertEquals(66, $upsert[1]->weight);
$this->assertEquals(11, $upsert[1]->age);
$this->assertEquals(Carbon::now()->format('Y-m-d H:i'), $upsert[1]->created_at->format('Y-m-d H:i'));
$this->assertEquals(Carbon::now()->format('Y-m-d H:i'), $upsert[1]->updated_at->format('Y-m-d H:i'));

UpsertModel::query()->upsert([
'name' => 'a',
'age' => 11,
'weight' => 70,
], ['name', 'age']);

// Assert is updated:
$this->assertEquals(2, UpsertModel::query()->count());
$upsert = UpsertModel::query()->get();
$this->assertEquals(12, $upsert[0]->age);
$this->assertEquals(11, $upsert[1]->age);
$this->assertEquals(70, $upsert[1]->weight);

UpsertModel::query()->upsert([
'name' => 'a3',
'age' => 11,
'weight' => 70,
], ['name', 'age']);

$this->assertEquals(3, UpsertModel::query()->count());

UpsertModel::query()->upsert([
'name' => 'a3',
'age' => 14,
'weight' => 70,
], ['name', 'age']);

$this->assertEquals(4, UpsertModel::query()->count());

FakeDB::dontMockQueryBuilder();
}
Expand Down

0 comments on commit 7e44327

Please sign in to comment.