Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

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‎

Lines changed: 37 additions & 0 deletions
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' => 'john.doe@example.com', 'birthday' => new DateTime('1987年05月28日')],
1106+
);
1107+
$this->assertInstanceOf(User::class, $user);
1108+
$this->assertEquals('john.doe@example.com', $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('john.doe@example.com', $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('john.doe@example.com', $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)

AltStyle によって変換されたページ (->オリジナル) /