Passed
Push — test ( d838cf...cef4a5 )
by Tom
03:29
created

StepServiceContainersTest   A

Complexity

Total Complexity 5

Size/Duplication

Total Lines 69
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 32
dl 0
loc 69
rs 10
c 0
b 0
f 0
wmc 5

5 Methods

Rating   Name   Duplication   Size   Complexity  
A testShutdown() 0 11 1
A createStepAndRunnerMocks() 0 18 1
A testCreation() 0 7 1
A testObtainNetworkWithoutServices() 0 8 1
A testObtainNetworkWithService() 0 10 1
1
<?php
2
3
/* this file is part of pipelines */
4
5
namespace Ktomk\Pipelines\Runner\Containers;
6
7
use Ktomk\Pipelines\Cli\ExecTester;
8
use Ktomk\Pipelines\Cli\Streams;
9
use Ktomk\Pipelines\File\File;
10
use Ktomk\Pipelines\Runner\Env;
11
use Ktomk\Pipelines\Runner\Flags;
12
use Ktomk\Pipelines\Runner\Runner;
13
use Ktomk\Pipelines\TestCase;
14
15
/**
16
 * Class StepServiceContainersTest
17
 *
18
 * @package Ktomk\Pipelines\Runner\Containers
19
 * @covers \Ktomk\Pipelines\Runner\Containers\StepServiceContainers
20
 */
21
class StepServiceContainersTest extends TestCase
22
{
23
    public function testCreation()
24
    {
25
        $step = $this->createMock('Ktomk\Pipelines\File\Pipeline\Step');
26
        $runner = $this->createMock('Ktomk\Pipelines\Runner\Runner');
27
28
        $services = new StepServiceContainers($step, $runner);
29
        self::assertInstanceOf('Ktomk\Pipelines\Runner\Containers\StepServiceContainers', $services);
30
    }
31
32
    public function testObtainNetworkWithoutServices()
33
    {
34
        list($step, $runner, $exec) = $this->createStepAndRunnerMocks(
35
            __DIR__ . '/../../../data/yml/bitbucket-pipelines.yml'
36
        );
37
38
        $services = new StepServiceContainers($step, $runner);
39
        self::assertSame(array(), $services->obtainNetwork());
40
    }
41
42
    public function testObtainNetworkWithService()
43
    {
44
        list($step, $runner, $exec) = $this->createStepAndRunnerMocks(
45
            __DIR__ . '/../../../data/yml/service-definitions.yml'
46
        );
47
48
        $exec->expect('capture', 'docker');
49
50
        $services = new StepServiceContainers($step, $runner);
51
        self::assertSame(array('--network', 'host'), $services->obtainNetwork());
52
    }
53
54
    public function testShutdown()
55
    {
56
        list($step, $runner, $exec) = $this->createStepAndRunnerMocks(
57
            __DIR__ . '/../../../data/yml/service-definitions.yml'
58
        );
59
60
        $exec->expect('capture', 'docker');
61
        $exec->expect('capture', 'docker');
62
63
        $services = new StepServiceContainers($step, $runner);
64
        $services->shutdown(0);
65
    }
66
67
    /**
68
     * @param string $path of pipelines yaml file
69
     *
70
     * @return array
71
     */
72
    private function createStepAndRunnerMocks($path)
73
    {
74
        $file = File::createFromFile($path);
75
        $step = $file->getDefault()->getSteps()->offsetGet(0);
76
        $runOpts = $this->createConfiguredMock('Ktomk\Pipelines\Runner\RunOpts', array(
77
            'getPrefix' => 'prefix',
78
        ));
79
80
        $runner = new Runner(
81
            $runOpts,
82
            $this->createMock('Ktomk\Pipelines\Runner\Directories'),
83
            $exec = new ExecTester($this),
84
            new Flags(),
85
            new Env(),
86
            new Streams()
87
        );
88
89
        return array($step, $runner, $exec);
90
    }
91
}
92