EloquentHasOneTest   A
last analyzed

Complexity

Total Complexity 4

Size/Duplication

Total Lines 38
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
wmc 4
eloc 17
c 0
b 0
f 0
dl 0
loc 38
rs 10

4 Methods

Rating   Name   Duplication   Size   Complexity  
A createSchema() 0 12 1
A seedData() 0 4 1
A tearDown() 0 4 1
A testDateFieldsReturnChronos() 0 9 1
1
<?php
2
3
namespace Cino\LaravelChronos\Tests\Database;
4
5
use Cake\Chronos\ChronosInterface;
6
use Cino\LaravelChronos\Eloquent\Model;
7
use Illuminate\Database\Eloquent\Relations\HasOne;
8
use Illuminate\Database\Schema\Blueprint;
9
10
class EloquentHasOneTest extends EloquentTestCase
11
{
12
    protected function createSchema(): void
13
    {
14
        $this->schema()->create('users', function (Blueprint $table) {
15
            $table->increments('id');
16
        });
17
18
        $this->schema()->create('phones', function (Blueprint $table) {
19
            $table->increments('id');
20
            $table->unsignedBigInteger('user_id');
21
            $table->timestamps();
22
23
            $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
24
        });
25
    }
26
27
    protected function seedData(): void
28
    {
29
        EloquentHasOneUser::query()->create(['id' => 1]);
30
        EloquentHasOnePhone::query()->create(['user_id' => 1]);
31
    }
32
33
    protected function tearDown(): void
34
    {
35
        $this->schema()->drop('users');
36
        $this->schema()->drop('phones');
37
    }
38
39
    public function testDateFieldsReturnChronos(): void
40
    {
41
        $this->seedData();
42
43
        $user = EloquentHasOneUser::query()->first();
44
        $phone = $user->phone;
45
46
        $this->assertInstanceOf(ChronosInterface::class, $phone->created_at);
47
        $this->assertInstanceOf(ChronosInterface::class, $phone->updated_at);
48
    }
49
}
50
51
class EloquentHasOneUser extends Model
52
{
53
    protected $fillable = ['id'];
54
55
    protected $table = 'users';
56
57
    public $timestamps = false;
58
59
    public function phone(): HasOne
60
    {
61
        return $this->hasOne(EloquentHasOnePhone::class, 'user_id', 'id');
62
    }
63
}
64
65
class EloquentHasOnePhone extends Model
66
{
67
    protected $dates = ['date'];
68
69
    protected $fillable = ['user_id'];
70
71
    protected $table = 'phones';
72
}
73