Skip to content

Commit add85de

Browse files
committed
Add test on updateOrCreate
1 parent 8f7bf77 commit add85de

File tree

1 file changed

+37
-0
lines changed

1 file changed

+37
-0
lines changed

tests/ModelTest.php

+37
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
use MongoDB\Laravel\Tests\Models\Soft;
2929
use MongoDB\Laravel\Tests\Models\SqlUser;
3030
use MongoDB\Laravel\Tests\Models\User;
31+
use PHPUnit\Framework\Attributes\TestWith;
3132

3233
use function abs;
3334
use function array_keys;
@@ -1091,4 +1092,40 @@ public function testCreateOrFirstRequiresFilter()
10911092
$this->expectExceptionMessage('You must provide attributes to check for duplicates');
10921093
User::createOrFirst([]);
10931094
}
1095+
1096+
#[TestWith([new ObjectID()])]
1097+
#[TestWith(['foo'])]
1098+
public function testUpdateOrCreate(mixed $id)
1099+
{
1100+
Carbon::setTestNow('2010-01-01');
1101+
1102+
// Create
1103+
$user = User::updateOrCreate(
1104+
['_id' => $id],
1105+
['email' => '[email protected]', 'birthday' => new DateTime('1987-05-28')],
1106+
);
1107+
$this->assertInstanceOf(User::class, $user);
1108+
$this->assertEquals('[email protected]', $user->email);
1109+
$this->assertEquals(new DateTime('1987-05-28'), $user->birthday);
1110+
1111+
Carbon::setTestNow('2010-02-01');
1112+
1113+
// Update
1114+
$user = User::updateOrCreate(
1115+
['_id' => $id],
1116+
['birthday' => new DateTime('1990-01-12'), 'foo' => 'bar'],
1117+
);
1118+
1119+
$this->assertInstanceOf(User::class, $user);
1120+
$this->assertEquals('[email protected]', $user->email);
1121+
$this->assertEquals(new DateTime('1990-01-12'), $user->birthday);
1122+
$this->assertEquals(Carbon::now()->getTimestamp(), $user->updated_at->getTimestamp());
1123+
1124+
// Stored data
1125+
$checkUser = User::find($id)->first();
1126+
$this->assertInstanceOf(User::class, $checkUser);
1127+
$this->assertEquals('[email protected]', $checkUser->email);
1128+
$this->assertEquals(new DateTime('1990-01-12'), $checkUser->birthday);
1129+
$this->assertEquals(Carbon::now()->getTimestamp(), $checkUser->updated_at->getTimestamp());
1130+
}
10941131
}

0 commit comments

Comments
 (0)