SelectorsTests::testSelector()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 21
Code Lines 14

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 21
rs 9.3142
c 0
b 0
f 0
cc 1
eloc 14
nc 1
nop 0
1
<?php
2
/**
3
 * This file is part of the Cubiche package.
4
 *
5
 * Copyright (c) Cubiche
6
 *
7
 * For the full copyright and license information, please view the LICENSE
8
 * file that was distributed with this source code.
9
 */
10
namespace Cubiche\Core\Selector\Tests\Units;
11
12
use Cubiche\Core\Selector\Callback;
13
use Cubiche\Core\Selector\Composite;
14
use Cubiche\Core\Selector\Count;
15
use Cubiche\Core\Selector\Key;
16
use Cubiche\Core\Selector\Method;
17
use Cubiche\Core\Selector\Property;
18
use Cubiche\Core\Selector\Selectors;
19
use Cubiche\Core\Selector\Value;
20
use Cubiche\Core\Visitor\VisitorInterface;
21
22
/**
23
 * Selector Builder Tests Class.
24
 *
25
 * @author Ivannis Suárez Jerez <[email protected]>
26
 */
27
class SelectorsTests extends SelectorTestCase
28
{
29
    /**
30
     * {@inheritdoc}
31
     */
32
    public function newDefaultTestedInstance()
33
    {
34
        return Selectors::key('foo')->key('bar');
35
    }
36
37
    /**
38
     * Test apply.
39
     */
40
    public function testSelector()
41
    {
42
        $this
43
            /* @var \Cubiche\Core\Selector\Selectors $builder */
44
            ->given($builder = $this->newDefaultTestedInstance())
45
            ->then()
46
                /* @var \Cubiche\Core\Selector\Composite $selector */
47
                ->object($selector = $builder->selector())
48
                    ->isInstanceOf(Composite::class)
49
                /* @var \Cubiche\Core\Selector\Key $foo */
50
                ->object($foo = $selector->valueSelector())
0 ignored issues
show
Bug introduced by
The method valueSelector() does not exist on Cubiche\Core\Selector\SelectorInterface. Did you maybe mean select()?

This check marks calls to methods that do not seem to exist on an object.

This is most likely the result of a method being renamed without all references to it being renamed likewise.

Loading history...
51
                    ->isInstanceOf(Key::class)
52
                ->string($foo->name())
53
                    ->isEqualTo('foo')
54
                    /* @var \Cubiche\Core\Selector\Key $foo */
55
                ->object($bar = $selector->applySelector())
0 ignored issues
show
Bug introduced by
The method applySelector() does not exist on Cubiche\Core\Selector\SelectorInterface. Did you maybe mean select()?

This check marks calls to methods that do not seem to exist on an object.

This is most likely the result of a method being renamed without all references to it being renamed likewise.

Loading history...
56
                    ->isInstanceOf(Key::class)
57
                ->string($bar->name())
58
                    ->isEqualTo('bar')
59
        ;
60
    }
61
62
    /**
63
     * Test apply.
64
     */
65
    public function testApply()
66
    {
67
        $this
68
            /* @var \Cubiche\Core\Selector\Selectors $builder */
69
            ->given($builder = $this->newDefaultTestedInstance())
70
            ->then()
71
                ->string($builder->apply(array('foo' => array('bar' => 'baz'))))
72
                    ->isEqualTo('baz')
73
        ;
74
    }
75
76
    /**
77
     * Test __staticCall.
78
     *
79
     * @dataProvider staticCallDataProvider
80
     */
81
    public function testStaticCall(Selectors $builder, $expectedClass)
82
    {
83
        $this
84
            ->given($builder, $expectedClass)
85
            ->then()
86
                ->object($builder->selector())
87
                    ->isInstanceOf($expectedClass)
88
        ;
89
    }
90
91
    /**
92
     * @return string[][]
93
     */
94
    protected function staticCallDataProvider()
95
    {
96
        return array(
97
            array(Selectors::key('foo'), Key::class),
98
            array(Selectors::property('foo'), Property::class),
99
            array(Selectors::method('foo'), Method::class),
100
            array(Selectors::callback(function () {
101
102
            }), Callback::class),
103
            array(Selectors::count(), Count::class),
104
            array(Selectors::value('foo'), Value::class),
105
            array(Selectors::composite(
106
                Selectors::value(array()),
107
                Selectors::count()
108
            ), Composite::class),
109
        );
110
    }
111
112
    /**
113
     * {@inheritdoc}
114
     */
115
    protected function acceptVisitorDataProvider()
116
    {
117
        /** @var \Cubiche\Core\Selector\Selectors $visitee */
118
        $visitee = $this->newDefaultTestedInstance();
119
120
        return array(
121
            array($visitee, $this->newMockInstance(VisitorInterface::class), 'visit', $visitee->selector()),
122
        );
123
    }
124
}
125