MatcherFactory::createFrom()   A
last analyzed

Complexity

Conditions 6
Paths 6

Size

Total Lines 15
Code Lines 12

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 10
CRAP Score 6.1666

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 6
eloc 12
c 1
b 0
f 0
nc 6
nop 2
dl 0
loc 15
ccs 10
cts 12
cp 0.8333
crap 6.1666
rs 9.2222
1
<?php
2
/**
3
 * This file is part of Phiremock.
4
 *
5
 * Phiremock is free software: you can redistribute it and/or modify
6
 * it under the terms of the GNU Lesser General Public License as published by
7
 * the Free Software Foundation, either version 3 of the License, or
8
 * (at your option) any later version.
9
 *
10
 * Phiremock is distributed in the hope that it will be useful,
11
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13
 * GNU General Public License for more details.
14
 *
15
 * You should have received a copy of the GNU General Public License
16
 * along with Phiremock.  If not, see <http://www.gnu.org/licenses/>.
17
 */
18
19
namespace Mcustiel\Phiremock\Domain\Condition\Matchers;
20
21
use Mcustiel\Phiremock\Domain\Condition\ConditionValue;
22
use Mcustiel\Phiremock\Domain\Condition\Json;
23
use Mcustiel\Phiremock\Domain\Condition\MatchersEnum;
24
use Mcustiel\Phiremock\Domain\Condition\Pattern;
25
use Mcustiel\Phiremock\Domain\Condition\StringValue;
26
27
class MatcherFactory
28
{
29 18
    public function createFrom(string $identifier, $value): Matcher
30
    {
31
        switch ($identifier) {
32 18
            case MatchersEnum::CONTAINS:
33
                return self::contains($value);
34 18
            case MatchersEnum::EQUAL_TO:
35 6
                return self::equalsTo($value);
36 18
            case MatchersEnum::MATCHES:
37 6
                return self::matches($value);
38 18
            case MatchersEnum::SAME_JSON:
39 6
                return self::jsonEquals($value);
40 18
            case MatchersEnum::SAME_STRING:
41 18
                return self::sameString($value);
42
        }
43
        throw new \InvalidArgumentException('Invalid condition matcher specified: ' . $identifier);
44
    }
45
46
    public static function contains($value): Contains
47
    {
48
        return new Contains(new StringValue($value));
49
    }
50
51 6
    public static function equalsTo($value): Equals
52
    {
53 6
        return new Equals(new ConditionValue($value));
54
    }
55
56 6
    public static function matches($value): RegExp
57
    {
58 6
        return new RegExp(new Pattern($value));
59
    }
60
61 6
    public static function jsonEquals($value): JsonEquals
62
    {
63 6
        return new JsonEquals(new Json($value));
64
    }
65
66 18
    public static function sameString($value): CaseInsensitiveEquals
67
    {
68 18
        return new CaseInsensitiveEquals(new StringValue($value));
69
    }
70
}
71