Passed
Push — v2 ( 1cd5a7...0b44bc )
by Brice
02:47
created

WorkerTest::setUpBeforeClass()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 10
Code Lines 6

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 10
rs 9.4285
c 0
b 0
f 0
cc 1
eloc 6
nc 1
nop 0
1
<?php
2
3
namespace JobQueue\Tests\Application;
4
5
use JobQueue\Application\Worker\Console;
6
use JobQueue\Domain\Task\Profile;
7
use JobQueue\Domain\Task\Status;
8
use JobQueue\Domain\Task\Task;
9
use JobQueue\Infrastructure\ServiceContainer;
10
use JobQueue\Tests\Domain\Job;
11
use PHPUnit\Framework\TestCase;
12
use Symfony\Component\Console\Tester\CommandTester;
13
14
final class WorkerTest extends TestCase
15
{
16
    /**
17
     *
18
     * @var
19
     */
20
    private static $worker;
21
22
    /**
23
     *
24
     * @var Task
25
     */
26
    private static $testTask;
27
28
    /**
29
     *
30
     * @var Task
31
     */
32
    private static $erroneousTask;
33
34
    public static function setUpBeforeClass()
35
    {
36
        self::$worker = new Console;
37
38
        self::$testTask = new Task(new Profile('test'), new Job\DummyJob);
39
        self::$erroneousTask = new Task(new Profile('test'), new Job\ErroneousJob);
40
41
        ServiceContainer::getInstance()
42
            ->queue
43
            ->add(self::$testTask, self::$erroneousTask);
44
    }
45
46
    public function testConsume()
47
    {
48
        $commandTester = new CommandTester($command = self::$worker->get('consume'));
49
        $commandTester->execute([
50
            'profile' => 'test',
51
            '--name' => 'foobar',
52
            '--quantity' => 1,
53
        ], ['decorated' => false]);
54
55
        $this->assertContains('Worker foobar is done', $commandTester->getDisplay());
56
57
        $task = ServiceContainer::getInstance()
58
            ->queue
59
            ->find((string) self::$testTask->getIdentifier());
60
61
        $this->assertEquals((string) $task->getStatus(), Status::FINISHED);
62
    }
63
64
    public function testConsumeErroneousTask()
65
    {
66
        $commandTester = new CommandTester($command = self::$worker->get('consume'));
67
        $commandTester->execute([
68
            'profile' => 'test',
69
            '--name' => 'foobar',
70
            '--quantity' => 1,
71
        ], ['decorated' => false]);
72
73
        $this->assertContains('Worker foobar is done', $commandTester->getDisplay());
74
75
        $task = ServiceContainer::getInstance()
76
            ->queue
77
            ->find((string) self::$erroneousTask->getIdentifier());
78
79
        $this->assertEquals((string) $task->getStatus(), Status::FAILED);
80
    }
81
}
82