Completed
Pull Request — master (#554)
by Alejandro
13:38
created

EditShortUrlActionTest   A

Complexity

Total Complexity 2

Size/Duplication

Total Lines 37
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 23
dl 0
loc 37
rs 10
c 1
b 0
f 0
wmc 2

2 Methods

Rating   Name   Duplication   Size   Complexity  
A tryingToEditInvalidUrlReturnsNotFoundError() 0 15 1
A providingInvalidDataReturnsBadRequest() 0 16 1
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 EditShortUrlActionTest extends ApiTestCase
11
{
12
    /** @test */
13
    public function tryingToEditInvalidUrlReturnsNotFoundError(): void
14
    {
15
        $expectedDetail = 'No URL found with short code "invalid"';
16
17
        $resp = $this->callApiWithKey(self::METHOD_PATCH, '/short-urls/invalid', [RequestOptions::JSON => []]);
18
        $payload = $this->getJsonResponsePayload($resp);
19
20
        $this->assertEquals(self::STATUS_NOT_FOUND, $resp->getStatusCode());
21
        $this->assertEquals(self::STATUS_NOT_FOUND, $payload['status']);
22
        $this->assertEquals('INVALID_SHORTCODE', $payload['type']);
23
        $this->assertEquals('INVALID_SHORTCODE', $payload['error']); // Deprecated
24
        $this->assertEquals($expectedDetail, $payload['detail']);
25
        $this->assertEquals($expectedDetail, $payload['message']); // Deprecated
26
        $this->assertEquals('Short URL not found', $payload['title']);
27
        $this->assertEquals('invalid', $payload['shortCode']);
28
    }
29
30
    /** @test */
31
    public function providingInvalidDataReturnsBadRequest(): void
32
    {
33
        $expectedDetail = 'Provided data is not valid';
34
35
        $resp = $this->callApiWithKey(self::METHOD_PATCH, '/short-urls/invalid', [RequestOptions::JSON => [
36
            'maxVisits' => 'not_a_number',
37
        ]]);
38
        $payload = $this->getJsonResponsePayload($resp);
39
40
        $this->assertEquals(self::STATUS_BAD_REQUEST, $resp->getStatusCode());
41
        $this->assertEquals(self::STATUS_BAD_REQUEST, $payload['status']);
42
        $this->assertEquals('INVALID_ARGUMENT', $payload['type']);
43
        $this->assertEquals('INVALID_ARGUMENT', $payload['error']); // Deprecated
44
        $this->assertEquals($expectedDetail, $payload['detail']);
45
        $this->assertEquals($expectedDetail, $payload['message']); // Deprecated
46
        $this->assertEquals('Invalid data', $payload['title']);
47
    }
48
}
49