Passed
Push — master ( b3d466...4214a1 )
by Maksim
02:07
created

validateMissingNonCompositeModelRouteBinding()   A

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