annotate sites/all/modules/bundle_inherit/bundle_inherit.test @ 11:b0ee71395280

deleted .DS_Store files
author danieleb <danielebarchiesi@me.com>
date Mon, 28 Oct 2013 16:12:13 +0000
parents ce11bbd8f642
children
rev   line source
danielebarchiesi@4 1 <?php
danielebarchiesi@4 2 /**
danielebarchiesi@4 3 * @file
danielebarchiesi@4 4 * Tests for bundle_inherit module.
danielebarchiesi@4 5 */
danielebarchiesi@4 6
danielebarchiesi@4 7 class BundleInherit extends DrupalWebTestCase {
danielebarchiesi@4 8 protected $parentType, $childType, $customFields, $extraField;
danielebarchiesi@4 9
danielebarchiesi@4 10 public static function getInfo() {
danielebarchiesi@4 11 return array(
danielebarchiesi@4 12 'name' => 'Bundle Inherit',
danielebarchiesi@4 13 'description' => 'Ensure that the Bundle Inherit module works properly',
danielebarchiesi@4 14 'group' => 'Bundle Inherit'
danielebarchiesi@4 15 );
danielebarchiesi@4 16 }
danielebarchiesi@4 17
danielebarchiesi@4 18 public function setUp($modules = array()) {
danielebarchiesi@4 19 $modules += array('bundle_inherit', 'node');
danielebarchiesi@4 20 parent::setUp($modules);
danielebarchiesi@4 21
danielebarchiesi@4 22 // Add new content type (for example we'll create node type, but generaly,
danielebarchiesi@4 23 // kind of the entity type does not matter here)
danielebarchiesi@4 24 $this->parentType = $this->drupalCreateContentType();
danielebarchiesi@4 25 $this->childType = $this->drupalCreateContentType();
danielebarchiesi@4 26 // Create custom field
danielebarchiesi@4 27 do {
danielebarchiesi@4 28 $field_name = drupal_strtolower($this->randomName());
danielebarchiesi@4 29 } while (field_info_field($field_name));
danielebarchiesi@4 30 // Add 5 custom fields
danielebarchiesi@4 31 for ($i = 0; $i < 5; $i++) {
danielebarchiesi@4 32 do {
danielebarchiesi@4 33 $field_name = drupal_strtolower($this->randomName());
danielebarchiesi@4 34 } while (field_info_field($field_name));
danielebarchiesi@4 35 $this->customFields[$field_name]['field'] = field_create_field(array(
danielebarchiesi@4 36 'field_name' => $field_name,
danielebarchiesi@4 37 'type' => 'text'
danielebarchiesi@4 38 ));
danielebarchiesi@4 39 field_create_instance(array(
danielebarchiesi@4 40 'field_name' => $field_name,
danielebarchiesi@4 41 'entity_type' => 'node',
danielebarchiesi@4 42 'bundle' => $this->parentType->type
danielebarchiesi@4 43 ));
danielebarchiesi@4 44 $this->customFields[$field_name]['instance'] = field_info_instance('node', $field_name, $this->parentType->type);
danielebarchiesi@4 45 }
danielebarchiesi@4 46 do {
danielebarchiesi@4 47 $field_name = drupal_strtolower($this->randomName());
danielebarchiesi@4 48 } while (field_info_field($field_name));
danielebarchiesi@4 49 $this->extraField['field'] = field_create_field(array(
danielebarchiesi@4 50 'field_name' => $field_name,
danielebarchiesi@4 51 'type' => 'text'
danielebarchiesi@4 52 ));
danielebarchiesi@4 53 }
danielebarchiesi@4 54
danielebarchiesi@4 55 public function inheritPerform() {
danielebarchiesi@4 56 // When implementing inheritance on node entity type we should delete body
danielebarchiesi@4 57 // field first.
danielebarchiesi@4 58 if ($body_field_instance = field_info_instance('node', 'body', $this->childType->type)) {
danielebarchiesi@4 59 field_delete_instance($body_field_instance);
danielebarchiesi@4 60 }
danielebarchiesi@4 61
danielebarchiesi@4 62 // Perform inherit operations
danielebarchiesi@4 63 bundle_inherit_perform('node', $this->childType->type, $this->parentType->type, TRUE);
danielebarchiesi@4 64
danielebarchiesi@4 65 $type_inherited = db_query('SELECT 1 FROM {bundle_hierarchy} WHERE entity_type = :entity_type AND bundle = :bundle AND bundle_parent = :bundle_parent', array(':entity_type' => 'node', ':bundle' => $this->childType->type, ':bundle_parent' => $this->parentType->type))->fetchField();
danielebarchiesi@4 66 $this->assertTrue($type_inherited, t('Type was inherited.'));
danielebarchiesi@4 67
danielebarchiesi@4 68 // Check if fields instances was succesfuly inherited
danielebarchiesi@4 69 $n = 1;
danielebarchiesi@4 70 foreach ($this->customFields as $field_name => $field) {
danielebarchiesi@4 71 $parent_type_field_instance = $this->customFields[$field_name]['instance'];
danielebarchiesi@4 72 $child_type_field_instance = field_info_instance('node', $field_name, $this->childType->type);
danielebarchiesi@4 73 $this->assertTrue($this->compareInstances($parent_type_field_instance, $child_type_field_instance), t('Child field instance %n is equal to the parent one', array('%n' => $n++)));
danielebarchiesi@4 74 }
danielebarchiesi@4 75 }
danielebarchiesi@4 76
danielebarchiesi@4 77 public function fieldInstanceCreate() {
danielebarchiesi@4 78 field_create_instance(array(
danielebarchiesi@4 79 'field_name' => $this->extraField['field']['field_name'],
danielebarchiesi@4 80 'entity_type' => 'node',
danielebarchiesi@4 81 'bundle' => $this->parentType->type
danielebarchiesi@4 82 ));
danielebarchiesi@4 83 $this->extraField['instance'] = field_info_instance('node', $this->extraField['field']['field_name'], $this->parentType->type);
danielebarchiesi@4 84 $parent_type_field_instance = $this->extraField['instance']; $child_type_field_instance = field_info_instance('node', $this->extraField['field']['field_name'], $this->childType->type);
danielebarchiesi@4 85 $this->assertTrue($this->compareInstances($parent_type_field_instance, $child_type_field_instance), t('The field instance attached to the parent type was succesfuly attached to the child type and equal to the parent one.'));
danielebarchiesi@4 86 }
danielebarchiesi@4 87
danielebarchiesi@4 88 public function fieldInstanceUpdate() {
danielebarchiesi@4 89 $this->extraField['instance']['label'] = $this->randomString();
danielebarchiesi@4 90 $this->extraField['instance']['required'] = TRUE;
danielebarchiesi@4 91 field_update_instance($this->extraField['instance']);
danielebarchiesi@4 92 $child_type_field_instance = field_info_instance('node', $this->extraField['field']['field_name'], $this->childType->type);
danielebarchiesi@4 93 $this->assertTrue($this->compareInstances($this->extraField['instance'], $child_type_field_instance), t('Child type field instance is equal to the parent one after updating.'));
danielebarchiesi@4 94 }
danielebarchiesi@4 95
danielebarchiesi@4 96 public function fieldInstanceDelete() {
danielebarchiesi@4 97 field_delete_instance($this->extraField['instance']);
danielebarchiesi@4 98 $child_type_field_instance = field_info_instance('node', $this->extraField['field']['field_name'], $this->childType->type);
danielebarchiesi@4 99 $this->assertTrue($child_type_field_instance['locked'] == FALSE, t('Child type field instance was succesfuly deleted when the parent type one was deleted.'));
danielebarchiesi@4 100 }
danielebarchiesi@4 101
danielebarchiesi@4 102 /**
danielebarchiesi@4 103 * Run complex CRUD test based on node entity type.
danielebarchiesi@4 104 */
danielebarchiesi@4 105 public function testCRUD() {
danielebarchiesi@4 106 $this->inheritPerform();
danielebarchiesi@4 107 $this->fieldInstanceCreate();
danielebarchiesi@4 108 $this->fieldInstanceUpdate();
danielebarchiesi@4 109 $this->fieldInstanceDelete();
danielebarchiesi@4 110 }
danielebarchiesi@4 111
danielebarchiesi@4 112 /**
danielebarchiesi@4 113 * Helper function to compare two instances indeferent of their 'id',
danielebarchiesi@4 114 * 'bundle'and 'locked' fields.
danielebarchiesi@4 115 * @param $a
danielebarchiesi@4 116 * First instance.
danielebarchiesi@4 117 * @param $b
danielebarchiesi@4 118 * Second instance.
danielebarchiesi@4 119 * @return
danielebarchiesi@4 120 * TRUE if $a and $b are equal.
danielebarchiesi@4 121 */
danielebarchiesi@4 122 private function compareInstances($a, $b) {
danielebarchiesi@4 123 unset($a['id'], $a['bundle'], $a['locked']);
danielebarchiesi@4 124 unset($b['id'], $b['bundle'], $b['locked']);
danielebarchiesi@4 125 return $a == $b;
danielebarchiesi@4 126 }
danielebarchiesi@4 127 }