Пример #1
0
 protected function setAndGetMultiSelectDropDownAttribute($attributeName, $withDefaultData)
 {
     $this->assertTrue(isset($attributeName) && $attributeName != '');
     $this->assertTrue(isset($withDefaultData) && is_bool($withDefaultData));
     $values = array('Reading', 'Writing', 'Singing', 'Surfing');
     $labels = array('fr' => array('Reading fr', 'Writing fr', 'Singing fr', 'Surfing fr'), 'de' => array('Reading de', 'Writing de', 'Singing de', 'Surfing de'));
     $hobbiesFieldData = CustomFieldData::getByName('Hobbies');
     $hobbiesFieldData->serializedData = serialize($values);
     $this->assertTrue($hobbiesFieldData->save());
     $attributeForm = new MultiSelectDropDownAttributeForm();
     $attributeForm->attributeName = $attributeName;
     $attributeForm->attributeLabels = array('de' => 'Test Hobbies 2 de', 'en' => 'Test Hobbies 2 en', 'es' => 'Test Hobbies 2 es', 'fr' => 'Test Hobbies 2 fr', 'it' => 'Test Hobbies 2 it');
     $attributeForm->isAudited = true;
     $attributeForm->isRequired = true;
     $attributeForm->customFieldDataData = $values;
     $attributeForm->customFieldDataName = 'Hobbies';
     $attributeForm->customFieldDataLabels = $labels;
     if ($withDefaultData) {
         $attributeForm->defaultValueOrder = 1;
     } else {
         $attributeForm->defaultValue = null;
         $attributeForm->defaultValueOrder = null;
     }
     $modelAttributesAdapterClassName = $attributeForm::getModelAttributeAdapterNameForSavingAttributeFormData();
     $adapter = new $modelAttributesAdapterClassName(new Account());
     try {
         $adapter->setAttributeMetadataFromForm($attributeForm);
     } catch (FailedDatabaseSchemaChangeException $e) {
         echo $e->getMessage();
         $this->fail();
     }
     $account = new Account();
     $attributeForm = AttributesFormFactory::createAttributeFormByAttributeName($account, $attributeName . 'Cstm');
     $this->assertEquals('MultiSelectDropDown', $attributeForm->getAttributeTypeName());
     $this->assertEquals($attributeName . 'Cstm', $attributeForm->attributeName);
     $compareAttributeLabels = array('de' => 'Test Hobbies 2 de', 'en' => 'Test Hobbies 2 en', 'es' => 'Test Hobbies 2 es', 'fr' => 'Test Hobbies 2 fr', 'it' => 'Test Hobbies 2 it');
     $this->assertEquals($compareAttributeLabels, $attributeForm->attributeLabels);
     $this->assertEquals(true, $attributeForm->isAudited);
     $this->assertEquals(true, $attributeForm->isRequired);
     $this->assertEquals('Hobbies', $attributeForm->customFieldDataName);
     $this->assertEquals($values, $attributeForm->customFieldDataData);
     $this->assertEquals($labels, $attributeForm->customFieldDataLabels);
     if ($withDefaultData) {
         $this->assertEquals('Writing', $attributeForm->defaultValue);
         $this->assertEquals(1, $attributeForm->defaultValueOrder);
     } else {
         $this->assertEquals(null, $attributeForm->defaultValue);
         $this->assertEquals(null, $attributeForm->defaultValueOrder);
     }
     //Test that validation on completely new multi select picklists works correctly and is inline with the rules
     //from the CustomFieldData model.
     $attributeForm = new MultiSelectDropDownAttributeForm();
     $attributeForm->attributeName = 's';
     //name to short. test that this fails.
     $attributeForm->attributeLabels = array('de' => 'Test Hobbies 3 de', 'en' => 'Test Hobbies 3 en', 'es' => 'Test Hobbies 3 es', 'fr' => 'Test Hobbies 3 fr', 'it' => 'Test Hobbies 3 it');
     $attributeForm->isAudited = true;
     $attributeForm->isRequired = true;
     if ($withDefaultData) {
         $attributeForm->defaultValueOrder = 1;
     } else {
         $attributeForm->defaultValue = null;
         $attributeForm->defaultValueOrder = null;
     }
     $attributeForm->customFieldDataData = array('a', 'b', 'c');
     $modelAttributesAdapterClassName = $attributeForm::getModelAttributeAdapterNameForSavingAttributeFormData();
     $adapter = new $modelAttributesAdapterClassName(new Account());
     $this->assertFalse($attributeForm->validate());
     $attributeForm->attributeName = 'camelcased';
     $this->assertTrue($attributeForm->validate());
     try {
         $adapter->setAttributeMetadataFromForm($attributeForm);
     } catch (Exception $e) {
         echo $e->getMessage();
         $this->fail();
     }
 }
 public static function createMultiSelectDropDownAttribute($attributeName, $withDefaultData, $modelClassName)
 {
     assert('isset($attributeName) && $attributeName != null');
     assert('isset($withDefaultData) && is_bool($withDefaultData)');
     $values = array('Reading', 'Writing', 'Singing', 'Surfing');
     $labels = array('fr' => array('Reading fr', 'Writing fr', 'Singing fr', 'Surfing fr'), 'de' => array('Reading de', 'Writing de', 'Singing de', 'Surfing de'), 'en' => array('Reading en', 'Writing en', 'Singing en', 'Surfing en'));
     $hobbiesFieldData = CustomFieldData::getByName('Hobbies');
     $hobbiesFieldData->serializedData = serialize($values);
     $hobbiesFieldData->save();
     $attributeForm = new MultiSelectDropDownAttributeForm();
     $attributeForm->attributeName = $attributeName;
     $attributeForm->attributeLabels = array('de' => 'Test' . $attributeName . 'de', 'en' => 'Test' . $attributeName . 'en', 'es' => 'Test' . $attributeName . 'es', 'fr' => 'Test' . $attributeName . 'fr', 'it' => 'Test' . $attributeName . 'it');
     $attributeForm->isAudited = true;
     $attributeForm->isRequired = false;
     $attributeForm->customFieldDataData = $values;
     $attributeForm->customFieldDataName = 'Hobbies';
     $attributeForm->customFieldDataLabels = $labels;
     if ($withDefaultData) {
         $attributeForm->defaultValueOrder = 1;
     } else {
         $attributeForm->defaultValue = null;
         $attributeForm->defaultValueOrder = null;
     }
     $validate = $attributeForm->validate();
     if ($validate == false) {
         throw new FailedToValidateException();
     }
     $modelAttributesAdapterClassName = $attributeForm::getModelAttributeAdapterNameForSavingAttributeFormData();
     $adapter = new $modelAttributesAdapterClassName(new $modelClassName());
     try {
         $adapter->setAttributeMetadataFromForm($attributeForm);
     } catch (FailedDatabaseSchemaChangeException $e) {
         echo $e->getMessage();
         Yii::app()->end(0, false);
     }
 }