Completed
Push — master ( 29aa5a...0536a5 )
by
unknown
01:18
created

ResourceHandlerTest::provideResourceHandler()   B

Complexity

Conditions 1
Paths 1

Size

Total Lines 26
Code Lines 18

Duplication

Lines 0
Ratio 0 %

Importance

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