ProductsApiTester   A
last analyzed

Complexity

Total Complexity 6

Size/Duplication

Total Lines 84
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
wmc 6
eloc 23
dl 0
loc 84
rs 10
c 0
b 0
f 0

5 Methods

Rating   Name   Duplication   Size   Complexity  
A buildProductAbstractUrl() 0 7 1
A buildProductConcreteUrl() 0 7 1
A buildProductAbstractPricesUrl() 0 8 1
A formatQueryInclude() 0 7 2
A buildProductConcretePricesUrl() 0 8 1
1
<?php
2
3
/**
4
 * This file is part of the Spryker Commerce OS.
5
 * For full license information, please view the LICENSE file that was distributed with this source code.
6
 */
7
8
declare(strict_types = 1);
9
10
namespace PyzTest\Glue\Products;
11
12
use Spryker\Glue\GlueApplication\Rest\RequestConstantsInterface;
13
use Spryker\Glue\ProductPricesRestApi\ProductPricesRestApiConfig;
14
use Spryker\Glue\ProductsRestApi\ProductsRestApiConfig;
15
use SprykerTest\Glue\Testify\Tester\ApiEndToEndTester;
16
17
/**
18
 * Inherited Methods
19
 *
20
 * @method void wantToTest($text)
21
 * @method void wantTo($text)
22
 * @method void execute($callable)
23
 * @method void expectTo($prediction)
24
 * @method void expect($prediction)
25
 * @method void amGoingTo($argumentation)
26
 * @method void am($role)
27
 * @method void lookForwardTo($achieveValue)
28
 * @method void comment($description)
29
 * @method \Codeception\Lib\Friend haveFriend($name, $actorClass = null)
30
 *
31
 * @SuppressWarnings(\PyzTest\Glue\Products\PHPMD)
32
 */
33
class ProductsApiTester extends ApiEndToEndTester
34
{
35
    use _generated\ProductsApiTesterActions;
0 ignored issues
show
Bug introduced by
The type PyzTest\Glue\Products\_g...roductsApiTesterActions was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
36
37
    /**
38
     * @param array<string> $includes
39
     *
40
     * @return string
41
     */
42
    public function formatQueryInclude(array $includes = []): string
43
    {
44
        if (!$includes) {
45
            return '';
46
        }
47
48
        return sprintf('?%s=%s', RequestConstantsInterface::QUERY_INCLUDE, implode(',', $includes));
49
    }
50
51
    /**
52
     * @param string $productAbstractSku
53
     * @param array<string> $includes
54
     *
55
     * @return string
56
     */
57
    public function buildProductAbstractUrl(string $productAbstractSku, array $includes = []): string
58
    {
59
        return $this->formatFullUrl(
60
            '{resourceAbstractProducts}/{productAbstractSku}' . $this->formatQueryInclude($includes),
61
            [
62
                'resourceAbstractProducts' => ProductsRestApiConfig::RESOURCE_ABSTRACT_PRODUCTS,
63
                'productAbstractSku' => $productAbstractSku,
64
            ],
65
        );
66
    }
67
68
    /**
69
     * @param string $productAbstractSku
70
     * @param array<string> $includes
71
     *
72
     * @return string
73
     */
74
    public function buildProductAbstractPricesUrl(string $productAbstractSku, array $includes = []): string
75
    {
76
        return $this->formatFullUrl(
77
            '{resourceAbstractProducts}/{productAbstractSku}/{resourceAbstractProductPrices}' . $this->formatQueryInclude($includes),
78
            [
79
                'resourceAbstractProducts' => ProductsRestApiConfig::RESOURCE_ABSTRACT_PRODUCTS,
80
                'productAbstractSku' => $productAbstractSku,
81
                'resourceAbstractProductPrices' => ProductPricesRestApiConfig::RESOURCE_ABSTRACT_PRODUCT_PRICES,
82
            ],
83
        );
84
    }
85
86
    /**
87
     * @param string $productConcreteSku
88
     * @param array<string> $includes
89
     *
90
     * @return string
91
     */
92
    public function buildProductConcreteUrl(string $productConcreteSku, array $includes = []): string
93
    {
94
        return $this->formatFullUrl(
95
            '{resourceConcreteProducts}/{productConcreteSku}' . $this->formatQueryInclude($includes),
96
            [
97
                'resourceConcreteProducts' => ProductsRestApiConfig::RESOURCE_CONCRETE_PRODUCTS,
98
                'productConcreteSku' => $productConcreteSku,
99
            ],
100
        );
101
    }
102
103
    /**
104
     * @param string $productConcreteSku
105
     * @param array<string> $includes
106
     *
107
     * @return string
108
     */
109
    public function buildProductConcretePricesUrl(string $productConcreteSku, array $includes = []): string
110
    {
111
        return $this->formatFullUrl(
112
            '{resourceConcreteProducts}/{productConcreteSku}/{resourceConcreteProductPrices}' . $this->formatQueryInclude($includes),
113
            [
114
                'resourceConcreteProducts' => ProductsRestApiConfig::RESOURCE_CONCRETE_PRODUCTS,
115
                'productConcreteSku' => $productConcreteSku,
116
                'resourceConcreteProductPrices' => ProductPricesRestApiConfig::RESOURCE_CONCRETE_PRODUCT_PRICES,
117
            ],
118
        );
119
    }
120
}
121