/** * Override to properly handle retrieving rule information from the model for the attribute name. */ public function rules() { $rules = array_merge(parent::rules(), array(array('type', 'type', 'type' => 'string'), array('type', 'required'), array('value', 'safe'), array('value', 'validateValue'), array('shouldSetValue', 'boolean'))); $applicableRules = ModelAttributeRulesToWorkflowActionAttributeUtil::getApplicableRulesByModelClassNameAndAttributeName($this->modelClassName, $this->modelAttributeName, 'value'); return array_merge($rules, $applicableRules); }
/** * @depends testOwnedAddressModel */ public function testGetApplicableRulesByModelClassNameAndAttributeNameForCustomCreatedTypes() { Yii::app()->user->userModel = User::getByUsername('super'); $import = new Import(); $import->serializedData = serialize(array('importRulesType' => 'Accounts')); $this->assertTrue($import->save()); ModulesSearchWithDataProviderTestHelper::createDateAttribute(new Account(), 'date'); ModulesSearchWithDataProviderTestHelper::createDateTimeAttribute(new Account(), 'dateTime'); ModulesSearchWithDataProviderTestHelper::createCheckBoxAttribute(new Account(), 'checkbox'); ModulesSearchWithDataProviderTestHelper::createDecimalAttribute(new Account(), 'decimal'); ModulesSearchWithDataProviderTestHelper::createIntegerAttribute(new Account(), 'integer'); ModulesSearchWithDataProviderTestHelper::createPhoneAttribute(new Account(), 'phone'); ModulesSearchWithDataProviderTestHelper::createTextAttribute(new Account(), 'text'); ModulesSearchWithDataProviderTestHelper::createTextAreaAttribute(new Account(), 'textArea'); ModulesSearchWithDataProviderTestHelper::createUrlAttribute(new Account(), 'url'); //Test All custom created types since their rules could vary $rules = ModelAttributeRulesToWorkflowActionAttributeUtil::getApplicableRulesByModelClassNameAndAttributeName('Account', 'dateCstm', 'value'); $compareData = array(); $this->assertEquals($compareData, $rules); $rules = ModelAttributeRulesToWorkflowActionAttributeUtil::getApplicableRulesByModelClassNameAndAttributeName('Account', 'dateTimeCstm', 'value'); $compareData = array(); $this->assertEquals($compareData, $rules); $rules = ModelAttributeRulesToWorkflowActionAttributeUtil::getApplicableRulesByModelClassNameAndAttributeName('Account', 'checkboxCstm', 'value'); $compareData = array(); $this->assertEquals($compareData, $rules); $rules = ModelAttributeRulesToWorkflowActionAttributeUtil::getApplicableRulesByModelClassNameAndAttributeName('Account', 'decimalCstm', 'value'); $compareData = array(array('value', 'length', 'max' => 6), array('value', 'RedBeanModelNumberValidator', 'precision' => 2)); $this->assertEquals($compareData, $rules); $rules = ModelAttributeRulesToWorkflowActionAttributeUtil::getApplicableRulesByModelClassNameAndAttributeName('Account', 'integerCstm', 'value'); $compareData = array(array('value', 'length', 'max' => 11), array('value', 'numerical', 'min' => -500000, 'max' => 500000)); $this->assertEquals($compareData, $rules); $rules = ModelAttributeRulesToWorkflowActionAttributeUtil::getApplicableRulesByModelClassNameAndAttributeName('Account', 'phoneCstm', 'value'); $compareData = array(array('value', 'length', 'max' => 20)); $this->assertEquals($compareData, $rules); $rules = ModelAttributeRulesToWorkflowActionAttributeUtil::getApplicableRulesByModelClassNameAndAttributeName('Account', 'textCstm', 'value'); $compareData = array(array('value', 'length', 'max' => 50)); $this->assertEquals($compareData, $rules); $rules = ModelAttributeRulesToWorkflowActionAttributeUtil::getApplicableRulesByModelClassNameAndAttributeName('Account', 'textAreaCstm', 'value'); $compareData = array(); $this->assertEquals($compareData, $rules); $rules = ModelAttributeRulesToWorkflowActionAttributeUtil::getApplicableRulesByModelClassNameAndAttributeName('Account', 'urlCstm', 'value'); $compareData = array(array('value', 'length', 'max' => 50)); $this->assertEquals($compareData, $rules); }