Completed
Push — master ( 1afcb7...2d6625 )
by Marcel
04:26
created

TipControllerTest::testJsonPostTipAction()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 21
Code Lines 12

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 15
CRAP Score 1

Importance

Changes 0
Metric Value
dl 0
loc 21
ccs 15
cts 15
cp 1
rs 9.3142
c 0
b 0
f 0
cc 1
eloc 12
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
        $content = '{"day":18,"month":1,"description":"Recusandae asperiores accusamus nihil."}';
97
98 1
        self::$client->request(
99 1
            'GET',
100 1
            '/api/tips/1.json'
101
        );
102
103 1
        $response = self::$client->getResponse();
104 1
        $this->assertEquals(200, $response->getStatusCode());
105 1
        $this->assertEquals($content, $response->getContent());
106
107
        return $response;
108
    }
109
110
    /**
111
     * @return void
112
     */
113 1
    public function testCGetAction()
114
    {
115 1
        self::$client->request(
116 1
            'GET',
117 1
            '/api/tips?page=2'
118
        );
119
120 1
        $response = self::$client->getResponse();
121 1
        $this->assertEquals(200, $response->getStatusCode());
122 1
        $this->assertEquals('2', strpos(self::$client->getResponse()->getContent(), '\"page\":2,'));
123
    }
124
125
    /**
126
     * @param Response $response
127
     *
128
     * @depends testJsonGetTipAction
129
     * @return void
130
     */
131
    public function testJsonUpdateTipAction(Response $response)
132
    {
133
        $content = str_replace('"day":10', '"day":5', $response->getContent());
134
135
        self::$client->request(
136
            'POST',
137
            '/api/tips/1/update.json',
138
            [],
139
            [],
140
            ['CONTENT_TYPE' => 'application/json'],
141
            sprintf('{"tip": %s}', $content)
142
        );
143
144
        $this->assertEquals(200, self::$client->getResponse()->getStatusCode());
145
        $this->assertEquals($content, self::$client->getResponse()->getContent());
146
    }
147
148
    /**
149
     * @return array
150
     */
151 6
    protected function getDataFixtures()
152
    {
153 6
        return array_merge(
154 6
            parent::getDataFixtures(),
155
            [
156
                __DIR__ . '/../../DataFixtures/ORM/tip.yml'
157 6
            ]
158
        );
159
    }
160
}
161