/**
  * 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);
 }