Completed
Pull Request — master (#6151)
by Andy
09:42
created

YamlMappingDriverTest::_loadDriver()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 8
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 8
c 0
b 0
f 0
rs 9.4285
cc 2
eloc 4
nc 2
nop 0
1
<?php
2
3
namespace Doctrine\Tests\ORM\Mapping;
4
5
use Doctrine\ORM\Mapping\ClassMetadata,
6
    Doctrine\ORM\Mapping\Driver\YamlDriver;
7
use Doctrine\ORM\Mapping\ClassMetadataFactory;
8
9
class YamlMappingDriverTest extends AbstractMappingDriverTest
10
{
11
    protected function _loadDriver()
12
    {
13
        if (!class_exists('Symfony\Component\Yaml\Yaml', true)) {
14
            $this->markTestSkipped('Please install Symfony YAML Component into the include path of your PHP installation.');
15
        }
16
17
        return new YamlDriver(__DIR__ . DIRECTORY_SEPARATOR . 'yaml');
18
    }
19
20
    /**
21
     * @group DDC-671
22
     *
23
     * Entities for this test are in AbstractMappingDriverTest
24
     */
25
    public function testJoinTablesWithMappedSuperclassForYamlDriver()
26
    {
27
        $yamlDriver = $this->_loadDriver();
28
        $yamlDriver->getLocator()->addPaths(array(__DIR__ . DIRECTORY_SEPARATOR . 'yaml'));
29
30
        $em = $this->_getTestEntityManager();
31
        $em->getConfiguration()->setMetadataDriverImpl($yamlDriver);
32
        $factory = new ClassMetadataFactory();
33
        $factory->setEntityManager($em);
34
35
        $classPage = new ClassMetadata('Doctrine\Tests\Models\DirectoryTree\File');
36
        $classPage = $factory->getMetadataFor('Doctrine\Tests\Models\DirectoryTree\File');
37
        $this->assertEquals('Doctrine\Tests\Models\DirectoryTree\File', $classPage->associationMappings['parentDirectory']['sourceEntity']);
38
39
        $classDirectory = new ClassMetadata('Doctrine\Tests\Models\DirectoryTree\Directory');
40
        $classDirectory = $factory->getMetadataFor('Doctrine\Tests\Models\DirectoryTree\Directory');
41
        $this->assertEquals('Doctrine\Tests\Models\DirectoryTree\Directory', $classDirectory->associationMappings['parentDirectory']['sourceEntity']);
42
    }
43
44
    /**
45
     * @group DDC-1468
46
     *
47
     * @expectedException Doctrine\Common\Persistence\Mapping\MappingException
48
     * @expectedExceptionMessage Invalid mapping file 'Doctrine.Tests.Models.Generic.SerializationModel.dcm.yml' for class 'Doctrine\Tests\Models\Generic\SerializationModel'.
49
     */
50
    public function testInvalidMappingFileException()
51
    {
52
        $this->createClassMetadata('Doctrine\Tests\Models\Generic\SerializationModel');
53
    }
54
55
    /**
56
     * @group DDC-2069
57
     */
58
    public function testSpacesShouldBeIgnoredWhenUseExplode()
59
    {
60
        $metadata = $this->createClassMetadata(__NAMESPACE__.'\DDC2069Entity');
61
        $unique   = $metadata->table['uniqueConstraints'][0]['columns'];
62
        $indexes  = $metadata->table['indexes'][0]['columns'];
63
64
        $nameField  = $metadata->fieldMappings['name'];
65
        $valueField = $metadata->fieldMappings['value'];
66
67
        $this->assertEquals('name', $unique[0]);
68
        $this->assertEquals('value', $unique[1]);
69
70
        $this->assertEquals('value', $indexes[0]);
71
        $this->assertEquals('name', $indexes[1]);
72
73
        $this->assertEquals(255, $nameField['length']);
74
        $this->assertEquals(255, $valueField['length']);
75
    }
76
77
    public function testEmbeddableAttributeOverride()
78
    {
79
        $metadata = $this->createClassMetadata('Doctrine\Tests\Models\Overrides\EntityWithEmbeddableOverriddenAttribute');
80
81
        $this->assertArrayHasKey('valueObject', $metadata->embeddedClasses);
82
        $this->assertArrayHasKey('attributeOverrides', $metadata->embeddedClasses['valueObject']);
83
        $this->assertNotNull($metadata->embeddedClasses['valueObject']['attributeOverrides']);
84
        $this->assertArrayHasKey('value', $metadata->embeddedClasses['valueObject']['attributeOverrides']);
85
        $this->assertEquals($metadata->embeddedClasses['valueObject']['attributeOverrides']['value']['columnName'], 'value_override');
86
    }
87
88
    public function testEmbeddableAttributeRemoval()
89
    {
90
        $metadata = $this->createClassMetadata('Doctrine\Tests\Models\Overrides\EntityWithEmbeddableRemovedAttribute');
91
92
        $this->assertArrayHasKey('valueObject', $metadata->embeddedClasses);
93
        $this->assertArrayHasKey('attributeOverrides', $metadata->embeddedClasses['valueObject']);
94
        $this->assertNotNull($metadata->embeddedClasses['valueObject']['attributeOverrides']);
95
        $this->assertArrayHasKey('value', $metadata->embeddedClasses['valueObject']['attributeOverrides']);
96
        $this->assertNull($metadata->embeddedClasses['valueObject']['attributeOverrides']['value']);
97
    }
98
99
    public function testEmbeddableAttributeOverrides()
100
    {
101
        $metadata = $this->createClassMetadata('Doctrine\Tests\Models\Overrides\EntityWithEmbeddableOverriddenAndRemovedAttributes');
102
103
        $this->assertArrayHasKey('valueObject', $metadata->embeddedClasses);
104
        $this->assertArrayHasKey('attributeOverrides', $metadata->embeddedClasses['valueObject']);
105
        $this->assertNotNull($metadata->embeddedClasses['valueObject']['attributeOverrides']);
106
        $this->assertArrayHasKey('value', $metadata->embeddedClasses['valueObject']['attributeOverrides']);
107
        $this->assertTrue(is_array($metadata->embeddedClasses['valueObject']['attributeOverrides']['value']));
108
        $this->assertEquals($metadata->embeddedClasses['valueObject']['attributeOverrides']['value']['columnName'], 'value_override');
109
        $this->assertArrayHasKey('count', $metadata->embeddedClasses['valueObject']['attributeOverrides']);
110
        $this->assertNull($metadata->embeddedClasses['valueObject']['attributeOverrides']['count']);
111
    }
112
113
    public function testNestedEmbeddableAttributeOverrides()
114
    {
115
        $metadata = $this->createClassMetadata('Doctrine\Tests\Models\Overrides\EntityWithNestedEmbeddableOverriddenAndRemovedAttributes');
116
117
        $this->assertArrayHasKey('nestedValueObject', $metadata->embeddedClasses);
118
        $this->assertArrayHasKey('attributeOverrides', $metadata->embeddedClasses['nestedValueObject']);
119
        $this->assertNotNull($metadata->embeddedClasses['nestedValueObject']['attributeOverrides']);
120
        $this->assertArrayHasKey('nested.value', $metadata->embeddedClasses['nestedValueObject']['attributeOverrides']);
121
        $this->assertTrue(is_array($metadata->embeddedClasses['nestedValueObject']['attributeOverrides']['nested.value']));
122
        $this->assertEquals($metadata->embeddedClasses['nestedValueObject']['attributeOverrides']['nested.value']['columnName'], 'value_override');
123
        $this->assertArrayHasKey('nested.count', $metadata->embeddedClasses['nestedValueObject']['attributeOverrides']);
124
        $this->assertNull($metadata->embeddedClasses['nestedValueObject']['attributeOverrides']['nested.count']);
125
    }
126
127
}
128
129
class DDC2069Entity
130
{
131
    public $id;
132
133
    public $name;
134
135
    public $value;
136
}
137