public function PropertiesAdministrationTestCase::testEditCategory in Dynamic properties 7
Tests for creating and editing a category.
File
- ./properties.test, line 472 
- Contains tests for the properties.module
Class
- PropertiesAdministrationTestCase
- Tests for fields integration.
Code
public function testEditCategory() {
  $this
    ->loginAdmin();
  /// Edit Attributes in Categories
  // Create 8 properties.
  $attributes = array();
  for ($i = 0; $i < 8; $i++) {
    $attributes[$i] = $this
      ->createAttribute();
  }
  // Create category with these existing attributes.
  $category = $this
    ->createCategory(drupal_strtolower($this
    ->randomName(8)), $this
    ->randomName(20), $attributes);
  // Create new attribute.
  $attribute = $this
    ->createAttribute();
  $inputfieldname = "attributes[" . $attributes[0]->name . "][attribute]";
  debug($inputfieldname);
  $editAttribute = array(
    $inputfieldname => $attribute->name,
  );
  // Replace existing attribute with the new attribute.
  $this
    ->drupalGet('admin/config/content/properties/categories');
  $this
    ->AssertText($category->name);
  $this
    ->clickLink(t('edit'));
  $this
    ->drupalPost(NULL, $editAttribute, t('Save'));
  // Now check if the attribute was added to that category.
  $cat = properties_sql_properties_category_load($category->name);
  $newAttributeInCategory = FALSE;
  $oldAttributeInCategory = FALSE;
  // As the order isn't given, I walk trough the list of attributes.
  foreach ($cat->attributes as $attr) {
    if ($attr->name === $attribute->name) {
      $newAttributeInCategory = TRUE;
    }
    if ($attr->name === $attributes[0]->name) {
      $oldAttributeInCategory = TRUE;
    }
  }
  $this
    ->AssertText(t('Category updated.'));
  // The new attribute should be in that category.
  $this
    ->AssertTrue(isset($cat->attributes[$attribute->name]));
  // The old shouldn't.
  $this
    ->AssertFalse(isset($cat->attributes[$attributes[0]->name]));
  // Delete created property again.
  $this
    ->drupalGet('admin/config/content/properties/categories');
  $this
    ->AssertText($category->name);
  $this
    ->clickLink(t('edit'));
  $inputfieldname = "attributes[" . $attribute->name . "][attribute]";
  $deleteAttribute = array(
    $inputfieldname => '',
  );
  $this
    ->drupalPost(NULL, $deleteAttribute, t('Save'));
  $cat = properties_sql_properties_category_load($category->name);
  $this
    ->AssertFalse(isset($cat->attributes[$attribute->name]));
}