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

ResultsRendererFactory   A

Complexity

Total Complexity 4

Size/Duplication

Total Lines 50
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 2

Importance

Changes 0
Metric Value
wmc 4
lcom 1
cbo 2
dl 0
loc 50
rs 10
c 0
b 0
f 0

2 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 7 1
A renderResults() 0 14 3
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 $jsonRenderer;
20
21
    /**
22
     * @var ConsoleResultsRenderer
23
     */
24
    protected $consoleRenderer;
25
26
    /**
27
     * @param JsonResultsRenderer    $jsonRenderer
28
     * @param ConsoleResultsRenderer $consoleRenderer
29
     */
30
    public function __construct(
31
        JsonResultsRenderer $jsonRenderer,
32
        ConsoleResultsRenderer $consoleRenderer
33
    ) {
34
        $this->jsonRenderer = $jsonRenderer;
35
        $this->consoleRenderer = $consoleRenderer;
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->jsonRenderer->render($output, $results);
50
            return;
51
        }
52
53
        if ($format === self::FORMAT_TEXT) {
54
            $this->consoleRenderer->render($output, $results);
55
            return;
56
        }
57
58
        throw new InvalidArgumentException('Invalid output format provided');
59
    }
60
}
61