FindTest   A
last analyzed

Complexity

Total Complexity 6

Size/Duplication

Total Lines 102
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 6
eloc 48
c 1
b 0
f 0
dl 0
loc 102
rs 10

6 Methods

Rating   Name   Duplication   Size   Complexity  
A validateMultipleModelLookupWithFindMany() 0 19 1
A validateMultipleModelLookup() 0 19 1
A validateSingleModelLookup() 0 13 1
A validateMultipleModelLookupModels() 0 11 1
A validateMultipleModelLookupWithFindManyModels() 0 11 1
A validateSingleModelLookupModel() 0 5 1
1
<?php
2
3
namespace MaksimM\CompositePrimaryKeys\Tests;
4
5
use Illuminate\Database\Eloquent\Collection;
6
use MaksimM\CompositePrimaryKeys\Tests\Stubs\TestUser;
7
8
class FindTest extends CompositeKeyBaseUnit
9
{
10
    /** @test */
11
    public function validateSingleModelLookup()
12
    {
13
        /**
14
         * @var TestUser
15
         */
16
        $model = TestUser::find([
17
            'user_id'         => 1,
18
            'organization_id' => 100,
19
        ]);
20
        $this->assertNotNull($model);
21
        $this->assertInstanceOf(TestUser::class, $model);
22
23
        return $model;
24
    }
25
26
    /** @test
27
     *  @depends  validateSingleModelLookup
28
     */
29
    public function validateSingleModelLookupModel(TestUser $model)
30
    {
31
        $this->assertEquals(1, $model->user_id);
32
        $this->assertEquals(100, $model->organization_id);
33
        $this->assertEquals('Foo', $model->name);
34
    }
35
36
    /** @test */
37
    public function validateMultipleModelLookup()
38
    {
39
        /**
40
         * @var Collection|TestUser[]
41
         */
42
        $models = TestUser::find([[
43
            'user_id'         => 1,
44
            'organization_id' => 100,
45
        ], [
46
            'user_id'         => 1,
47
            'organization_id' => 101,
48
        ], [
49
            'user_id'         => 2,
50
            'organization_id' => 101,
51
        ]]);
52
        $this->assertNotNull($models);
53
        $this->assertInstanceOf(Collection::class, $models);
54
55
        return $models;
56
    }
57
58
    /** @test
59
     *  @depends  validateMultipleModelLookup
60
     */
61
    public function validateMultipleModelLookupModels(Collection $models)
62
    {
63
        $this->assertEquals(1, $models->get(0)->user_id);
64
        $this->assertEquals(100, $models->get(0)->organization_id);
65
        $this->assertEquals('Foo', $models->get(0)->name);
66
        $this->assertEquals(1, $models->get(1)->user_id);
67
        $this->assertEquals(101, $models->get(1)->organization_id);
68
        $this->assertEquals('Bar', $models->get(1)->name);
69
        $this->assertEquals(2, $models->get(2)->user_id);
70
        $this->assertEquals(101, $models->get(2)->organization_id);
71
        $this->assertEquals('Foo Bar', $models->get(2)->name);
72
    }
73
74
    /** @test */
75
    public function validateMultipleModelLookupWithFindMany()
76
    {
77
        /**
78
         * @var Collection|TestUser[]
79
         */
80
        $models = TestUser::findMany([[
81
            'user_id'         => 1,
82
            'organization_id' => 100,
83
        ], [
84
            'user_id'         => 1,
85
            'organization_id' => 101,
86
        ], [
87
            'user_id'         => 2,
88
            'organization_id' => 101,
89
        ]]);
90
        $this->assertNotNull($models);
91
        $this->assertInstanceOf(Collection::class, $models);
92
93
        return $models;
94
    }
95
96
    /** @test
97
     *  @depends  validateMultipleModelLookupWithFindMany
98
     */
99
    public function validateMultipleModelLookupWithFindManyModels(Collection $models)
100
    {
101
        $this->assertEquals(1, $models->get(0)->user_id);
102
        $this->assertEquals(100, $models->get(0)->organization_id);
103
        $this->assertEquals('Foo', $models->get(0)->name);
104
        $this->assertEquals(1, $models->get(1)->user_id);
105
        $this->assertEquals(101, $models->get(1)->organization_id);
106
        $this->assertEquals('Bar', $models->get(1)->name);
107
        $this->assertEquals(2, $models->get(2)->user_id);
108
        $this->assertEquals(101, $models->get(2)->organization_id);
109
        $this->assertEquals('Foo Bar', $models->get(2)->name);
110
    }
111
}
112