Passed
Push — master ( d8e957...a3e243 )
by Maksim
03:45
created

validateEagerLoadBelongsToRelation()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 17
Code Lines 7

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 7
dl 0
loc 17
rs 10
c 0
b 0
f 0
cc 1
nc 1
nop 0
1
<?php
2
3
namespace MaksimM\CompositePrimaryKeys\Tests;
4
5
use MaksimM\CompositePrimaryKeys\Exceptions\WrongRelationConfigurationException;
6
use MaksimM\CompositePrimaryKeys\Tests\Stubs\TestUser;
7
8
class CompositeToCompositeRelationTest extends CompositeKeyBaseUnit
9
{
10
    /** @test */
11
    public function validateMissingBelongsToRelation()
12
    {
13
        /**
14
         * @var TestUser
15
         */
16
        $user = TestUser::find([
17
            'user_id'         => 1,
18
            'organization_id' => 101,
19
        ]);
20
21
        $referrer_user = $user->referrer()->first();
22
23
        $this->assertNull($referrer_user);
24
    }
25
26
27
    /** @test */
28
    public function validateBelongsToRelation()
29
    {
30
        /**
31
         * @var TestUser
32
         */
33
        $user = TestUser::find([
34
            'user_id'         => 2,
35
            'organization_id' => 101,
36
        ]);
37
38
        $referrer_user = $user->referrer()->first();
39
40
        $this->assertNotNull($referrer_user);
41
42
        $this->assertInstanceOf(TestUser::class, $referrer_user);
43
    }
44
45
    /** @test */
46
    public function validateImproperBelongsToRelation()
47
    {
48
        /**
49
         * @var TestUser
50
         */
51
        $user = TestUser::find([
52
            'user_id'         => 2,
53
            'organization_id' => 101,
54
        ]);
55
56
        try {
57
            $user->wrongConfiguredReferrer()->first();
58
        }
59
        catch (\Exception $exception) {
60
            $this->assertInstanceOf(WrongRelationConfigurationException::class, $exception);
61
        }
62
    }
63
64
    /** @test */
65
    public function validateAutomaticBelongsToRelation()
66
    {
67
        /**
68
         * @var TestUser
69
         */
70
        $user = TestUser::find([
71
            'user_id'         => 2,
72
            'organization_id' => 101,
73
        ]);
74
75
        $referrer = $user->automaticReferrer()->first();
76
        $this->assertNull($referrer);
77
    }
78
79
    /** @test */
80
    public function validateEagerBelongsToRelation()
81
    {
82
        /**
83
         * @var TestUser
84
         */
85
        $user = TestUser::find([
86
            'user_id'         => 2,
87
            'organization_id' => 101,
88
        ]);
89
90
        $referrer_user = $user->referrer;
91
92
        $this->assertNotNull($referrer_user);
93
94
        $this->assertInstanceOf(TestUser::class, $referrer_user);
95
    }
96
97
    /** @test */
98
    public function validateEagerWithBelongsToRelation()
99
    {
100
        /**
101
         * @var TestUser
102
         */
103
        $user = TestUser::with(['referrer'])->find([
104
            'user_id'         => 2,
105
            'organization_id' => 101,
106
        ]);
107
108
        $referrer_user = $user->referrer;
109
110
        $this->assertNotNull($referrer_user);
111
112
        $this->assertInstanceOf(TestUser::class, $referrer_user);
113
    }
114
115
    /** @test */
116
    public function validateEagerLoadBelongsToRelation()
117
    {
118
        /**
119
         * @var TestUser
120
         */
121
        $user = TestUser::find([
122
            'user_id'         => 2,
123
            'organization_id' => 101,
124
        ]);
125
126
        $user->load('referrer');
127
128
        $referrer_user = $user->referrer;
129
130
        $this->assertNotNull($referrer_user);
131
132
        $this->assertInstanceOf(TestUser::class, $referrer_user);
133
    }
134
135
    /** @test */
136
    public function validateUpdateBelongsToRRelation()
137
    {
138
        /**
139
         * @var TestUser
140
         */
141
        $user = TestUser::find([
142
            'user_id'         => 2,
143
            'organization_id' => 101,
144
        ]);
145
146
        $user->referrer->update([
147
            'counter' => 3333
148
        ]);
149
150
        $this->assertEquals(3333, $user->referrer->counter);
151
    }
152
153
    /** @test */
154
    public function validateQuickUpdateBelongsToRelation()
155
    {
156
        /**
157
         * @var TestUser
158
         */
159
        $user = TestUser::find([
160
            'user_id'         => 2,
161
            'organization_id' => 101,
162
        ]);
163
164
        $user->referrer()->update([
165
            'counter' => 3333
166
        ]);
167
168
        $this->assertEquals(3333, $user->referrer()->first()->counter);
169
    }
170
171
}
172