Passed
Pull Request — master (#209)
by Alexander
26:16 queued 23:43
created

AbstractStorageTest   A

Complexity

Total Complexity 6

Size/Duplication

Total Lines 72
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 35
dl 0
loc 72
rs 10
c 0
b 0
f 0
wmc 6

5 Methods

Rating   Name   Duplication   Size   Complexity  
A testRead() 0 11 2
A testAddAndGet() 0 9 1
A createFakeCollector() 0 11 1
A dataProvider() 0 10 1
A testFlush() 0 9 1
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Yiisoft\Yii\Debug\Tests\Unit\Storage;
6
7
use PHPUnit\Framework\TestCase;
8
use Yiisoft\Yii\Debug\Collector\CollectorInterface;
9
use Yiisoft\Yii\Debug\DebuggerIdGenerator;
10
use Yiisoft\Yii\Debug\Storage\MemoryStorage;
11
use Yiisoft\Yii\Debug\Storage\StorageInterface;
12
13
abstract class AbstractStorageTest extends TestCase
14
{
15
    /**
16
     * @dataProvider dataProvider()
17
     */
18
    public function testAddAndGet(array $data): void
19
    {
20
        $idGenerator = new DebuggerIdGenerator();
21
        $storage = $this->getStorage($idGenerator);
22
        $collector = $this->createFakeCollector($data);
23
24
        $this->assertEquals([], $storage->getData());
25
        $storage->addCollector($collector);
26
        $this->assertEquals([$collector->getName() => $data], $storage->getData());
27
    }
28
29
    /**
30
     * @dataProvider dataProvider()
31
     */
32
    public function testRead(array $data): void
33
    {
34
        $idGenerator = new DebuggerIdGenerator();
35
        $storage = $this->getStorage($idGenerator);
36
        $collector = $this->createFakeCollector($data);
37
38
        $storage->addCollector($collector);
39
        $expectedData = $storage->getData();
40
        !($storage instanceof MemoryStorage) && $storage->flush();
41
        $this->assertIsArray($storage->read());
42
        $this->assertEquals([$idGenerator->getId() => $expectedData], $storage->read(StorageInterface::TYPE_DATA));
43
    }
44
45
    /**
46
     * @dataProvider dataProvider()
47
     */
48
    public function testFlush(array $data): void
49
    {
50
        $idGenerator = new DebuggerIdGenerator();
51
        $storage = $this->getStorage($idGenerator);
52
        $collector = $this->createFakeCollector($data);
53
54
        $storage->addCollector($collector);
55
        $storage->flush();
56
        $this->assertEquals([], $storage->getData());
57
    }
58
59
    abstract public function getStorage(DebuggerIdGenerator $idGenerator): StorageInterface;
60
61
    public function dataProvider(): array
62
    {
63
        return [
64
            [[1, 2, 3]],
65
            [['string']],
66
            [[[['', 0, false]]]],
67
            [['test']],
68
            [[false]],
69
            [[null]],
70
            [[0]],
71
        ];
72
    }
73
74
    protected function createFakeCollector(array $data)
75
    {
76
        $collector = $this->getMockBuilder(CollectorInterface::class)->getMock();
77
        $collector
78
            ->method('getCollected')
79
            ->willReturn($data);
80
        $collector
81
            ->method('getName')
82
            ->willReturn('Mock_Collector');
83
84
        return $collector;
85
    }
86
}
87