Passed
Push — master ( 71cd79...3a5308 )
by Vincent
02:53 queued 20s
created

assertContainsOnlyAllowedMembersFailedProvider()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 10
Code Lines 6

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 6
nc 1
nop 0
dl 0
loc 10
rs 10
c 0
b 0
f 0
1
<?php
2
3
namespace VGirol\JsonApiAssert\Tests\Constraints;
4
5
use VGirol\JsonApiAssert\Constraint\ContainsOnlyAllowedMembersConstraint;
6
use VGirol\JsonApiAssert\Tests\TestCase;
7
8
class ContainsOnlyAllowedMembersTest extends TestCase
9
{
10
    /**
11
     * @test
12
     */
13
    public function assertContainsOnlyAllowedMembers()
14
    {
15
        $allowed = ['anything', 'something'];
16
17
        $constraint = new ContainsOnlyAllowedMembersConstraint($allowed);
18
19
        $json = [
20
            'anything' => 'ok'
21
        ];
22
        $this->assertTrue($constraint->evaluate($json, '', true));
23
    }
24
25
    /**
26
     * @test
27
     * @dataProvider assertContainsOnlyAllowedMembersFailedProvider
28
     */
29
    public function assertContainsOnlyAllowedMembersFailed($json)
30
    {
31
        $allowed = ['anything', 'something'];
32
33
        $constraint = new ContainsOnlyAllowedMembersConstraint($allowed);
34
35
        $this->assertFalse($constraint->evaluate($json, '', true));
36
    }
37
38
    public function assertContainsOnlyAllowedMembersFailedProvider()
39
    {
40
        return [
41
            'not an array' => [
42
                'failed'
43
            ],
44
            'not only allowed members' => [
45
                [
46
                    'anything' => 'ok',
47
                    'notAllowed' => 'bad'
48
                ]
49
            ]
50
        ];
51
    }
52
53
    /**
54
     * @test
55
     */
56
    public function assertContainsOnlyAllowedMembersThrowsException()
57
    {
58
        $allowed = ['anything', 'something'];
59
        $json = [
60
            'anything' => 'ok',
61
            'notAllowed' => 'bad'
62
        ];
63
64
        $constraint = new ContainsOnlyAllowedMembersConstraint($allowed);
65
66
        $this->setFailure(
67
            sprintf(
68
                '/Failed asserting that [\S\s]* %s\./',
69
                $constraint->toString()
70
            )
71
        );
72
73
        $constraint->evaluate($json);
74
    }
75
}
76