function PropertiesTestCase::testPropertyFieldCreation in Dynamic properties 7
Test field creation functionality.
File
- ./properties.test, line 278 
- Contains tests for the properties.module
Class
- PropertiesTestCase
- Tests for fields integration.
Code
function testPropertyFieldCreation() {
  $this
    ->loginAdmin();
  $this
    ->createProperties();
  $this
    ->createField();
  // Create a single, separate attribute.
  $attribute = $this
    ->createAttribute();
  // Add first category
  $node = array(
    'title' => $this
      ->randomName(),
    $this->field_prefix . '[actions][new_category]' => $this->categories[0]->name,
  );
  $this
    ->drupalPost('node/add/page', $node, t('Add category'));
  // Next category.
  $category = array(
    $this->field_prefix . '[actions][new_category]' => $this->categories[1]->name,
  );
  $this
    ->drupalPost(NULL, $category, t('Add category'));
  // Last category.
  $category = array(
    $this->field_prefix . '[actions][new_category]' => $this->categories[2]->name,
  );
  $this
    ->drupalPost(NULL, $category, t('Add category'));
  // Fill in values.
  $values = array();
  $edit = array();
  foreach ($this->categories as $cid => $category) {
    foreach ($this->attributes[$cid] as $attribute) {
      $edit[$this
        ->getAttributeFormName($category, $attribute)] = $values[$attribute->name] = $this
        ->randomString(20);
    }
  }
  // Change order of categories category, third category first.
  $edit[$this->field_prefix . '[listing][' . $this->categories[2]->name . '][_weight]'] = -10;
  // Move an attribute to a different category.
  $edit[$this
    ->getAttributeFormName($this->categories[0], $this->attributes[0][1], 'category')] = $this->categories[1]->name;
  $edit[$this
    ->getAttributeFormName($this->categories[0], $this->attributes[0][1], '_weight')] = 4;
  // Change weight of an attribute.
  $edit[$this
    ->getAttributeFormName($this->categories[0], $this->attributes[0][0], '_weight')] = 2;
  $edit[$this
    ->getAttributeFormName($this->categories[0], $this->attributes[0][2], '_weight')] = 0;
  $this
    ->drupalPost(NULL, $edit, t('Save'));
  // Make sure that the third category comes before the first.
  $this
    ->assertPattern('/' . $this->categories[2]->label . '.*' . $this->categories[0]->label . '/s', t('Third category is displayed before first.'));
  // Make sure that the moved attribute is shown in the correct category.
  // Meaning, after the last attribute in that category.
  $this
    ->assertPattern('/' . $this->attributes[1][2]->label . '.*' . $this->attributes[0][1]->label . '/s', t('Moved attribute is shown in the correct place.'));
  // Make sure the default order in category 2 is correct.
  $this
    ->assertPattern('/' . $this->categories[2]->label . '.*' . $this->attributes[2][0]->label . '.*' . $this->attributes[2][1]->label . '.*' . $this->attributes[2][2]->label . '/s', t('Default order in category 2 is correct.'));
  // Make sure the changed order in category 0 is correct.
  $this
    ->assertPattern('/' . $this->attributes[0][2]->label . '.*' . $this->attributes[0][0]->label . '/s', t('Changed order in category 0 is correct.'));
  // Try editing the content.
  $this
    ->clickLink('Edit');
  // Add a new attribute.
  $edit = array(
    $this->field_prefix . '[actions][attribute_category]' => $this->categories[1]->name,
    $this->field_prefix . '[actions][new_attribute]' => $attribute->name,
  );
  $this
    ->drupalPost(NULL, $edit, t('Add attribute'));
  $edit = array(
    $this
      ->getAttributeFormName($this->categories[1], $this->attributes[0][1], 'category') => $this->categories[0]->name,
    $this
      ->getAttributeFormName($this->categories[1], $this->attributes[0][1], '_weight') => 10,
    $this
      ->getAttributeFormName($this->categories[1], $attribute) => $value = $this
      ->randomName(20),
    $this
      ->getAttributeFormName($this->categories[1], $attribute, '_weight') => -10,
  );
  $this
    ->drupalPost(NULL, $edit, t('Save'));
  // Verify that the attribute was added.
  $this
    ->assertPattern('/' . $this->categories[1]->label . '.*' . $attribute->label . '.*' . $this->attributes[1][2]->label . '/s', t('Newly added attribute is shown in the correct category.'));
  // Verify that the moved attribute has been moved back.
  $this
    ->assertPattern('/' . $this->categories[0]->label . '.*' . $this->attributes[0][2]->label . '.*' . $this->attributes[0][0]->label . '.*' . $this->attributes[0][1]->label . '.*' . $this->categories[1]->label . '/s', t('Changed order in category 0 is correct.'));
}