BaseBuilderTest::initBuilder()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 17

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 17
rs 9.7
c 0
b 0
f 0
cc 1
nc 1
nop 0
1
<?php
2
3
namespace Admingenerator\GeneratorBundle\Tests\Builder;
4
5
use Admingenerator\GeneratorBundle\Builder\Admin\BaseBuilder;
6
use Admingenerator\GeneratorBundle\Tests\TestCase;
7
8
class BaseBuilderTest extends TestCase
9
{
10
    public function testGetSimpleClassName()
11
    {
12
        $builder = new BaseBuilder();
13
        $this->assertEquals('BaseBuilder', $builder->getSimpleClassName(), 'getSimpleClassName remove the namespaced part of get_class');
14
        $this->assertEquals('Bar', $builder->getSimpleClassName('\\Foo\\Bar'), 'getSimpleClassName remove the namespaced part of get_class');
15
    }
16
17
    public function testGetDefaultTemplateName()
18
    {
19
        $builder = new BaseBuilder();
20
        $this->assertEquals('BaseBuilder.php.twig', $builder->getDefaultTemplateName(), 'getDefaultTemplateName return the twig file path');
21
    }
22
23
    public function testSetVariables()
24
    {
25
        $builder = new BaseBuilder();
26
        $builder->setVariables(array('foo' => 'bar'));
27
        $this->assertEquals(array('foo' => 'bar'), $builder->getVariables(), 'setVariables accept an array');
28
    }
29
30
    public function testGetVariable()
31
    {
32
        $builder = new BaseBuilder();
33
        $builder->setVariables(array('foo' => 'bar'));
34
        $this->assertEquals('bar', $builder->getVariable('foo','default'));
35
        $this->assertEquals('default', $builder->getVariable('nonexistant','default'));
36
37
        $builder->setVariables(array('foo' => array('bar' =>'bazz')));
38
        $foo = $builder->getVariable('foo');
39
        $this->assertEquals('bazz', $foo['bar']);
40
    }
41
42
    public function testHasVariable()
43
    {
44
        $builder = new BaseBuilder();
45
        $builder->setVariables(array('foo' => 'bar'));
46
        $this->assertTrue($builder->hasVariable('foo'), 'hasVariable return true on a valid key');
47
        $this->assertFalse($builder->hasVariable('var'), 'hasVariable return false on a invalid key');
48
    }
49
50
    public function testGetCode()
51
    {
52
        $builder = $this->initBuilder();
53
54
        $this->assertEquals('Hello cedric!'."\n", $builder->getCode());
55
56
        $builder->setVariables(array('name' => 'Tux'));
57
        $this->assertEquals('Hello Tux!'."\n", $builder->getCode(), 'If I change variables code is changed');
58
    }
59
60
    public function testWriteOnDisk()
61
    {
62
        $builder = $this->initBuilder();
63
64
        $builder->writeOnDisk(sys_get_temp_dir());
65
        $this->assertTrue(file_exists(sys_get_temp_dir() . '/test.php'));
66
        $this->assertEquals('Hello cedric!'."\n", file_get_contents(sys_get_temp_dir() . '/test.php'));
67
68
        $builder->setVariables(array('name' => 'Tux'));
69
        $builder->writeOnDisk(sys_get_temp_dir());
70
        $this->assertTrue($builder->mustOverwriteIfExists());
71
        $this->assertTrue(file_exists(sys_get_temp_dir() . '/test.php'));
72
        $this->assertEquals('Hello Tux!'."\n", file_get_contents(sys_get_temp_dir() . '/test.php'), 'If i change variables code is changed');
73
74
        $builder->setVariables(array('name' => 'cedric'));
75
        $builder->setMustOverwriteIfExists(false);
76
        $builder->writeOnDisk(sys_get_temp_dir());
77
        $this->assertFalse($builder->mustOverwriteIfExists());
78
        $this->assertTrue(file_exists(sys_get_temp_dir() . '/test.php'));
79
        $this->assertEquals('Hello Tux!'."\n", file_get_contents(sys_get_temp_dir() . '/test.php'), 'If i change variables on an existant files code is not generated');
80
81
        unlink(sys_get_temp_dir() . '/test.php');
82
        $this->assertFalse(file_exists(sys_get_temp_dir() . '/test.php'));
83
        $builder->writeOnDisk(sys_get_temp_dir());
84
        $this->assertEquals('Hello cedric!'."\n", file_get_contents(sys_get_temp_dir() . '/test.php'), 'If i change variables on a non existant files code is generated');
85
    }
86
87
    public function testGetModelClass()
88
    {
89
        $builder = new BaseBuilder();
90
        $builder->setVariables(array('model' => 'Admingenerator\DemoBundle\Entity\Movie'));
91
        $this->assertEquals('Movie', $builder->getModelClass());
92
    }
93
94
    protected function initBuilder()
95
    {
96
        $builder = new BaseBuilder();
97
        $generator = $this->getMockBuilder('Admingenerator\GeneratorBundle\Builder\Generator')
98
                          ->disableOriginalConstructor()
99
                          ->getMock();
100
        $generator->method('getTempDir')->willReturn('/tmp');
101
102
        $builder->setGenerator($generator);
103
        $builder->setMustOverwriteIfExists(true);
104
        $builder->setOutputName('test.php');
105
        $builder->setTemplateDirs(array(__DIR__.'/Fixtures/'));
106
        $builder->setVariables(array('name' => 'cedric'));
107
        $builder->setTemplateName($builder->getDefaultTemplateName());
108
109
        return $builder;
110
    }
111
112
}
113