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

CallbackDependencyTest   A

Complexity

Total Complexity 1

Size/Duplication

Total Lines 45
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 1
eloc 20
c 1
b 0
f 0
dl 0
loc 45
rs 10

6 Methods

Rating   Name   Duplication   Size   Complexity  
A assertDependencyNotChanged() 0 4 1
testScopeWithObject() 0 15 ?
A hp$0 ➔ testScopeWithObject() 0 15 1
A assertDependencyChanged() 0 4 1
A getDependency() 0 5 1
A testPlainClosure() 0 7 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