Lines 100.00% 21 / 21
Methods 100.00% 1 / 1
Classes 100.00% 1 / 1
Covered by tests of size
Name Lines Methods CRAP
 build 100.00% 21 / 21 100.00% 1 / 1 5
25final class FaqStrategy implements StrategyInterface
26{
27    /**
28     * @param array<string,string> $params
29     */
30    public function build(array $params, Link $link): string
31    {
32        if (!array_key_exists(Link::LINK_GET_CATEGORY, $params)) {
33            throw new InvalidArgumentException('Missing required parameter: category');
34        }
35
36        if (!array_key_exists(Link::LINK_GET_ID, $params)) {
37            throw new InvalidArgumentException('Missing required parameter: id');
38        }
39
40        $art = $params[Link::LINK_GET_ARTLANG] ?? 'en';
41        $url =
42            Link::LINK_CONTENT
43            . $params[Link::LINK_GET_CATEGORY]
44            . Link::LINK_HTML_SLASH
45            . $params[Link::LINK_GET_ID]
46            . Link::LINK_HTML_SLASH
47            . $art
48            . Link::LINK_SLASH
49            . $link->getSEOTitle()
50            . Link::LINK_HTML_EXTENSION;
51
52        if (array_key_exists(Link::LINK_GET_HIGHLIGHT, $params)) {
53            $url .=
54                Link::LINK_SEARCHPART_SEPARATOR . Link::LINK_GET_HIGHLIGHT . '=' . $params[Link::LINK_GET_HIGHLIGHT];
55        }
56
57        if (array_key_exists(Link::LINK_FRAGMENT_SEPARATOR, $params)) {
58            $url .= Link::LINK_FRAGMENT_SEPARATOR . $params[Link::LINK_FRAGMENT_SEPARATOR];
59        }
60
61        return $url;
62    }
63}