AlternativeProductsRestApiTester   A
last analyzed

Complexity

Total Complexity 6

Size/Duplication

Total Lines 74
Duplicated Lines 0 %

Importance

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

5 Methods

Rating   Name   Duplication   Size   Complexity  
A formatQueryInclude() 0 7 2
A buildConcreteAlternativeProductsUrl() 0 8 1
A buildAbstractAlternativeProductsUrl() 0 8 1
A buildProductAbstractUrl() 0 7 1
A buildProductConcreteUrl() 0 7 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\AlternativeProducts;
11
12
use Spryker\Glue\AlternativeProductsRestApi\AlternativeProductsRestApiConfig;
13
use Spryker\Glue\GlueApplication\Rest\RequestConstantsInterface;
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 void pause()
30
 *
31
 * @SuppressWarnings(\PyzTest\Glue\AlternativeProducts\PHPMD)
32
 */
33
class AlternativeProductsRestApiTester extends ApiEndToEndTester
34
{
35
    use _generated\AlternativeProductsRestApiTesterActions;
0 ignored issues
show
Bug introduced by
The type PyzTest\Glue\Alternative...ctsRestApiTesterActions 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
    public function formatQueryInclude(array $includes = []): string
41
    {
42
        if (!$includes) {
43
            return '';
44
        }
45
46
        return sprintf('?%s=%s', RequestConstantsInterface::QUERY_INCLUDE, implode(',', $includes));
47
    }
48
49
    /**
50
     * @param string $productAbstractSku
51
     * @param array<string> $includes
52
     */
53
    public function buildProductAbstractUrl(string $productAbstractSku, array $includes = []): string
54
    {
55
        return $this->formatFullUrl(
56
            '{resourceAbstractProducts}/{productAbstractSku}' . $this->formatQueryInclude($includes),
57
            [
58
                'resourceAbstractProducts' => ProductsRestApiConfig::RESOURCE_ABSTRACT_PRODUCTS,
59
                'productAbstractSku' => $productAbstractSku,
60
            ],
61
        );
62
    }
63
64
    /**
65
     * @param string $productConcreteSku
66
     * @param array<string> $includes
67
     */
68
    public function buildProductConcreteUrl(string $productConcreteSku, array $includes = []): string
69
    {
70
        return $this->formatFullUrl(
71
            '{resourceConcreteProducts}/{productConcreteSku}' . $this->formatQueryInclude($includes),
72
            [
73
                'resourceConcreteProducts' => ProductsRestApiConfig::RESOURCE_CONCRETE_PRODUCTS,
74
                'productConcreteSku' => $productConcreteSku,
75
            ],
76
        );
77
    }
78
79
    /**
80
     * @param string $productConcreteSku
81
     * @param array<string> $includes
82
     */
83
    public function buildAbstractAlternativeProductsUrl(string $productConcreteSku, array $includes = []): string
84
    {
85
        return $this->formatFullUrl(
86
            '{resourceConcreteProducts}/{productConcreteSku}/{resourceAbstractAlternativeProducts}' . $this->formatQueryInclude($includes),
87
            [
88
                'resourceConcreteProducts' => ProductsRestApiConfig::RESOURCE_CONCRETE_PRODUCTS,
89
                'resourceAbstractAlternativeProducts' => AlternativeProductsRestApiConfig::RELATIONSHIP_NAME_ABSTRACT_ALTERNATIVE_PRODUCTS,
90
                'productConcreteSku' => $productConcreteSku,
91
            ],
92
        );
93
    }
94
95
    /**
96
     * @param string $productConcreteSku
97
     * @param array<string> $includes
98
     */
99
    public function buildConcreteAlternativeProductsUrl(string $productConcreteSku, array $includes = []): string
100
    {
101
        return $this->formatFullUrl(
102
            '{resourceConcreteProducts}/{productConcreteSku}/{resourceConcreteAlternativeProducts}' . $this->formatQueryInclude($includes),
103
            [
104
                'resourceConcreteProducts' => ProductsRestApiConfig::RESOURCE_CONCRETE_PRODUCTS,
105
                'resourceConcreteAlternativeProducts' => AlternativeProductsRestApiConfig::RELATIONSHIP_NAME_CONCRETE_ALTERNATIVE_PRODUCTS,
106
                'productConcreteSku' => $productConcreteSku,
107
            ],
108
        );
109
    }
110
}
111