QueueTest::testConsumeErroneousTask()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 7
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 3
nc 1
nop 1
dl 0
loc 7
rs 9.4285
c 0
b 0
f 0
1
<?php
2
3
namespace JobQueue\Tests\Domain;
4
5
use JobQueue\Domain\Task\Profile;
6
use JobQueue\Domain\Task\Queue;
7
use JobQueue\Domain\Task\Status;
8
use JobQueue\Domain\Task\Task;
9
use JobQueue\Domain\Worker\Worker;
10
use JobQueue\Infrastructure\RedisQueue;
11
use JobQueue\Tests\Domain\Job;
12
use PHPUnit\Framework\TestCase;
13
use Predis\Client;
14
use Symfony\Component\EventDispatcher\EventDispatcher;
15
16
final class QueueTest extends TestCase
17
{
18
    /**
19
     *
20
     * @var Queue
21
     */
22
    private static $queue;
23
24
    /**
25
     *
26
     * @var Task
27
     */
28
    private static $testTask;
29
30
    /**
31
     *
32
     * @var Task
33
     */
34
    private static $erroneousTask;
35
36
    public static function setUpBeforeClass()
37
    {
38
        self::$testTask = new Task(
39
            new Profile('test'),
40
            new Job\DummyJob
41
        );
42
43
        self::$erroneousTask = new Task(
44
            new Profile('test'),
45
            new Job\ErroneousJob
46
        );
47
48
        self::$queue = new RedisQueue(new Client);
49
        self::$queue->add(self::$testTask);
50
        self::$queue->add(self::$erroneousTask);
51
    }
52
53
    /**
54
     *
55
     * @return Worker
56
     */
57
    public function testConsumeFIFOTask(): Worker
58
    {
59
        $worker = new Worker('test', self::$queue, new Profile('test'), new EventDispatcher);
60
        $worker->consume(1);
61
62
        $task = self::$queue->find((string) self::$testTask->getIdentifier());
63
64
        $this->assertEquals(Status::FINISHED, (string) $task->getStatus());
65
66
        return $worker;
67
    }
68
69
    /**
70
     *
71
     * @depends testConsumeFIFOTask
72
     * @param Worker $worker
73
     */
74
    public function testConsumeErroneousTask(Worker $worker)
75
    {
76
        $worker->consume(1);
77
78
        $task = self::$queue->find((string) self::$erroneousTask->getIdentifier());
79
80
        $this->assertEquals(Status::FAILED, (string) $task->getStatus());
81
    }
82
83
    public static function tearDownAfterClass()
84
    {
85
        self::$queue->delete((string) self::$testTask->getIdentifier());
86
        self::$queue->delete((string) self::$erroneousTask->getIdentifier());
87
    }
88
}
89