Passed
Push — master ( dc1d0d...74f1fd )
by Alexander
01:47
created

CallbackDependencyTest::assertDependencyChanged()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 2
c 1
b 0
f 0
dl 0
loc 4
rs 10
cc 1
nc 1
nop 1
1
<?php
2
namespace Yiisoft\Cache\Tests\Dependency;
3
4
use Yiisoft\Cache\Dependency\CallbackDependency;
5
use Yiisoft\Cache\Dependency\Dependency;
6
7
class CallbackDependencyTest extends DependencyTestCase
8
{
9
    private function getDependency(callable $callback, $dependencyData): Dependency
10
    {
11
        $dependency = new CallbackDependency($callback);
12
        $this->setInaccessibleProperty($dependency, 'data', $dependencyData);
13
        return $dependency;
14
    }
15
16
    public function testPlainClosure(): void
17
    {
18
        $dependency = $this->getDependency(static function () {
19
            return true;
20
        }, true);
21
22
        $this->assertDependencyNotChanged($dependency);
23
    }
24
25
    public function testScopeWithObject(): void
26
    {
27
        $dataObject = new class {
28
            public $value = 42;
29
        };
30
31
        $dependency = $this->getDependency(static function () use ($dataObject) {
32
            return $dataObject->value;
33
        }, 42);
34
35
        $this->assertDependencyNotChanged($dependency);
36
37
        $dataObject->value = 13;
38
39
        $this->assertDependencyChanged($dependency);
40
    }
41
}
42