Completed
Pull Request — master (#12)
by
unknown
03:35
created

ResourceHandlerTest   A

Complexity

Total Complexity 9

Size/Duplication

Total Lines 152
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 6

Importance

Changes 3
Bugs 1 Features 1
Metric Value
wmc 9
c 3
b 1
f 1
lcom 1
cbo 6
dl 0
loc 152
rs 10

8 Methods

Rating   Name   Duplication   Size   Complexity  
A initialize() 0 6 1
A getSingleWrongEntityManager() 0 12 1
A getSingle() 0 21 1
A getCollection() 0 21 2
A postSingle() 0 6 1
A putSingle() 0 6 1
A deleteSingle() 0 20 1
B provideResourceHandler() 0 26 1
1
<?php
2
3
namespace Managlea\Tests;
4
5
use Managlea\Component\EntityManagerFactory;
6
use Managlea\Component\ResourceHandler;
7
use Managlea\Component\ResourceHandlerInterface;
8
use Managlea\Component\ResourceMapper;
9
use Managlea\Tests\Model\Product;
10
11
class ResourceHandlerTest extends \PHPUnit_Framework_TestCase
12
{
13
    /**
14
     * @test
15
     */
16
    public function initialize()
17
    {
18
        $resourceMapper = new ResourceMapper;
19
        $resourceHandler = ResourceHandler::initialize(new EntityManagerFactory(), $resourceMapper);
20
        $this->assertTrue($resourceHandler instanceof ResourceHandlerInterface);
21
    }
22
23
    /**
24
     * @test
25
     * @expectedException \Exception
26
     */
27
    public function getSingleWrongEntityManager()
28
    {
29
        $entityManagerFactory = $this->getMockBuilder('Managlea\Component\EntityManagerFactory')
30
            ->disableOriginalConstructor()
31
            ->getMock();
32
        $entityManagerFactory->method('create')
33
            ->willReturn('foo');
34
35
        $resourceMapper = new ResourceMapper;
36
        $resourceHandler = ResourceHandler::initialize($entityManagerFactory, $resourceMapper);
37
        $resourceHandler->getSingle('product', 1);
38
    }
39
40
    /**
41
     * @test
42
     */
43
    public function getSingle()
44
    {
45
        $entityManager = $this->getMockBuilder('Managlea\Component\EntityManager\DoctrineEntityManager')
46
            ->disableOriginalConstructor()
47
            ->getMock();
48
        $entityManager->method('get')
49
            ->willReturn('bar');
50
51
        $entityManagerFactory = $this->getMockBuilder('Managlea\Component\EntityManagerFactory')
52
            ->disableOriginalConstructor()
53
            ->getMock();
54
        $entityManagerFactory->method('create')
55
            ->willReturn($entityManager);
56
57
        $resourceMapper = new ResourceMapper;
58
        $resourceHandler = ResourceHandler::initialize($entityManagerFactory, $resourceMapper);
59
        $this->assertTrue($resourceHandler instanceof ResourceHandlerInterface);
60
61
        $single = $resourceHandler->getSingle('product', 1);
62
        $this->assertEquals('bar', $single);
63
    }
64
65
    /**
66
     * @test
67
     */
68
    public function getCollection()
69
    {
70
        $entityManager = $this->getMockBuilder('Managlea\Component\EntityManager\DoctrineEntityManager')
71
            ->disableOriginalConstructor()
72
            ->getMock();
73
        $entityManager->method('getCollection')
74
            ->willReturn(array('foo', 'bar'));
75
76
        $entityManagerFactory = $this->getMockBuilder('Managlea\Component\EntityManagerFactory')
77
            ->disableOriginalConstructor()
78
            ->getMock();
79
        $entityManagerFactory->method('create')
80
            ->willReturn($entityManager);
81
82
        $resourceMapper = new ResourceMapper;
83
        $resourceHandler = ResourceHandler::initialize($entityManagerFactory, $resourceMapper);
84
        $this->assertTrue($resourceHandler instanceof ResourceHandlerInterface);
85
86
        $collection = $resourceHandler->getCollection('product');
87
        $this->assertTrue(count($collection) == 2 && is_array($collection));
88
    }
89
90
    /**
91
     * @test
92
     */
93
    public function postSingle()
94
    {
95
        $resourceHandler = $this->provideResourceHandler('create');
96
        $resource = $resourceHandler->postSingle('product', $this->data);
97
        $this->assertEquals($this->data['name'], $resource->getName());
98
    }
99
100
    /**
101
     * @test
102
     */
103
    public function putSingle()
104
    {
105
        $resourceHandler = $this->provideResourceHandler('update');
106
        $resource = $resourceHandler->putSingle('product', 1, $this->data);
107
        $this->assertEquals($this->data['name'], $resource->getName());
108
    }
109
110
    /**
111
     * @test
112
     */
113
    public function deleteSingle()
114
    {
115
        $entityManager = $this->getMockBuilder('Managlea\Component\EntityManager\DoctrineEntityManager')
116
            ->disableOriginalConstructor()
117
            ->getMock();
118
        $entityManager->method('delete')
119
            ->willReturn(true);
120
121
        $entityManagerFactory = $this->getMockBuilder('Managlea\Component\EntityManagerFactory')
122
            ->disableOriginalConstructor()
123
            ->getMock();
124
        $entityManagerFactory->method('create')
125
            ->willReturn($entityManager);
126
        $resourceMapper = new ResourceMapper;
127
128
        $resourceHandler = ResourceHandler::initialize($entityManagerFactory, $resourceMapper);
129
130
        $resource = $resourceHandler->deleteSingle('product', 1);
131
        $this->assertEquals(true, $resource);
132
    }
133
134
    private $data = array('name' => 'Random Joe', 'dateOfBirth' => '1970-01-01');
0 ignored issues
show
Comprehensibility introduced by
Consider using a different property name as you override a private property of the parent class.
Loading history...
135
136
    private function provideResourceHandler($action)
137
    {
138
        $data = $this->data;
139
140
        $product = new Product();
141
        $product->setName($data['name']);
142
        $product->setDateOfBirth($data['dateOfBirth']);
143
144
        $entityManager = $this->getMockBuilder('Managlea\Component\EntityManager\DoctrineEntityManager')
145
            ->disableOriginalConstructor()
146
            ->getMock();
147
148
        $entityManager->method($action)
149
            ->willReturn($product);
150
151
        $entityManagerFactory = $this->getMockBuilder('Managlea\Component\EntityManagerFactory')
152
            ->disableOriginalConstructor()
153
            ->getMock();
154
        $entityManagerFactory->method('create')
155
            ->willReturn($entityManager);
156
        $resourceMapper = new ResourceMapper;
157
158
        $resourceHandler = ResourceHandler::initialize($entityManagerFactory, $resourceMapper);
159
160
        return $resourceHandler;
161
    }
162
}
163