Completed
Push — master ( 57eaae...d53a99 )
by Simone
03:18 queued 01:22
created

RuleTest   A

Complexity

Total Complexity 6

Size/Duplication

Total Lines 84
Duplicated Lines 35.71 %

Coupling/Cohesion

Components 1
Dependencies 2

Importance

Changes 0
Metric Value
wmc 6
lcom 1
cbo 2
dl 30
loc 84
rs 10
c 0
b 0
f 0

How to fix   Duplicated Code   

Duplicated Code

Duplicate code is one of the most pungent code smells. A rule that is often used is to re-structure code once it is duplicated in three or more places.

Common duplication problems, and corresponding solutions are:

1
<?php
2
3
/**
4
 * This file is part of sensorario/resources repository
5
 *
6
 * (c) Simone Gentili <[email protected]>
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 Sensorario\Resources\Test\Resources;
13
14
use PHPUnit\Framework\TestCase;
15
use Sensorario\Resources\Rulers\Rule;
16
17
class RuleTest extends TestCase
18
{
19
    /**
20
     * @expectedException \LogicException
21
     * @expectedExceptionMessage rule type is not defined
22
     */
23
    public function testIvalidInitializationThrowAndException()
24
    {
25
        $rule = Rule::fromArray([]);
26
    }
27
28
    public function testContainsConfigurationAsArray()
29
    {
30
        $rule = Rule::fromArray(
31
            $ruleConfiguration = [
32
                Rule::TYPE_OBJECT => [
33
                    '\DateTime',
34
                ]
35
            ]
36
        );
37
38
        $this->assertEquals(
39
            $ruleConfiguration,
40
            $rule->asArray()
41
        );
42
    }
43
44
    /**
45
     * @expectedException \Sensorario\Resources\Exceptions\InvalidTypeException
46
     * @expectedExceptionMessageRegex #Oops! Invalid configuration!!!Type `foo` is not valid.#
47
     */
48
    public function testInvalidTypeIsNotAllowed()
49
    {
50
        $rule = Rule::fromArray([
51
            'foo' => [ ]
52
        ]);
53
54
        $rule->ensureRuleNameIsValid();
55
    }
56
57
    public function testCheckFunctionReturnRuleValidityAsBoolean()
58
    {
59
        $rule = Rule::fromArray([
60
            'foo' => [ ]
61
        ]);
62
63
        $this->assertSame(
64
            false,
65
            $rule->isValid()
66
        );
67
    }
68
69
    public function testCheckIfValueIsOfRightObjectType()
70
    {
71
        $rule = Rule::fromArray(
72
            $ruleConfiguration = [
73
                Rule::TYPE_OBJECT => [
74
                    '\DateTime',
75
                ]
76
            ]
77
        );
78
79
        $this->assertSame(true, $rule->is(Rule::TYPE_OBJECT));
80
        $this->assertSame(false, $rule->isNot(Rule::TYPE_OBJECT));
81
        $this->assertSame(['\DateTime'], $rule->getExpectedType());
82
    }
83
}
84