Completed
Push — product-create-admin ( 72e5ba )
by Kamil
23:08
created

ShipmentApiTest::it_allows_to_get_shipment()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 17
Code Lines 10

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
c 0
b 0
f 0
dl 0
loc 17
rs 9.4285
cc 1
eloc 10
nc 1
nop 0
1
<?php
2
3
/*
4
 * This file is part of the Sylius package.
5
 *
6
 * (c) Paweł Jędrzejewski
7
 *
8
 * For the full copyright and license information, please view the LICENSE
9
 * file that was distributed with this source code.
10
 */
11
12
namespace Sylius\Tests\Controller;
13
14
use Lakion\ApiTestCase\JsonApiTestCase;
15
use Sylius\Component\Core\Model\OrderInterface;
16
use Sylius\Component\Order\Model\OrderItemInterface;
17
use Symfony\Component\HttpFoundation\Response;
18
19
/**
20
 * @author Łukasz Chruściel <[email protected]>
21
 */
22
final class ShipmentApiTest extends CheckoutApiTestCase
23
{
24
    /**
25
     * @test
26
     */
27
    public function it_denies_getting_a_shipment_for_non_authenticated_user()
28
    {
29
        $this->client->request('GET', $this->getShipmentUrl(-1));
30
31
        $response = $this->client->getResponse();
32
        $this->assertResponse($response, 'authentication/access_denied_response', Response::HTTP_UNAUTHORIZED);
33
    }
34
35
    /**
36
     * @test
37
     */
38
    public function it_returns_not_found_response_when_requesting_details_of_a_shipment_which_does_not_exist()
39
    {
40
        $this->loadFixturesFromFile('authentication/api_administrator.yml');
41
42
        $this->client->request('GET', $this->getShipmentUrl(-1), [], [], static::$authorizedHeaderWithAccept);
43
44
        $response = $this->client->getResponse();
45
        $this->assertResponse($response, 'error/not_found_response', Response::HTTP_NOT_FOUND);
46
    }
47
48
    /**
49
     * @test
50
     */
51
    public function it_allows_to_get_shipment()
52
    {
53
        $this->loadFixturesFromFile('authentication/api_administrator.yml');
54
        $this->loadFixturesFromFile('resources/checkout.yml');
55
56
        $orderId = $this->prepareOrder();
57
58
        $this->client->request('GET', $this->getOrderUrl($orderId), [], [], static::$authorizedHeaderWithAccept);
59
60
        $response = $this->client->getResponse();
61
        $rawResponse = json_decode($response->getContent(), true);
62
63
        $this->client->request('GET', $this->getShipmentUrl($rawResponse['shipments'][0]['id']), [], [], static::$authorizedHeaderWithAccept);
64
65
        $response = $this->client->getResponse();
66
        $this->assertResponse($response, 'shipment/shipment_show_response', Response::HTTP_OK);
67
    }
68
69
    /**
70
     * @test
71
     */
72
    public function it_denies_getting_a_collection_of_shipments_for_non_authenticated_user()
73
    {
74
        $this->client->request('GET', '/api/v1/shipments/');
75
76
        $response = $this->client->getResponse();
77
        $this->assertResponse($response, 'authentication/access_denied_response', Response::HTTP_UNAUTHORIZED);
78
    }
79
80
    /**
81
     * @test
82
     */
83
    public function it_allows_to_get_a_collection_of_shipments()
84
    {
85
        $this->loadFixturesFromFile('authentication/api_administrator.yml');
86
        $this->loadFixturesFromFile('resources/checkout.yml');
87
88
        $this->prepareOrder();
89
90
        $this->client->request('GET', '/api/v1/shipments/', [], [], static::$authorizedHeaderWithAccept);
91
92
        $response = $this->client->getResponse();
93
        $this->assertResponse($response, 'shipment/shipment_index_response', Response::HTTP_OK);
94
    }
95
96
    /**
97
     * @param mixed $orderId
98
     *
99
     * @return string
100
     */
101
    private function getOrderUrl($orderId)
102
    {
103
        return '/api/v1/orders/' . $orderId;
104
    }
105
106
    /**
107
     * @param mixed $shipmentId
108
     *
109
     * @return string
110
     */
111
    private function getShipmentUrl($shipmentId)
112
    {
113
        return '/api/v1/shipments/' . $shipmentId;
114
    }
115
}
116