validateMissingNonCompositeModelRouteBinding()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 2
dl 0
loc 4
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 Illuminate\Database\Eloquent\Collection;
6
use Illuminate\Routing\Middleware\SubstituteBindings;
7
use MaksimM\CompositePrimaryKeys\Tests\Stubs\TestUserNonComposite;
8
9
class NonCompositeFindTest extends CompositeKeyBaseUnit
10
{
11
    protected function getEnvironmentSetUp($app)
12
    {
13
        $app['config']->set('database.default', 'testing');
14
        $app['router']->get('non-composite-users/{testUserNonComposite}', function (TestUserNonComposite $testUserNonComposite) {
15
            return $testUserNonComposite->setHidden(['created_at', 'updated_at'])->toJson();
16
        })->middleware(SubstituteBindings::class);
17
    }
18
19
    /** @test */
20
    public function validateSingleModelLookup()
21
    {
22
        /**
23
         * @var TestUserNonComposite
24
         */
25
        $model = TestUserNonComposite::find(1);
26
        $this->assertNotNull($model);
27
        $this->assertInstanceOf(TestUserNonComposite::class, $model);
28
29
        return $model;
30
    }
31
32
    /** @test
33
     *  @depends  validateSingleModelLookup
34
     */
35
    public function validateSingleModelLookupModel(TestUserNonComposite $model)
36
    {
37
        $this->assertEquals(1, $model->user_id);
38
        $this->assertEquals(100, $model->organization_id);
39
        $this->assertEquals('Foo', $model->name);
40
    }
41
42
    /** @test */
43
    public function validateMultipleModelLookup()
44
    {
45
        /**
46
         * @var Collection|TestUserNonComposite[]
47
         */
48
        $models = TestUserNonComposite::find([1, 2]);
49
        $this->assertNotNull($models);
50
        $this->assertInstanceOf(Collection::class, $models);
51
52
        return $models;
53
    }
54
55
    /** @test
56
     *  @depends  validateMultipleModelLookup
57
     */
58
    public function validateMultipleModelLookupModels(Collection $models)
59
    {
60
        $this->assertEquals(1, $models->get(0)->user_id);
61
        $this->assertEquals(100, $models->get(0)->organization_id);
62
        $this->assertEquals('Foo', $models->get(0)->name);
63
        $this->assertEquals(2, $models->get(1)->user_id);
64
        $this->assertEquals(100, $models->get(1)->organization_id);
65
        $this->assertEquals('Bar', $models->get(1)->name);
66
    }
67
68
    /** @test */
69
    public function validateMultipleModelLookupWithFindMany()
70
    {
71
        /**
72
         * @var Collection|TestUserNonComposite[]
73
         */
74
        $models = TestUserNonComposite::findMany([1, 2]);
75
        $this->assertNotNull($models);
76
        $this->assertInstanceOf(Collection::class, $models);
77
78
        return $models;
79
    }
80
81
    /** @test
82
     *  @depends  validateMultipleModelLookupWithFindMany
83
     */
84
    public function validateMultipleModelLookupWithFindManyModels(Collection $models)
85
    {
86
        $this->assertEquals(1, $models->get(0)->user_id);
87
        $this->assertEquals(100, $models->get(0)->organization_id);
88
        $this->assertEquals('Foo', $models->get(0)->name);
89
        $this->assertEquals(2, $models->get(1)->user_id);
90
        $this->assertEquals(100, $models->get(1)->organization_id);
91
        $this->assertEquals('Bar', $models->get(1)->name);
92
    }
93
94
    /** @test
95
     */
96
    public function validateMissingNonCompositeModelRouteBinding()
97
    {
98
        $data = $this->call('GET', 'non-composite-users/99');
99
        $this->assertEquals(404, $data->getStatusCode());
100
    }
101
102
    /** @test
103
     * @depends  validateSingleModelLookup
104
     */
105
    public function validateNonCompositeModelRouteBinding(TestUserNonComposite $model)
106
    {
107
        $data = $this->call('GET', 'non-composite-users/1');
108
        $this->assertEquals(200, $data->getStatusCode());
109
        $this->assertEquals($model->setHidden(['created_at', 'updated_at'])->toJson(), $data->getContent());
110
    }
111
}
112