Completed
Pull Request — master (#165)
by Rokas
01:25
created

ResultsRendererFactory::__construct()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 7
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 7
rs 9.4285
c 0
b 0
f 0
cc 1
eloc 5
nc 1
nop 2
1
<?php declare(strict_types = 1);
2
3
namespace Churn\Factories;
4
5
use Churn\Renderers\Results\ConsoleResultsRenderer;
6
use Churn\Renderers\Results\JsonResultsRenderer;
7
use Churn\Results\ResultCollection;
8
use InvalidArgumentException;
9
use Symfony\Component\Console\Output\OutputInterface;
10
11
class ResultsRendererFactory
12
{
13
    const FORMAT_JSON = 'json';
14
    const FORMAT_TEXT = 'text';
15
16
    /**
17
     * @var JsonResultsRenderer
18
     */
19
    protected $jsonResultsRenderer;
20
21
    /**
22
     * @var ConsoleResultsRenderer
23
     */
24
    protected $consoleResultsRenderer;
25
26
    /**
27
     * @param JsonResultsRenderer    $jsonResultsRenderer
28
     * @param ConsoleResultsRenderer $consoleResultsRenderer
29
     */
30
    public function __construct(
31
        JsonResultsRenderer $jsonResultsRenderer,
32
        ConsoleResultsRenderer $consoleResultsRenderer
33
    ) {
34
        $this->jsonResultsRenderer = $jsonResultsRenderer;
35
        $this->consoleResultsRenderer = $consoleResultsRenderer;
36
    }
37
38
    /**
39
     * Render the results
40
     * @param string           $format  Format to render.
41
     * @param OutputInterface  $output  Output Interface.
42
     * @param ResultCollection $results Result Collection.
43
     * @throws InvalidArgumentException If output format invalid.
44
     * @return void
45
     */
46
    public function renderResults(string $format, OutputInterface $output, ResultCollection $results)
47
    {
48
        if ($format === self::FORMAT_JSON) {
49
            $this->jsonResultsRenderer->render($output, $results);
50
            return;
51
        }
52
53
        if ($format === self::FORMAT_TEXT) {
54
            $this->consoleResultsRenderer->render($output, $results);
55
            return;
56
        }
57
58
        throw new InvalidArgumentException('Invalid output format provided');
59
    }
60
}
61