danielebarchiesi@4
|
1 <?php
|
danielebarchiesi@4
|
2
|
danielebarchiesi@4
|
3 /**
|
danielebarchiesi@4
|
4 * Test for Entity Reference taxonomy integration.
|
danielebarchiesi@4
|
5 */
|
danielebarchiesi@4
|
6 class EntityReferenceTaxonomyTestCase extends DrupalWebTestCase {
|
danielebarchiesi@4
|
7 public static function getInfo() {
|
danielebarchiesi@4
|
8 return array(
|
danielebarchiesi@4
|
9 'name' => 'Entity Reference Taxonomy',
|
danielebarchiesi@4
|
10 'description' => 'Tests nodes with reference to terms as indexed.',
|
danielebarchiesi@4
|
11 'group' => 'Entity Reference',
|
danielebarchiesi@4
|
12 );
|
danielebarchiesi@4
|
13 }
|
danielebarchiesi@4
|
14
|
danielebarchiesi@4
|
15 public function setUp() {
|
danielebarchiesi@4
|
16 parent::setUp('entityreference', 'taxonomy');
|
danielebarchiesi@4
|
17
|
danielebarchiesi@4
|
18 // Create an entity reference field.
|
danielebarchiesi@4
|
19 $field = array(
|
danielebarchiesi@4
|
20 'entity_types' => array('node'),
|
danielebarchiesi@4
|
21 'settings' => array(
|
danielebarchiesi@4
|
22 'handler' => 'base',
|
danielebarchiesi@4
|
23 'target_type' => 'taxonomy_term',
|
danielebarchiesi@4
|
24 'handler_settings' => array(
|
danielebarchiesi@4
|
25 'target_bundles' => array(),
|
danielebarchiesi@4
|
26 ),
|
danielebarchiesi@4
|
27 ),
|
danielebarchiesi@4
|
28 'field_name' => 'field_entityreference_term',
|
danielebarchiesi@4
|
29 'type' => 'entityreference',
|
danielebarchiesi@4
|
30 );
|
danielebarchiesi@4
|
31 $field = field_create_field($field);
|
danielebarchiesi@4
|
32 $instance = array(
|
danielebarchiesi@4
|
33 'field_name' => 'field_entityreference_term',
|
danielebarchiesi@4
|
34 'bundle' => 'article',
|
danielebarchiesi@4
|
35 'entity_type' => 'node',
|
danielebarchiesi@4
|
36 );
|
danielebarchiesi@4
|
37
|
danielebarchiesi@4
|
38 // Enable the taxonomy-index behavior.
|
danielebarchiesi@4
|
39 $instance['settings']['behaviors']['taxonomy-index']['status'] = TRUE;
|
danielebarchiesi@4
|
40 field_create_instance($instance);
|
danielebarchiesi@4
|
41
|
danielebarchiesi@4
|
42 // Create a term reference field.
|
danielebarchiesi@4
|
43 $field = array(
|
danielebarchiesi@4
|
44 'translatable' => FALSE,
|
danielebarchiesi@4
|
45 'entity_types' => array('node'),
|
danielebarchiesi@4
|
46 'settings' => array(
|
danielebarchiesi@4
|
47 'allowed_values' => array(
|
danielebarchiesi@4
|
48 array(
|
danielebarchiesi@4
|
49 'vocabulary' => 'terms',
|
danielebarchiesi@4
|
50 'parent' => 0,
|
danielebarchiesi@4
|
51 ),
|
danielebarchiesi@4
|
52 ),
|
danielebarchiesi@4
|
53 ),
|
danielebarchiesi@4
|
54 'field_name' => 'field_taxonomy_term',
|
danielebarchiesi@4
|
55 'type' => 'taxonomy_term_reference',
|
danielebarchiesi@4
|
56 );
|
danielebarchiesi@4
|
57 $field = field_create_field($field);
|
danielebarchiesi@4
|
58 $instance = array(
|
danielebarchiesi@4
|
59 'field_name' => 'field_taxonomy_term',
|
danielebarchiesi@4
|
60 'bundle' => 'article',
|
danielebarchiesi@4
|
61 'entity_type' => 'node',
|
danielebarchiesi@4
|
62 );
|
danielebarchiesi@4
|
63 field_create_instance($instance);
|
danielebarchiesi@4
|
64
|
danielebarchiesi@4
|
65 // Create a terms vocobulary.
|
danielebarchiesi@4
|
66 $vocabulary = new stdClass();
|
danielebarchiesi@4
|
67 $vocabulary->name = 'Terms';
|
danielebarchiesi@4
|
68 $vocabulary->machine_name = 'terms';
|
danielebarchiesi@4
|
69 taxonomy_vocabulary_save($vocabulary);
|
danielebarchiesi@4
|
70
|
danielebarchiesi@4
|
71 // Create term.
|
danielebarchiesi@4
|
72 for ($i = 1; $i <= 2; $i++) {
|
danielebarchiesi@4
|
73 $term = new stdClass();
|
danielebarchiesi@4
|
74 $term->name = "term $i";
|
danielebarchiesi@4
|
75 $term->vid = 1;
|
danielebarchiesi@4
|
76 taxonomy_term_save($term);
|
danielebarchiesi@4
|
77 }
|
danielebarchiesi@4
|
78 }
|
danielebarchiesi@4
|
79
|
danielebarchiesi@4
|
80 /**
|
danielebarchiesi@4
|
81 * Test referencing a term using entity reference field.
|
danielebarchiesi@4
|
82 */
|
danielebarchiesi@4
|
83 public function testNodeIndex() {
|
danielebarchiesi@4
|
84 // Asert node insert with reference to term.
|
danielebarchiesi@4
|
85 $settings = array();
|
danielebarchiesi@4
|
86 $settings['type'] = 'article';
|
danielebarchiesi@4
|
87 $settings['field_entityreference_term'][LANGUAGE_NONE][0]['target_id'] = 1;
|
danielebarchiesi@4
|
88 $node = $this->drupalCreateNode($settings);
|
danielebarchiesi@4
|
89
|
danielebarchiesi@4
|
90 $this->assertEqual(taxonomy_select_nodes(1), array($node->nid));
|
danielebarchiesi@4
|
91
|
danielebarchiesi@4
|
92 // Asert node update with reference to term.
|
danielebarchiesi@4
|
93 node_save($node);
|
danielebarchiesi@4
|
94 $this->assertEqual(taxonomy_select_nodes(1), array($node->nid));
|
danielebarchiesi@4
|
95
|
danielebarchiesi@4
|
96 // Assert node update with reference to term and taxonomy reference to
|
danielebarchiesi@4
|
97 // another term.
|
danielebarchiesi@4
|
98 $wrapper = entity_metadata_wrapper('node', $node);
|
danielebarchiesi@4
|
99 $wrapper->field_taxonomy_term->set(2);
|
danielebarchiesi@4
|
100 $wrapper->save();
|
danielebarchiesi@4
|
101
|
danielebarchiesi@4
|
102 $this->assertEqual(taxonomy_select_nodes(1), array($node->nid));
|
danielebarchiesi@4
|
103 $this->assertEqual(taxonomy_select_nodes(2), array($node->nid));
|
danielebarchiesi@4
|
104
|
danielebarchiesi@4
|
105 // Assert node update with reference to term and taxonomy reference to
|
danielebarchiesi@4
|
106 // same term.
|
danielebarchiesi@4
|
107 $wrapper->field_taxonomy_term->set(1);
|
danielebarchiesi@4
|
108 $wrapper->save();
|
danielebarchiesi@4
|
109 $this->assertEqual(taxonomy_select_nodes(1), array($node->nid));
|
danielebarchiesi@4
|
110
|
danielebarchiesi@4
|
111 $wrapper->delete();
|
danielebarchiesi@4
|
112 $this->assertFalse(taxonomy_select_nodes(1));
|
danielebarchiesi@4
|
113 }
|
danielebarchiesi@4
|
114
|
danielebarchiesi@4
|
115 }
|