Completed
Push — master ( 9d89b4...9742ac )
by Alexander
01:48
created

assertDependencyNotChanged()   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
use Yiisoft\Cache\NullCache;
7
use Yiisoft\Cache\Tests\TestCase;
8
9
class CallbackDependencyTest extends TestCase
10
{
11
    private function getDependency(callable $callback, $dependencyData): Dependency
12
    {
13
        $dependency = new CallbackDependency($callback);
14
        $this->setInaccessibleProperty($dependency, 'data',  $dependencyData);
15
        return $dependency;
16
    }
17
18
    private function assertDependencyChanged(Dependency $dependency): void
19
    {
20
        $cache = new NullCache();
21
        $this->assertTrue($dependency->isChanged($cache), 'Dependecy data was not changed');
22
    }
23
24
    private function assertDependencyNotChanged(Dependency $dependency): void
25
    {
26
        $cache = new NullCache();
27
        $this->assertFalse($dependency->isChanged($cache), 'Dependecy data was changed');
28
    }
29
30
    public function testPlainClosure(): void
31
    {
32
        $dependency = $this->getDependency(static function () {
33
            return true;
34
        }, true);
35
36
        $this->assertDependencyNotChanged($dependency);
37
    }
38
39
    public function testScopeWithObject(): void
40
    {
41
        $dataObject = new class {
42
            public $value = 42;
43
        };
44
45
        $dependency = $this->getDependency(static function () use ($dataObject) {
46
            return $dataObject->value;
47
        }, 42);
48
49
        $this->assertDependencyNotChanged($dependency);
50
51
        $dataObject->value = 13;
52
53
        $this->assertDependencyChanged($dependency);
54
    }
55
}
56