Completed
Pull Request — master (#133)
by Simone
02:00
created

RuleTest   A

Complexity

Total Complexity 5

Size/Duplication

Total Lines 67
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 2

Importance

Changes 2
Bugs 1 Features 0
Metric Value
wmc 5
c 2
b 1
f 0
lcom 0
cbo 2
dl 0
loc 67
rs 10

5 Methods

Rating   Name   Duplication   Size   Complexity  
A testIvalidInitializationThrowAndException() 0 4 1
A testInvalidTypeIsNotAllowed() 0 8 1
A testCheckFunctionReturnRuleValidityAsBoolean() 0 11 1
A testContainsConfigurationAsArray() 0 15 1
A testCheckIfValueIsOfRightObjectType() 0 14 1
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([]);
0 ignored issues
show
Unused Code introduced by
$rule is not used, you could remove the assignment.

This check looks for variable assignements that are either overwritten by other assignments or where the variable is not used subsequently.

$myVar = 'Value';
$higher = false;

if (rand(1, 6) > 3) {
    $higher = true;
} else {
    $higher = false;
}

Both the $myVar assignment in line 1 and the $higher assignment in line 2 are dead. The first because $myVar is never used and the second because $higher is always overwritten for every possible time line.

Loading history...
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