/** * @group DDC-3304 */ public function testGeneratedImmutableEmbeddablesClass() { $this->_generator->setEmbeddablesImmutable(true); $embeddedMetadata = $this->generateTestEmbeddableFixture(); $metadata = $this->generateIsbnEmbeddableFixture(array('test' => $embeddedMetadata)); $this->loadEntityClass($embeddedMetadata); $this->loadEntityClass($metadata); $this->assertTrue(class_exists($metadata->name), "Class does not exist."); $this->assertTrue(method_exists($metadata->name, '__construct'), "EntityGeneratorIsbn::__construct missing."); $this->assertTrue(method_exists($metadata->name, 'getPrefix'), "EntityGeneratorIsbn::getPrefix() missing."); $this->assertFalse(method_exists($metadata->name, 'setPrefix'), "EntityGeneratorIsbn::setPrefix() present."); $this->assertTrue(method_exists($metadata->name, 'getGroupNumber'), "EntityGeneratorIsbn::getGroupNumber() missing."); $this->assertFalse(method_exists($metadata->name, 'setGroupNumber'), "EntityGeneratorIsbn::setGroupNumber() present."); $this->assertTrue(method_exists($metadata->name, 'getPublisherNumber'), "EntityGeneratorIsbn::getPublisherNumber() missing."); $this->assertFalse(method_exists($metadata->name, 'setPublisherNumber'), "EntityGeneratorIsbn::setPublisherNumber() present."); $this->assertTrue(method_exists($metadata->name, 'getTitleNumber'), "EntityGeneratorIsbn::getTitleNumber() missing."); $this->assertFalse(method_exists($metadata->name, 'setTitleNumber'), "EntityGeneratorIsbn::setTitleNumber() present."); $this->assertTrue(method_exists($metadata->name, 'getCheckDigit'), "EntityGeneratorIsbn::getCheckDigit() missing."); $this->assertFalse(method_exists($metadata->name, 'setCheckDigit'), "EntityGeneratorIsbn::setCheckDigit() present."); $this->assertTrue(method_exists($metadata->name, 'getTest'), "EntityGeneratorIsbn::getTest() missing."); $this->assertFalse(method_exists($metadata->name, 'setTest'), "EntityGeneratorIsbn::setTest() present."); $test = new $embeddedMetadata->name(1, new \DateTime()); $isbn = new $metadata->name($test, 978, 3, 12, 732320, 83); $reflMethod = new \ReflectionMethod($isbn, '__construct'); $reflParameters = $reflMethod->getParameters(); $this->assertCount(6, $reflParameters); $this->assertSame($embeddedMetadata->name, $reflParameters[0]->getClass()->name); $this->assertSame('test', $reflParameters[0]->getName()); $this->assertFalse($reflParameters[0]->isOptional()); $this->assertSame('prefix', $reflParameters[1]->getName()); $this->assertFalse($reflParameters[1]->isOptional()); $this->assertSame('groupNumber', $reflParameters[2]->getName()); $this->assertFalse($reflParameters[2]->isOptional()); $this->assertSame('publisherNumber', $reflParameters[3]->getName()); $this->assertFalse($reflParameters[3]->isOptional()); $this->assertSame('titleNumber', $reflParameters[4]->getName()); $this->assertFalse($reflParameters[4]->isOptional()); $this->assertSame('checkDigit', $reflParameters[5]->getName()); $this->assertFalse($reflParameters[5]->isOptional()); $reflMethod = new \ReflectionMethod($test, '__construct'); $reflParameters = $reflMethod->getParameters(); $this->assertCount(4, $reflParameters); $this->assertSame('field1', $reflParameters[0]->getName()); $this->assertFalse($reflParameters[0]->isOptional()); $this->assertSame('DateTime', $reflParameters[1]->getClass()->name); $this->assertSame('field3', $reflParameters[1]->getName()); $this->assertFalse($reflParameters[1]->isOptional()); $this->assertSame('field2', $reflParameters[2]->getName()); $this->assertTrue($reflParameters[2]->isOptional()); $this->assertSame('DateTime', $reflParameters[3]->getClass()->name); $this->assertSame('field4', $reflParameters[3]->getName()); $this->assertTrue($reflParameters[3]->isOptional()); }