Passed
Branch issue-4 (c0cbe5)
by Andrejs
03:57
created

HttpImposterBuilder::create()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 0
Metric Value
cc 1
eloc 2
nc 1
nop 0
dl 0
loc 4
ccs 0
cts 2
cp 0
crap 2
rs 10
c 0
b 0
f 0
1
<?php
2
3
namespace Meare\Juggler\Imposter\Builder;
4
5
6
use Meare\Juggler\Imposter\HttpImposter;
7
use Meare\Juggler\Imposter\Imposter;
8
use Meare\Juggler\Imposter\Stub\StubBuilder;
9
10
class HttpImposterBuilder extends ImposterBuilder
11
{
12
    /**
13
     * @var string
14
     */
15
    protected $protocol = Imposter::PROTOCOL_HTTP;
16
17
    /**
18
     * @var \Meare\Juggler\Imposter\Stub\StubBuilder
19
     */
20
    private $stubBuilder;
21
22
    /**
23
     * @param StubBuilder $stubBuilder
24
     */
25 2
    public function __construct(StubBuilder $stubBuilder)
26
    {
27 2
        $this->stubBuilder = $stubBuilder;
28 2
    }
29
30
    /**
31
     * @return HttpImposterBuilder
32
     */
33
    public static function create()
34
    {
35
        return new self(StubBuilder::create());
36
    }
37
38
    /**
39
     * @param array $contract
40
     * @return \Meare\Juggler\Imposter\Imposter
41
     */
42 2
    public function build(array $contract)
43
    {
44 2
        $this->validateContractProtocol($contract);
45 2
        $imposter = new HttpImposter(
46 2
            isset($contract['port']) ? $contract['port'] : null,
47 2
            isset($contract['requests']) ? $contract['requests'] : []
48
        );
49
50 2
        if (isset($contract['name'])) {
51 2
            $imposter->setName($contract['name']);
52
        }
53
54 2
        $stubs = isset($contract['stubs']) ? $contract['stubs'] : [];
55 2
        foreach ($stubs as $stub_contract) {
56 1
            $imposter->addStub($this->stubBuilder->build($stub_contract));
57
        }
58
59 2
        return $imposter;
60
    }
61
}