/** * There previously was a problem with a model being created, then a new custom field added, then if you try * to access the available CustomFieldData it was not available on that model. Since performance3 work * this has been resolve and this test confirms it works ok */ public function testConstructIncompleteIsNotNeeded() { //First create AAA model and save $aaa = new AAA(); $aaa->aaaMember = 'test'; $saved = $aaa->save(); $this->assertTrue($saved); $aaaId = $aaa->id; $aaa->forget(); unset($aaa); //Second create customFieldData $values = array('Item 1', 'Item 2', 'Item 3'); $labels = array('fr' => 'Item 1 fr', 'fr' => 'Item 2 fr', 'fr' => 'Item 3 fr'); $customFieldData = CustomFieldData::getByName('Items'); $customFieldData->serializedData = serialize($values); $customFieldData->serializedLabels = serialize($labels); $this->assertTrue($customFieldData->save()); $id = $customFieldData->id; unset($customFieldData); //Third create a CustomField on AAA $metadata = AAA::getMetadata(); $metadata['AAA']['customFields']['newCustomField'] = 'Items'; $metadata['AAA']['relations']['newCustomField'] = array(RedBeanModel::HAS_ONE, 'CustomField'); AAA::setMetadata($metadata); //Fourth make sure AAA can utilize CustomFieldData after being constructed $aaa = AAA::GetById($aaaId); $this->assertTrue($aaa->isAnAttribute('newCustomField')); $dropDownArray = unserialize($aaa->newCustomField->data->serializedData); $this->assertCount(3, $dropDownArray); //Fifth make sure a new model has the data available $aaa = new AAA(); $this->assertTrue($aaa->isAnAttribute('newCustomField')); $dropDownArray = unserialize($aaa->newCustomField->data->serializedData); $this->assertCount(3, $dropDownArray); }