Completed
Pull Request — master (#554)
by Alejandro
11:37 queued 08:50
created

UpdateTagActionTest::provideInvalidBody()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 5
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 3
c 1
b 0
f 0
nc 1
nop 0
dl 0
loc 5
rs 10
1
<?php
2
3
declare(strict_types=1);
4
5
namespace ShlinkioApiTest\Shlink\Rest\Action;
6
7
use GuzzleHttp\RequestOptions;
8
use Shlinkio\Shlink\TestUtils\ApiTest\ApiTestCase;
9
10
class UpdateTagActionTest extends ApiTestCase
11
{
12
    /**
13
     * @test
14
     * @dataProvider provideInvalidBody
15
     */
16
    public function notProvidingTagsReturnsBadRequest(array $body): void
17
    {
18
        $expectedDetail = 'Provided data is not valid';
19
20
        $resp = $this->callApiWithKey(self::METHOD_PUT, '/tags', [RequestOptions::JSON => $body]);
21
        $payload = $this->getJsonResponsePayload($resp);
22
23
        $this->assertEquals(self::STATUS_BAD_REQUEST, $resp->getStatusCode());
24
        $this->assertEquals(self::STATUS_BAD_REQUEST, $payload['status']);
25
        $this->assertEquals('INVALID_ARGUMENT', $payload['type']);
26
        $this->assertEquals('INVALID_ARGUMENT', $payload['error']); // Deprecated
27
        $this->assertEquals($expectedDetail, $payload['detail']);
28
        $this->assertEquals($expectedDetail, $payload['message']); // Deprecated
29
        $this->assertEquals('Invalid data', $payload['title']);
30
    }
31
32
    public function provideInvalidBody(): iterable
33
    {
34
        yield [[]];
35
        yield [['oldName' => 'foo']];
36
        yield [['newName' => 'foo']];
37
    }
38
39
    /** @test */
40
    public function tryingToRenameInvalidTagReturnsNotFound(): void
41
    {
42
        $expectedDetail = 'Tag with name "invalid_tag" could not be found';
43
44
        $resp = $this->callApiWithKey(self::METHOD_PUT, '/tags', [RequestOptions::JSON => [
45
            'oldName' => 'invalid_tag',
46
            'newName' => 'foo',
47
        ]]);
48
        $payload = $this->getJsonResponsePayload($resp);
49
50
        $this->assertEquals(self::STATUS_NOT_FOUND, $resp->getStatusCode());
51
        $this->assertEquals(self::STATUS_NOT_FOUND, $payload['status']);
52
        $this->assertEquals('TAG_NOT_FOUND', $payload['type']);
53
        $this->assertEquals('TAG_NOT_FOUND', $payload['error']); // Deprecated
54
        $this->assertEquals($expectedDetail, $payload['detail']);
55
        $this->assertEquals($expectedDetail, $payload['message']); // Deprecated
56
        $this->assertEquals('Tag not found', $payload['title']);
57
    }
58
}
59