Passed
Push — master ( 4c3e72...46eb59 )
by Arthur
10:39
created

UserTestTransformer   A

Complexity

Total Complexity 1

Size/Duplication

Total Lines 5
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 2
dl 0
loc 5
rs 10
c 0
b 0
f 0
wmc 1

1 Method

Rating   Name   Duplication   Size   Complexity  
A toArray() 0 3 1
1
<?php
2
/**
3
 * Created by PhpStorm.
4
 * User: arthur
5
 * Date: 30.10.18
6
 * Time: 22:59
7
 */
8
9
namespace Foundation\Tests;
10
11
12
use Foundation\Abstracts\Tests\TestCase;
13
use Foundation\Abstracts\Transformers\Transformer;
14
15
class TransformerTest extends TestCase
16
{
17
    protected $user;
18
19
    protected $machine;
20
21
    protected $machineNoUser;
22
23
24
    protected function seedData()
25
    {
26
        $this->user = new UserTestModel();
27
        $this->machine = new MachineTestModel($this->user);
28
        $this->machineNoUser = new MachineTestModel(null);
29
    }
30
31
    public function testNoRelation(){
32
        $machineResource = MachineTestTransformer::resource($this->machine)->serialize();
33
        $this->assertEmpty($machineResource);
34
        $this->assertArrayNotHasKey('user', $machineResource);
35
    }
36
37
    public function testIncludeMethodRelation()
38
    {
39
        $machineResource = MachineTestTransformer::resource($this->machine)->include('user')->serialize();
40
        $this->assertArrayHasKey('user', $machineResource);
41
    }
42
43
    public function testEmptyRelation(){
44
        $machineResource = MachineTestTransformer::resource($this->machineNoUser)->include('user')->serialize();
45
        $this->assertArrayHasKey('user', $machineResource);
46
        $this->assertNull($machineResource['user']);
47
    }
48
49
    public function testPreIncludedRelation(){
50
        $machineResource = UserIncludedMachineTestTransformer::resource($this->machine)->serialize();
51
        $this->assertArrayHasKey('user', $machineResource);
52
    }
53
}
54
55
final class MachineTestModel {
56
    public $user;
57
58
    public function __construct($user)
59
    {
60
        $this->user = $user;
61
    }
62
}
63
64
final class UserTestModel {
65
66
}
67
68
69
class MachineTestTransformer extends Transformer {
70
    public function toArray($request)
71
    {
72
        return [];
73
    }
74
75
    public function transformUser(MachineTestModel $machine)
76
    {
77
        return UserTestTransformer::resource($machine->user);
78
    }
79
}
80
81
class UserIncludedMachineTestTransformer extends MachineTestTransformer {
82
    protected $include = ['user'];
83
}
84
85
class UserTestTransformer extends Transformer {
86
87
    public function toArray($request)
88
    {
89
        return [];
90
    }
91
}