TipControllerTest::testJsonGetTipAction()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 13
Code Lines 8

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 8
CRAP Score 1

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 13
ccs 8
cts 8
cp 1
rs 9.4285
cc 1
eloc 8
nc 1
nop 0
crap 1
1
<?php
2
3
namespace AppBundle\Tests\Functional\Controller;
4
5
use AppBundle\Tests\FixtureTestCase;
6
use Symfony\Component\HttpFoundation\Response;
7
8
/**
9
 * Class TipControllerTest
10
 *
11
 * @package AppBundle\Tests\Functional\Controller
12
 */
13
class TipControllerTest extends FixtureTestCase
14
{
15
    /**
16
     * @return void
17
     */
18 1
    public function testJsonPostTipActionFailed()
19
    {
20 1
        self::$client->request(
21 1
            'POST',
22 1
            '/api/tips.json',
23 1
            [],
24 1
            [],
25 1
            ['CONTENT_TYPE' => 'application/json'],
26 1
            '{"tip": {"day":"3"}}'
27
        );
28
29 1
        $this->assertEquals(400, self::$client->getResponse()->getStatusCode());
30 1
        $this->assertEquals('23', strpos(self::$client->getResponse()->getContent(), 'Validation Failed'));
31 1
    }
32
33
    /**
34
     * @return void
35
     */
36 1
    public function testJsonPostTipAction()
37
    {
38 1
        $content = '{"day":3,"month":12,"description":"some tip"}';
39
40 1
        self::$client->request(
41 1
            'POST',
42 1
            '/api/tips.json',
43 1
            [],
44 1
            [],
45 1
            ['CONTENT_TYPE' => 'application/json'],
46 1
            sprintf('{"tip": %s}', $content)
47
        );
48
49 1
        $repsonse = self::$client->getResponse();
50
51 1
        $this->assertEquals(200, $repsonse->getStatusCode());
52 1
        $this->assertEquals($content, $repsonse->getContent());
53
54 1
        self::$client->request('GET', $repsonse->headers->get('Location'));
55 1
        $this->assertEquals($content, $repsonse->getContent());
56 1
    }
57
58
    /**
59
     * @return Response
60
     */
61 1
    public function testJsonNewTipAction()
62
    {
63 1
        self::$client->request(
64 1
            'GET',
65 1
            '/api/tips/new'
66
        );
67
68 1
        $response = self::$client->getResponse();
69 1
        $this->assertEquals(400, $response->getStatusCode());
70 1
        $this->assertEquals('{"children":{"day":{},"month":{},"description":{}}}', $response->getContent());
71
72 1
        return $response;
73
    }
74
75
    /**
76
     * @return Response
77
     */
78 1
    public function testJsonDeleteTipAction()
79
    {
80 1
        self::$client->request(
81 1
            'Delete',
82 1
            '/api/tips/3'
83
        );
84
85 1
        $response = self::$client->getResponse();
86 1
        $this->assertEquals(204, $response->getStatusCode());
87
88 1
        return $response;
89
    }
90
91
    /**
92
     * @return Response
93
     */
94 1
    public function testJsonGetTipAction()
95
    {
96 1
        self::$client->request(
97 1
            'GET',
98 1
            '/api/tips/1.json'
99
        );
100
101 1
        $response = self::$client->getResponse();
102 1
        $this->assertEquals(200, $response->getStatusCode());
103 1
        $this->assertArrayHasKey('day', json_decode($response->getContent(), true));
104
105 1
        return $response;
106
    }
107
108
    /**
109
     * @return void
110
     */
111 1
    public function testCGetAction()
112
    {
113 1
        self::$client->request(
114 1
            'GET',
115 1
            '/api/tips?page=2'
116
        );
117
118 1
        $response = self::$client->getResponse();
119 1
        $this->assertEquals(200, $response->getStatusCode());
120 1
        $this->assertEquals('1', strpos($response->getContent(), '"page":2'));
121 1
    }
122
123
    /**
124
     * @param Response $response
125
     *
126
     * @depends testJsonGetTipAction
127
     * @return void
128
     */
129 1
    public function testJsonUpdateTipAction(Response $response)
130
    {
131 1
        $content = str_replace('"day":10', '"day":5', $response->getContent());
132
133 1
        self::$client->request(
134 1
            'POST',
135 1
            '/api/tips/1/update.json',
136 1
            [],
137 1
            [],
138 1
            ['CONTENT_TYPE' => 'application/json'],
139 1
            sprintf('{"tip": %s}', $content)
140
        );
141
142 1
        $this->assertEquals(200, self::$client->getResponse()->getStatusCode());
143 1
        $this->assertEquals($content, self::$client->getResponse()->getContent());
144 1
    }
145
146
    /**
147
     * @return array
148
     */
149 7
    protected function getDataFixtures()
150
    {
151 7
        return array_merge(
152 7
            parent::getDataFixtures(),
153
            [
154 7
                __DIR__ . '/../../DataFixtures/ORM/tip.yml'
155
            ]
156
        );
157
    }
158
}
159