Completed
Push — master ( 55dded...2df39b )
by Jorge
01:37
created

SharedStorageTest   A

Complexity

Total Complexity 6

Size/Duplication

Total Lines 61
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
dl 0
loc 61
rs 10
c 0
b 0
f 0
wmc 6

6 Methods

Rating   Name   Duplication   Size   Complexity  
A tearDown() 0 3 1
A it_decrements_failures() 0 9 1
A it_increments_failures() 0 8 1
A it_saves_data_for_strategy() 0 8 1
A it_return_number_of_failures() 0 7 1
A it_not_decrement_under_zero() 0 7 1
1
<?php
2
3
namespace JVelasco\CircuitBreaker\APCu;
4
5
use JVelasco\CircuitBreaker\AvailabilityStrategy;
6
use PHPUnit\Framework\TestCase;
7
8
final class SharedStorageTest extends TestCase
9
{
10
    const A_SERVICE = "a service";
11
12
    protected function tearDown()
13
    {
14
        apcu_clear_cache();
15
    }
16
17
    /** @test */
18
    public function it_increments_failures()
19
    {
20
        $storage = new SharedStorage();
21
22
        $storage->incrementFailures(self::A_SERVICE);
23
24
        $nbOfFailures = apcu_fetch("cb_failures.a service");
25
        $this->assertEquals($nbOfFailures, 1);
26
    }
27
28
    /** @test */
29
    public function it_decrements_failures()
30
    {
31
        $storage = new SharedStorage();
32
33
        apcu_add("cb_failures.a service", 2);
34
        $storage->decrementFailures(self::A_SERVICE);
35
36
        $nbOfFailures = apcu_fetch("cb_failures.a service");
37
        $this->assertEquals($nbOfFailures, 1);
38
    }
39
40
    /** @test */
41
    public function it_not_decrement_under_zero()
42
    {
43
        $storage = new SharedStorage();
44
45
        $storage->decrementFailures(self::A_SERVICE);
46
        $nbOfFailures = apcu_fetch("cb_failures.a service");
47
        $this->assertEquals(0, $nbOfFailures);
48
    }
49
50
    /** @test */
51
    public function it_return_number_of_failures()
52
    {
53
        $storage = new SharedStorage();
54
55
        $this->assertEquals(0, $storage->numberOfFailures(self::A_SERVICE));
56
        $storage->incrementFailures(self::A_SERVICE);
57
        $this->assertEquals(1, $storage->numberOfFailures(self::A_SERVICE));
58
    }
59
60
    /** @test */
61
    public function it_saves_data_for_strategy()
62
    {
63
        $strategy = $this->prophesize(AvailabilityStrategy::class);
64
        $strategy->getId()->willReturn("strategy_id");
65
66
        $storage = new SharedStorage();
67
        $storage->saveStrategyData($strategy->reveal(), "a_key", "a_value");
68
        $this->assertEquals("a_value", $storage->getStrategyData($strategy->reveal(), "a_key"));
69
    }
70
}
71