Completed
Push — master ( 0dfb70...6f61e6 )
by Jorge
01:46
created

APCuStorageTest   A

Complexity

Total Complexity 7

Size/Duplication

Total Lines 78
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
dl 0
loc 78
rs 10
c 0
b 0
f 0
wmc 7

7 Methods

Rating   Name   Duplication   Size   Complexity  
A it_increments_failures() 0 8 1
A it_return_number_of_failures() 0 7 1
A it_reset_failure_counters() 0 6 1
A it_decrements_failures() 0 9 1
A tearDown() 0 3 1
A it_saves_data_for_strategy() 0 15 1
A it_not_decrement_under_zero() 0 7 1
1
<?php
2
3
namespace JVelasco\CircuitBreaker\Adapters;
4
5
use JVelasco\CircuitBreaker\AvailabilityStrategy;
6
use PHPUnit\Framework\TestCase;
7
8
final class APCuStorageTest extends TestCase
9
{
10
    const SERVICE_NAME = "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 APCuStorage();
21
22
        $storage->incrementFailures(self::SERVICE_NAME);
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 APCuStorage();
32
33
        apcu_add("cb_failures.a service", 2);
34
        $storage->decrementFailures(self::SERVICE_NAME);
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 APCuStorage();
44
45
        $storage->decrementFailures(self::SERVICE_NAME);
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 APCuStorage();
54
55
        $this->assertEquals(0, $storage->numberOfFailures(self::SERVICE_NAME));
56
        $storage->incrementFailures(self::SERVICE_NAME);
57
        $this->assertEquals(1, $storage->numberOfFailures(self::SERVICE_NAME));
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 APCuStorage();
67
        $storage->saveStrategyData(
68
            $strategy->reveal(),
69
            self::SERVICE_NAME,
70
            "a_key",
71
            "a_value"
72
        );
73
        $this->assertEquals(
74
            "a_value",
75
            $storage->getStrategyData($strategy->reveal(), self::SERVICE_NAME,"a_key")
76
        );
77
    }
78
79
    /** @test */
80
    public function it_reset_failure_counters()
81
    {
82
        $storage = new APCuStorage();
83
        $storage->incrementFailures(self::SERVICE_NAME);
84
        $storage->resetFailuresCounter(self::SERVICE_NAME);
85
        $this->assertEquals(0, $storage->numberOfFailures(self::SERVICE_NAME));
86
    }
87
}
88