/**
  * Write a simple model class for a non aggregate root domain obbject
  * @test
  */
 function relatedMethodsReflectRenamingAProperty()
 {
     $modelName = 'model7';
     $this->generateInitialModelClassFile($modelName);
     // create an "old" domainObject
     $domainObject = $this->buildDomainObject($modelName);
     $this->assertTrue(is_object($domainObject), 'No domain object');
     $property = new Tx_ExtensionBuilder_Domain_Model_DomainObject_StringProperty('prop1');
     $uniqueIdentifier1 = md5(microtime() . 'prop1');
     $property->setUniqueIdentifier($uniqueIdentifier1);
     $domainObject->addProperty($property);
     $uniqueIdentifier2 = md5(microtime() . 'model');
     $domainObject->setUniqueIdentifier($uniqueIdentifier2);
     $this->roundTripService->_set('oldDomainObjects', array($domainObject->getUniqueIdentifier() => $domainObject));
     // create an "old" class object.
     $modelClassObject = $this->classBuilder->generateModelClassObject($domainObject);
     $this->assertTrue(is_object($modelClassObject), 'No class object');
     // Check that the getter/methods exist
     $this->assertTrue($modelClassObject->methodExists('getProp1'));
     $this->assertTrue($modelClassObject->methodExists('setProp1'));
     // set the class object manually, this is usually parsed from an existing class file
     $this->roundTripService->_set('classObject', $modelClassObject);
     // build a new domain object with the same unique identifiers
     $newDomainObject = $this->buildDomainObject('Dummy');
     $property = new Tx_ExtensionBuilder_Domain_Model_DomainObject_BooleanProperty('newProp1Name');
     $property->setUniqueIdentifier($uniqueIdentifier1);
     $property->setRequired(TRUE);
     $newDomainObject->addProperty($property);
     $newDomainObject->setUniqueIdentifier($uniqueIdentifier2);
     // now the slass object should be updated
     $this->roundTripService->_call('updateModelClassProperties', $domainObject, $newDomainObject);
     $classObject = $this->roundTripService->_get('classObject');
     $this->assertTrue($classObject->methodExists('getNewProp1Name'));
     $this->assertTrue($classObject->methodExists('setNewProp1Name'));
 }
 /**
  *
  */
 public function classBuilderGeneratesGetterMethodForSimpleProperty()
 {
     $domainObject = $this->buildDomainObject($this->modelName, true, true);
     $property0 = new Tx_ExtensionBuilder_Domain_Model_DomainObject_StringProperty('name');
     $property0->setRequired(TRUE);
     $domainObject->addProperty($property0);
     $modelClassObject = $this->classBuilder->generateModelClassObject($domainObject);
     $this->assertTrue($modelClassObject->methodExists('getName'), 'No method: getName');
 }
 /**
  * @test
  */
 public function domainObjectHasExpectedProperties()
 {
     $name = 'MyDomainObject';
     $description = 'My long domain object description';
     $input = array('name' => $name, 'objectsettings' => array('description' => $description, 'aggregateRoot' => TRUE, 'type' => 'Entity'), 'propertyGroup' => array('properties' => array(0 => array('propertyName' => 'name', 'propertyType' => 'String', 'propertyIsRequired' => 'true'), 1 => array('propertyName' => 'type', 'propertyType' => 'Integer'))), 'actionGroup' => array('customActions' => array('test'), 'list' => 1), 'relationGroup' => array());
     $expected = new Tx_ExtensionBuilder_Domain_Model_DomainObject();
     $expected->setName($name);
     $expected->setDescription($description);
     $expected->setEntity(TRUE);
     $expected->setAggregateRoot(TRUE);
     $property0 = new Tx_ExtensionBuilder_Domain_Model_DomainObject_StringProperty('name');
     $property0->setRequired(TRUE);
     $property1 = new Tx_ExtensionBuilder_Domain_Model_DomainObject_IntegerProperty('type');
     $expected->addProperty($property0);
     $expected->addProperty($property1);
     $testAction = t3lib_div::makeInstance('Tx_ExtensionBuilder_Domain_Model_DomainObject_Action');
     $testAction->setName('test');
     $expected->addAction($testAction);
     $listAction = t3lib_div::makeInstance('Tx_ExtensionBuilder_Domain_Model_DomainObject_Action');
     $listAction->setName('list');
     $expected->addAction($listAction);
     $actual = $this->objectSchemaBuilder->build($input);
     $this->assertEquals($actual, $expected, 'Domain Object not built correctly.');
 }