Skip to content

Commit cf3b5cc

Browse files
committed
Add tests for date;
1 parent 5bbe816 commit cf3b5cc

File tree

2 files changed

+58
-0
lines changed

2 files changed

+58
-0
lines changed

tests/Casts/DateTest.php

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace MongoDB\Laravel\Tests\Casts;
6+
7+
use Illuminate\Support\Carbon;
8+
use MongoDB\Laravel\Tests\Models\Casting;
9+
use MongoDB\Laravel\Tests\TestCase;
10+
11+
/** @group hans */
12+
class DateTest extends TestCase
13+
{
14+
protected function setUp(): void
15+
{
16+
parent::setUp();
17+
18+
Casting::truncate();
19+
}
20+
21+
public function testDate(): void
22+
{
23+
$model = Casting::query()->create(['dateField' => now()]);
24+
$check = Casting::query()->find($model->_id);
25+
26+
self::assertInstanceOf(Carbon::class,$check->dateField);
27+
self::assertEquals(now()->startOfDay()->format('Y-m-d H:i:s'),(string)$check->dateField);
28+
29+
$model->update(['dateField' => now()->subDay()]);
30+
$check = Casting::query()->find($model->_id);
31+
32+
self::assertInstanceOf(Carbon::class,$check->dateField);
33+
self::assertEquals(now()->subDay()->startOfDay()->format('Y-m-d H:i:s'),(string)$check->dateField);
34+
}
35+
36+
public function testDateAsString(): void
37+
{
38+
$model = Casting::query()->create(['dateField' => '2023-10-29']);
39+
$check = Casting::query()->find($model->_id);
40+
41+
self::assertInstanceOf(Carbon::class,$check->dateField);
42+
self::assertEquals(
43+
Carbon::createFromTimestamp(1698577443)->startOfDay()->format('Y-m-d H:i:s'),
44+
(string)$check->dateField
45+
);
46+
47+
$model->update(['dateField' => '2023-10-28']);
48+
$check = Casting::query()->find($model->_id);
49+
50+
self::assertInstanceOf(Carbon::class,$check->dateField);
51+
self::assertEquals(
52+
Carbon::createFromTimestamp(1698577443)->subDay()->startOfDay()->format('Y-m-d H:i:s'),
53+
(string)$check->dateField
54+
);
55+
}
56+
}

tests/Models/Casting.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ class Casting extends Eloquent
2222
'objectValue',
2323
'jsonValue',
2424
'collectionValue',
25+
'dateField',
2526
];
2627

2728
protected $casts = [
@@ -33,5 +34,6 @@ class Casting extends Eloquent
3334
'objectValue' => 'object',
3435
'jsonValue' => 'json',
3536
'collectionValue' => 'collection',
37+
'dateField' => 'date',
3638
];
3739
}

0 commit comments

Comments
 (0)