public function testDynamicDateAttributeOnForm() { $searchForm = new ASearchFormTestModel(new MixedRelationsModel()); //Test get and set. $this->assertEquals(null, $searchForm->date__Date); $searchForm->date__Date = 'aTest'; $this->assertEquals('aTest', $searchForm->date__Date); //Test getting attribute names collection $compareData = array('anyA', 'ABName', 'differentOperatorA', 'differentOperatorB', 'dateDateTimeADate__Date', 'dateDateTimeADateTime__DateTime', 'dynamicStructure', 'dynamicClauses', 'anyMixedAttributes', 'date__Date', 'date2__Date', 'dateTime__DateTime', 'dateTime2__DateTime'); $this->assertEquals($compareData, $searchForm->attributeNames()); //Check some other methods to make sure they work ok. $this->assertFalse($searchForm->isRelation('date__Date')); $this->assertTrue($searchForm->isAttribute('date__Date')); $this->assertFalse($searchForm->isAttributeRequired('date__Date')); //Test attributeRules and attributeLabels $attributeLabels = $searchForm->attributeLabels(); $this->assertEquals('Date', $attributeLabels['date__Date']); $this->assertEquals('Date 2', $attributeLabels['date2__Date']); $compareData = array(array('date__Date', 'safe'), array('date2__Date', 'safe'), array('dateTime__DateTime', 'safe'), array('dateTime2__DateTime', 'safe'), array('dynamicStructure', 'safe'), array('dynamicStructure', 'validateDynamicStructure', 'on' => 'validateDynamic, validateSaveSearch'), array('dynamicClauses', 'safe'), array('dynamicClauses', 'validateDynamicClauses', 'on' => 'validateDynamic, validateSaveSearch'), array('anyA', 'safe'), array('ABName', 'safe'), array('differentOperatorA', 'safe'), array('differentOperatorB', 'boolean'), array('dateDateTimeADate__Date', 'safe'), array('dateDateTimeADateTime__DateTime', 'safe')); $this->assertEquals($compareData, $searchForm->rules()); //Test additional methods. $mappedData = $searchForm->getAttributesMappedToRealAttributesMetadata(); $this->assertEquals('resolveEntireMappingByRules', $mappedData['date__Date']); $mappingRulesType = $searchForm->getSearchFormAttributeMappingRulesTypeByAttribute('date__Date'); $this->assertEquals('MixedDateTypes', $mappingRulesType); //Test that the correct elements are used for the dynamic date attribute. $elementType = ModelAttributeToMixedTypeUtil::getType($searchForm, 'date__Date'); $this->assertEquals('MixedDateTypesForSearch', $elementType); }
public function rules() { return array_merge(parent::rules(), array(array('filteredBy', 'string'))); }