Completed
Push — master ( e02e4d...5773dd )
by
unknown
02:54 queued 11s
created

DelayStrategyResolverTrait.php$0 ➔ current()   A

Complexity

Conditions 1

Size

Total Lines 4

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 4
rs 10
c 0
b 0
f 0
cc 1
1
<?php
2
declare(strict_types=1);
3
4
5
namespace Lamoda\QueueBundle\Tests\Unit\Service;
6
7
8
use Lamoda\QueueBundle\Service\DelayStrategyResolver;
9
use Lamoda\QueueBundle\Strategy\Delay\ArithmeticProgressionStrategy;
10
use Lamoda\QueueBundle\Strategy\Delay\GeometricProgressionStrategy;
11
12
trait DelayStrategyResolverTrait
13
{
14
    private function createDelayStrategyResolver(array $strategiesByQueues): DelayStrategyResolver
15
    {
16
        $arithmeticStrategy = new ArithmeticProgressionStrategy(100, 4);
17
        $geometricStrategy = new GeometricProgressionStrategy(30, 2);
18
        $defaultStrategy = new GeometricProgressionStrategy(60, 3);
19
20
        $strategies = [
21
            'arithmetic_strategy_key' => $arithmeticStrategy,
22
            'geometric_strategy_key' => $geometricStrategy,
23
            'default_delay_strategy' => $defaultStrategy,
24
        ];
25
26
        return new DelayStrategyResolver($this->createStrategiesList($strategies), $strategiesByQueues);
27
    }
28
29
    private function createStrategiesList(array $strategies)
30
    {
31
        return new class($strategies) implements \Iterator {
32
            /**
33
             * @var array
34
             */
35
            protected $strategies;
36
37
            public function __construct(array $strategies)
38
            {
39
                $this->strategies = $strategies;
40
            }
41
42
            public function current()
43
            {
44
                return current($this->strategies);
45
            }
46
47
            public function next()
48
            {
49
                return next($this->strategies);
50
            }
51
52
            public function key()
53
            {
54
                return key($this->strategies);
55
            }
56
57
            public function valid()
58
            {
59
                return null !== key($this->strategies);
60
            }
61
62
            public function rewind()
63
            {
64
                return reset($this->strategies);
65
            }
66
        };
67
    }
68
}
69