danielebarchiesi@4: 'Entity Reference Taxonomy', danielebarchiesi@4: 'description' => 'Tests nodes with reference to terms as indexed.', danielebarchiesi@4: 'group' => 'Entity Reference', danielebarchiesi@4: ); danielebarchiesi@4: } danielebarchiesi@4: danielebarchiesi@4: public function setUp() { danielebarchiesi@4: parent::setUp('entityreference', 'taxonomy'); danielebarchiesi@4: danielebarchiesi@4: // Create an entity reference field. danielebarchiesi@4: $field = array( danielebarchiesi@4: 'entity_types' => array('node'), danielebarchiesi@4: 'settings' => array( danielebarchiesi@4: 'handler' => 'base', danielebarchiesi@4: 'target_type' => 'taxonomy_term', danielebarchiesi@4: 'handler_settings' => array( danielebarchiesi@4: 'target_bundles' => array(), danielebarchiesi@4: ), danielebarchiesi@4: ), danielebarchiesi@4: 'field_name' => 'field_entityreference_term', danielebarchiesi@4: 'type' => 'entityreference', danielebarchiesi@4: ); danielebarchiesi@4: $field = field_create_field($field); danielebarchiesi@4: $instance = array( danielebarchiesi@4: 'field_name' => 'field_entityreference_term', danielebarchiesi@4: 'bundle' => 'article', danielebarchiesi@4: 'entity_type' => 'node', danielebarchiesi@4: ); danielebarchiesi@4: danielebarchiesi@4: // Enable the taxonomy-index behavior. danielebarchiesi@4: $instance['settings']['behaviors']['taxonomy-index']['status'] = TRUE; danielebarchiesi@4: field_create_instance($instance); danielebarchiesi@4: danielebarchiesi@4: // Create a term reference field. danielebarchiesi@4: $field = array( danielebarchiesi@4: 'translatable' => FALSE, danielebarchiesi@4: 'entity_types' => array('node'), danielebarchiesi@4: 'settings' => array( danielebarchiesi@4: 'allowed_values' => array( danielebarchiesi@4: array( danielebarchiesi@4: 'vocabulary' => 'terms', danielebarchiesi@4: 'parent' => 0, danielebarchiesi@4: ), danielebarchiesi@4: ), danielebarchiesi@4: ), danielebarchiesi@4: 'field_name' => 'field_taxonomy_term', danielebarchiesi@4: 'type' => 'taxonomy_term_reference', danielebarchiesi@4: ); danielebarchiesi@4: $field = field_create_field($field); danielebarchiesi@4: $instance = array( danielebarchiesi@4: 'field_name' => 'field_taxonomy_term', danielebarchiesi@4: 'bundle' => 'article', danielebarchiesi@4: 'entity_type' => 'node', danielebarchiesi@4: ); danielebarchiesi@4: field_create_instance($instance); danielebarchiesi@4: danielebarchiesi@4: // Create a terms vocobulary. danielebarchiesi@4: $vocabulary = new stdClass(); danielebarchiesi@4: $vocabulary->name = 'Terms'; danielebarchiesi@4: $vocabulary->machine_name = 'terms'; danielebarchiesi@4: taxonomy_vocabulary_save($vocabulary); danielebarchiesi@4: danielebarchiesi@4: // Create term. danielebarchiesi@4: for ($i = 1; $i <= 2; $i++) { danielebarchiesi@4: $term = new stdClass(); danielebarchiesi@4: $term->name = "term $i"; danielebarchiesi@4: $term->vid = 1; danielebarchiesi@4: taxonomy_term_save($term); danielebarchiesi@4: } danielebarchiesi@4: } danielebarchiesi@4: danielebarchiesi@4: /** danielebarchiesi@4: * Test referencing a term using entity reference field. danielebarchiesi@4: */ danielebarchiesi@4: public function testNodeIndex() { danielebarchiesi@4: // Asert node insert with reference to term. danielebarchiesi@4: $settings = array(); danielebarchiesi@4: $settings['type'] = 'article'; danielebarchiesi@4: $settings['field_entityreference_term'][LANGUAGE_NONE][0]['target_id'] = 1; danielebarchiesi@4: $node = $this->drupalCreateNode($settings); danielebarchiesi@4: danielebarchiesi@4: $this->assertEqual(taxonomy_select_nodes(1), array($node->nid)); danielebarchiesi@4: danielebarchiesi@4: // Asert node update with reference to term. danielebarchiesi@4: node_save($node); danielebarchiesi@4: $this->assertEqual(taxonomy_select_nodes(1), array($node->nid)); danielebarchiesi@4: danielebarchiesi@4: // Assert node update with reference to term and taxonomy reference to danielebarchiesi@4: // another term. danielebarchiesi@4: $wrapper = entity_metadata_wrapper('node', $node); danielebarchiesi@4: $wrapper->field_taxonomy_term->set(2); danielebarchiesi@4: $wrapper->save(); danielebarchiesi@4: danielebarchiesi@4: $this->assertEqual(taxonomy_select_nodes(1), array($node->nid)); danielebarchiesi@4: $this->assertEqual(taxonomy_select_nodes(2), array($node->nid)); danielebarchiesi@4: danielebarchiesi@4: // Assert node update with reference to term and taxonomy reference to danielebarchiesi@4: // same term. danielebarchiesi@4: $wrapper->field_taxonomy_term->set(1); danielebarchiesi@4: $wrapper->save(); danielebarchiesi@4: $this->assertEqual(taxonomy_select_nodes(1), array($node->nid)); danielebarchiesi@4: danielebarchiesi@4: $wrapper->delete(); danielebarchiesi@4: $this->assertFalse(taxonomy_select_nodes(1)); danielebarchiesi@4: } danielebarchiesi@4: danielebarchiesi@4: }