Completed
Push — master ( 4ad6bd...3873e4 )
by Ingo
11:53
created

FlushableTestState   A

Complexity

Total Complexity 7

Size/Duplication

Total Lines 38
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 1

Importance

Changes 0
Metric Value
dl 0
loc 38
rs 10
c 0
b 0
f 0
wmc 7
lcom 1
cbo 1

4 Methods

Rating   Name   Duplication   Size   Complexity  
A setUp() 0 8 2
A tearDown() 0 3 1
A setUpOnce() 0 13 3
A tearDownOnce() 0 3 1
1
<?php
2
3
namespace SilverStripe\Dev\State;
4
5
use SilverStripe\Core\ClassInfo;
6
use SilverStripe\Core\Flushable;
7
use SilverStripe\Core\Resettable;
8
use SilverStripe\Dev\SapphireTest;
9
10
/**
11
 * Clears flushable / resettable objects
12
 */
13
class FlushableTestState implements TestState
14
{
15
    /**
16
     * @var bool
17
     */
18
    protected $flushed = false;
19
20
    public function setUp(SapphireTest $test)
21
    {
22
        // Reset all resettables
23
        /** @var Resettable $resettable */
24
        foreach (ClassInfo::implementorsOf(Resettable::class) as $resettable) {
25
            $resettable::reset();
26
        }
27
    }
28
29
    public function tearDown(SapphireTest $test)
30
    {
31
    }
32
33
    public function setUpOnce($class)
34
    {
35
        if ($this->flushed) {
36
            return;
37
        }
38
        $this->flushed = true;
39
40
        // Flush all flushable records
41
        /** @var Flushable $class */
42
        foreach (ClassInfo::implementorsOf(Flushable::class) as $class) {
43
            $class::flush();
44
        }
45
    }
46
47
    public function tearDownOnce($class)
48
    {
49
    }
50
}
51