ResourceHandlerTest::getResourceHandler()   A
last analyzed

Complexity

Conditions 2
Paths 2

Size

Total Lines 22
Code Lines 15

Duplication

Lines 0
Ratio 0 %

Importance

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