HttpImposterBuilder::build()   B
last analyzed

Complexity

Conditions 6
Paths 8

Size

Total Lines 19
Code Lines 11

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 14
CRAP Score 6

Importance

Changes 0
Metric Value
cc 6
eloc 11
nc 8
nop 1
dl 0
loc 19
ccs 14
cts 14
cp 1
crap 6
rs 8.8571
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 3
    public function __construct(StubBuilder $stubBuilder)
26
    {
27 3
        $this->stubBuilder = $stubBuilder;
28 3
    }
29
30
    /**
31
     * @return HttpImposterBuilder
32
     */
33 1
    public static function create()
34
    {
35 1
        return new self(StubBuilder::create());
36
    }
37
38
    /**
39
     * @param array $contract
40
     * @return \Meare\Juggler\Imposter\Imposter
41
     */
42 3
    public function build(array $contract)
43
    {
44 3
        $this->validateContractProtocol($contract);
45 3
        $imposter = new HttpImposter(
46 3
            isset($contract['port']) ? $contract['port'] : null,
47 3
            isset($contract['requests']) ? $contract['requests'] : []
48 3
        );
49
50 3
        if (isset($contract['name'])) {
51 3
            $imposter->setName($contract['name']);
52 3
        }
53
54 3
        $stubs = isset($contract['stubs']) ? $contract['stubs'] : [];
55 3
        foreach ($stubs as $stub_contract) {
56 1
            $imposter->addStub($this->stubBuilder->build($stub_contract));
57 3
        }
58
59 3
        return $imposter;
60
    }
61
}