source: sipes/modules_contrib/content_taxonomy/tests/content_taxonomy.test @ 8a8efa8

stableversion-3.0
Last change on this file since 8a8efa8 was 177a560, checked in by José Gregorio Puentes <jpuentes@…>, 8 años ago

se agrego el directorio de modulos contribuidos de drupal

  • Propiedad mode establecida a 100755
File size: 28.0 KB
Línea 
1<?php
2// $Id: content_taxonomy.test,v 1.1.2.6 2009/02/02 13:28:08 mh86 Exp $
3
4
5/**
6 * Base Class for testing Content Taxonomy
7 * extends the ContentCrudTestCase Class from CCK, which provides many useful helper functions
8 */
9class ContentTaxonomyTestCase extends ContentCrudTestCase {
10 
11  function setUp() {
12    $args = func_get_args();
13    $modules = array_merge(array("optionwidgets", "content_taxonomy", "content_taxonomy_options", "content_taxonomy_autocomplete"), $args);
14    call_user_func_array(array('parent','setUp'), $modules);
15    $this->loginWithPermissions();
16    $this->acquireContentTypes(2);
17  }
18 
19  /**
20   * helper function to create a vocabulary and terms
21   */
22  function createTerms($count = 1) {
23    $edit['name'] = $this->randomName(200);
24    $edit['hierarchy'] = 2; // Hierarchy 0,1,2
25    $edit['multiple'] = 1; // multiple 0,1
26    $edit['required'] = 0; // required 0,1
27    $edit['relations'] = 0;
28    $edit['tags'] = 1;
29    // exec save function
30    taxonomy_save_vocabulary($edit);
31    $vid = $edit['vid'];
32   
33    for ($i = 0; $i < $count; $i++) {
34      // create term
35      $termname = $this->randomName(20);
36      $data = array('name' => $termname, 'vid' => $vid);
37      taxonomy_save_term($data);
38      $terms[] = taxonomy_get_term($data['tid']);
39    }
40    return $terms;
41 
42  }
43 
44  /**
45   * helper assertion function, which checks if the node field array is built correctly
46   */
47  function assertNodeMultiValues($node, $field_name, $terms_in = array(), $terms_out = array()) {
48    $tids = array();
49    if (is_array($node->{$field_name})) {
50      foreach ($node->{$field_name} as $key => $value) {
51        $tids[$value['value']] = $value['value'];
52      }
53    }
54    foreach ($terms_in as $term) {
55      $this->assertTrue(in_array($term->tid, $tids), 'Term correctly in node field');
56    }
57   
58    foreach ($terms_out as $term) {
59      $this->assertTrue(!in_array($term->tid, $tids), 'Term correctly in node field');
60    }
61  }
62}
63 
64 
65/**
66 * Base Class for testing Content Taxonomy,
67 * extends the ContentCrudTestCase Class from CCK, which provides many useful helper functions
68 */
69class ContentTaxonomyTest extends ContentTaxonomyTestCase {
70 
71  function getInfo() {
72    return array(
73      'name' => t('Content Taxonomy - Saving'),
74      'description' => t('Tests basic saving'),
75      'group' => t('Content Taxonomy'),
76    );
77  }
78 
79  function setUp() {
80    parent::setUp();
81  }
82 
83 
84  function testContentTaxonomySaving() {
85    $type = $this->content_types[0];
86    $type_url = str_replace('_', '-', $type->type);
87   
88    $terms = $this->createTerms(4);
89   
90    $settings = array(
91      'type' => 'content_taxonomy',
92      'widget_type' => 'content_taxonomy_options',
93      'vid' => $terms[0]->vid,
94      'parent' => 0,
95      'parent_php_code' => '',
96      'show_depth' => 0,
97      'save_term_node' => FALSE,
98      'depth' => NULL,
99      'hide_taxonomy_fields' => TRUE,
100    );
101   
102    $field = $this->createField($settings, 0);
103    $field_name = $field['field_name'];
104
105    //Check if field get's exposed to the content type
106    $this->drupalGET('node/add/'. $type_url);
107    $this->assertRaw($field_name, 'Field found on content type form');
108    $this->assertRaw($terms[0]->name, 'Option value found on content type form');
109    $this->assertRaw($terms[1]->name, 'Option value found on content type form');
110    $this->assertRaw($terms[2]->name, 'Option value found on content type form');
111    $this->assertRaw($terms[3]->name, 'Option value found on content type form');
112   
113    // Create a node with one value selected
114    $edit = array();
115    $edit['title'] = $this->randomName(20);
116    $edit['body'] = $this->randomName(20);
117    $edit[$field_name .'[value]'] = $terms[0]->tid;
118    $this->drupalPost('node/add/'. $type_url, $edit, 'Save');
119    $node = node_load(array('title' => $edit['title']));
120    $in_term_node = db_result(db_query("SELECT tid FROM {term_node} WHERE nid = %d", $node->nid));
121    $this->assertFalse($in_term_node, "Terms not in term_node table");
122    $this->assertEqual($node->{$field_name}[0]['value'], $terms[0]->tid, 'Terms saved');
123    $this->drupalGet('node/'. $node->nid);   
124    $this->assertText($terms[0]->name, 'Terms displayed');
125    $this->assertNoText($terms[1]->name, 'Term not displayed');
126
127    //Edit the node and select a different value
128    $edit = array();
129    $edit[$field_name.'[value]'] = $terms[1]->tid;
130    $this->drupalPost('node/'. $node->nid .'/edit', $edit, 'Save');
131    $node = node_load($node->nid, NULL, TRUE);
132    $in_term_node = db_result(db_query("SELECT tid FROM {term_node} WHERE nid = %d", $node->nid));
133    $this->assertFalse($in_term_node, "Terms not in term_node table");
134    $this->assertIdentical($node->{$field_name}[0]['value'], $terms[1]->tid, 'Terms updated');
135    $this->drupalGet('node/'. $node->nid);
136    $this->assertText($terms[1]->name, 'Terms displayed');
137    $this->assertNoText($terms[0]->name, 'Term not displayed');
138   
139    //Edit the node and unselect the value (selecting '- None -').
140    $edit = array();
141    $edit[$field_name.'[value]'] = '';
142    $this->drupalPost('node/'. $node->nid .'/edit', $edit, 'Save');
143    $node = node_load($node->nid, NULL, TRUE);
144    $in_term_node = db_result(db_query("SELECT tid FROM {term_node} WHERE nid = %d", $node->nid));
145    $this->assertFalse($in_term_node, "Terms not in term_node table");
146    $this->assertIdentical($node->{$field_name}[0]['value'], NULL, 'Terms deleted');
147    $this->drupalGet('node/'. $node->nid);
148    $this->assertNoText($terms[0]->name, 'Terms not displayed');
149    $this->assertNoText($terms[1]->name, 'Terms not displayed');
150   
151   
152    //CREATE NEW FIELD MULTIPLE
153    $settings['multiple'] = TRUE;
154    $field = $this->createField($settings, 0);
155    $field_name = $field['field_name'];
156   
157    //Check if field get's exposed to the content type
158    $this->drupalGET('node/add/'. $type_url);
159    $this->assertRaw($field_name, 'Field found on content type form');
160    $this->assertRaw($terms[0]->name, 'Option value found on content type form');
161    $this->assertRaw($terms[1]->name, 'Option value found on content type form');
162    $this->assertRaw($terms[2]->name, 'Option value found on content type form');
163    $this->assertRaw($terms[3]->name, 'Option value found on content type form');
164   
165    // Edit the node and select multiple values.
166    $edit[$field_name .'[value]['. $terms[0]->tid .']'] = $terms[0]->tid;
167    $edit[$field_name .'[value]['. $terms[1]->tid .']'] = $terms[1]->tid;
168    $this->drupalPost('node/'. $node->nid .'/edit', $edit, 'Save');
169    $node = node_load($node->nid, NULL, TRUE);
170    $in_term_node = db_result(db_query("SELECT tid FROM {term_node} WHERE nid = %d", $node->nid));
171    $this->assertFalse($in_term_node, "Terms not in term_node table");
172    $tids = array();
173    foreach ($node->{$field_name} as $key => $value) {
174      $tids[$value['value']] = $value['value'];
175    }
176    if (!in_array($terms[0]->tid, $tids) || !in_array($terms[1]->tid, $tids)) {
177      $this->fail("Terms saved");
178    }
179    $this->drupalGet('node/'. $node->nid);
180    $this->assertText($terms[0]->name, 'Terms displayed');
181    $this->assertText($terms[1]->name, 'Terms displayed');
182    $this->assertNoText($terms[2]->name, 'Term not displayed');
183   
184    //Edit the node and select different values
185    $edit = array();
186    $edit[$field_name.'[value]['. $terms[0]->tid .']'] = FALSE;
187    $edit[$field_name.'[value]['. $terms[1]->tid .']'] = $terms[1]->tid;
188    $edit[$field_name.'[value]['. $terms[2]->tid .']'] = $terms[2]->tid;
189    $this->drupalPost('node/'. $node->nid .'/edit', $edit, 'Save');
190    $node = node_load($node->nid, NULL, TRUE);
191    $in_term_node = db_result(db_query("SELECT tid FROM {term_node} WHERE nid = %d", $node->nid));
192    $this->assertFalse($in_term_node, "Terms not in term_node table");
193    $tids = array();
194    foreach ($node->{$field_name} as $key => $value) {
195      $tids[$value['value']] = $value['value'];
196    }
197    if (!in_array($terms[2]->tid, $tids) || !in_array($terms[1]->tid, $tids)) {
198      $this->fail("Terms updated");
199    }
200    if (in_array($terms[0]->tid, $tids)) {
201      $this->fail("Terms updated");
202    }
203    $this->drupalGet('node/'. $node->nid);
204    $this->assertText($terms[1]->name, 'Terms displayed');
205    $this->assertText($terms[2]->name, 'Terms displayed');
206    $this->assertNoText($terms[0]->name, 'Term1 not displayed');
207   
208    //Edit the node and unselect values
209    $edit = array();
210    $edit[$field_name.'[value]['. $terms[1]->tid .']'] = FALSE;
211    $edit[$field_name.'[value]['. $terms[2]->tid .']'] = FALSE;
212    $this->drupalPost('node/'. $node->nid .'/edit', $edit, 'Save');
213    $node = node_load($node->nid, NULL, TRUE);
214    $in_term_node = db_result(db_query("SELECT tid FROM {term_node} WHERE nid = %d", $node->nid));
215    $this->assertFalse($in_term_node, "Terms not in term_node table");
216    $tids = array();
217    foreach ($node->{$field_name} as $key => $value) {
218      $tids[$value['value']] = $value['value'];
219    }
220    if (in_array($terms[2]->tid, $tids) || in_array($terms[1]->tid, $tids) || in_array($terms[0]->tid, $tids)) {
221      $this->fail("Terms deleted");
222    }
223    $this->drupalGet('node/'. $node->nid);
224    $this->assertNoText($terms[1]->name, 'Terms not displayed');
225    $this->assertNoText($terms[2]->name, 'Terms not displayed');
226    $this->assertNoText($terms[0]->name, 'Terms not displayed');
227   
228   
229    /**
230     * Tests Saving in Term Node
231     */
232    $ct = $this->content_types[1];
233    $ct_url = str_replace('_', '-', $ct->type);
234   
235    $settings['save_term_node'] = TRUE;
236    $settings['multiple'] = FALSE;
237
238    //$terms = $this->createTerms(4);
239    $field = $this->createField($settings, 1);
240    $field_name = $field['field_name'];
241   
242    //Check if field get's exposed to the content type
243    $this->drupalGET('node/add/'. $ct_url);
244    $this->assertRaw($field_name, 'Field found on content type form');
245    $this->assertRaw($terms[0]->name, 'Option value found on content type form');
246    $this->assertRaw($terms[1]->name, 'Option value found on content type form');
247    $this->assertRaw($terms[2]->name, 'Option value found on content type form');
248    $this->assertRaw($terms[3]->name, 'Option value found on content type form');
249   
250    // Create a node with one value selected
251    $edit = array();
252    $edit['title'] = $this->randomName(20);
253    $edit['body'] = $this->randomName(20);
254    $edit[$field_name .'[value]'] = $terms[0]->tid;
255    $this->drupalPost('node/add/'. $ct_url, $edit, 'Save');
256    $node = node_load(array('title' => $edit['title']));
257    $in_term_node = db_result(db_query("SELECT tid FROM {term_node} WHERE nid = %d", $node->nid));
258    $this->assertEqual($in_term_node, $terms[0]->tid, "Terms saved in term_node table");
259    $this->assertEqual($node->{$field_name}[0]['value'], $terms[0]->tid, 'Terms saved');
260    $this->drupalGet('node/'. $node->nid);
261    $this->assertText($terms[0]->name, 'Terms displayed');
262    $this->assertNoText($terms[1]->name, 'Term not displayed');
263   
264    //Edit the node and select a different value
265    $edit = array();
266    $edit[$field_name.'[value]'] = $terms[1]->tid;
267    $this->drupalPost('node/'. $node->nid .'/edit', $edit, 'Save');
268    $node = node_load($node->nid, NULL, TRUE);
269    $in_term_node = db_result(db_query("SELECT tid FROM {term_node} WHERE nid = %d", $node->nid));
270    $this->assertEqual($in_term_node, $terms[1]->tid, "Terms updated in term_node table");
271    $this->assertEqual($node->{$field_name}[0]['value'], $terms[1]->tid, 'Terms updated');
272    $this->drupalGet('node/'. $node->nid);
273    $this->assertText($terms[1]->name, 'Terms displayed');
274    $this->assertNoText($terms[0]->name, 'Term not displayed');
275   
276    //Edit the node and unselect the value (selecting '- None -').
277    $edit = array();
278    $edit[$field_name.'[value]'] = '';
279    $this->drupalPost('node/'. $node->nid .'/edit', $edit, 'Save');
280    $node = node_load($node->nid, NULL, TRUE);
281    $in_term_node = db_result(db_query("SELECT tid FROM {term_node} WHERE nid = %d", $node->nid));
282    $this->assertFalse($in_term_node, "Terms deleted from term_node table");
283    $this->assertIdentical($node->{$field_name}[0]['value'], NULL, 'Terms deleted');
284    $this->drupalGet('node/'. $node->nid);
285    $this->assertNoText($terms[0]->name, 'Terms not displayed');
286    $this->assertNoText($terms[1]->name, 'Terms not displayed');
287   
288    //CREATE NEW FIELD MULTIPLE
289    $settings['multiple'] = TRUE;
290    $field = $this->createField($settings, 1);
291    $field_name = $field['field_name'];
292   
293    //Check if field get's exposed to the content type
294    $this->drupalGET('node/add/'. $ct_url);
295    $this->assertRaw($field_name, 'Field found on content type form');
296    $this->assertRaw($terms[0]->name, 'Option value found on content type form');
297    $this->assertRaw($terms[1]->name, 'Option value found on content type form');
298    $this->assertRaw($terms[2]->name, 'Option value found on content type form');
299    $this->assertRaw($terms[3]->name, 'Option value found on content type form');
300   
301    // Edit the node and select multiple values.
302    $edit[$field_name .'[value]['. $terms[0]->tid .']'] = $terms[0]->tid;
303    $edit[$field_name .'[value]['. $terms[1]->tid .']'] = $terms[1]->tid;
304    $this->drupalPost('node/'. $node->nid .'/edit', $edit, 'Save');
305    $node = node_load($node->nid, NULL, TRUE);
306    $in_term_node1 = db_result(db_query("SELECT tid FROM {term_node} WHERE nid = %d AND tid = %d", $node->nid, $terms[0]->tid));
307    $this->assertEqual($in_term_node1, $terms[0]->tid, "Terms updated in term_node table");
308    $in_term_node2 = db_result(db_query("SELECT tid FROM {term_node} WHERE nid = %d AND tid = %d", $node->nid, $terms[1]->tid));
309    $this->assertEqual($in_term_node2, $terms[1]->tid, "Terms updated in term_node table");
310    $this->assertNodeMultiValues($node, $field_name, array($terms[0], $terms[1]));
311    $this->drupalGet('node/'. $node->nid);
312    $this->assertText($terms[0]->name, 'Terms displayed');
313    $this->assertText($terms[1]->name, 'Terms displayed');
314    $this->assertNoText($terms[2]->name, 'Term not displayed');
315   
316    //Edit the node and select different values
317    $edit = array();
318    $edit[$field_name.'[value]['. $terms[0]->tid .']'] = FALSE;
319    $edit[$field_name.'[value]['. $terms[1]->tid .']'] = $terms[1]->tid;
320    $edit[$field_name.'[value]['. $terms[2]->tid .']'] = $terms[2]->tid;
321    $this->drupalPost('node/'. $node->nid .'/edit', $edit, 'Save');
322    $node = node_load($node->nid, NULL, TRUE);
323    $in_term_node = db_result(db_query("SELECT tid FROM {term_node} WHERE nid = %d AND tid = %d", $node->nid, $terms[0]->tid));
324    $this->assertFalse($in_term_node, "Term deleted term_node table");
325    $in_term_node3 = db_result(db_query("SELECT tid FROM {term_node} WHERE nid = %d AND tid = %d", $node->nid, $terms[2]->tid));
326    $this->assertEqual($in_term_node3, $terms[2]->tid, "Terms updated in term_node table");
327    $in_term_node2 = db_result(db_query("SELECT tid FROM {term_node} WHERE nid = %d AND tid = %d", $node->nid, $terms[1]->tid));
328    $this->assertEqual($in_term_node2, $terms[1]->tid, "Terms updated in term_node table");
329    $this->assertNodeMultiValues($node, $field_name, array($terms[1], $terms[2]), array($terms[0]));
330    $this->drupalGet('node/'. $node->nid);
331    $this->assertText($terms[1]->name, 'Terms displayed');
332    $this->assertText($terms[2]->name, 'Terms displayed');
333    $this->assertNoText($terms[0]->name, 'Term1 not displayed');
334   
335    //Edit the node and unselect values
336    $edit = array();
337    $edit[$field_name.'[value]['. $terms[1]->tid .']'] = FALSE;
338    $edit[$field_name.'[value]['. $terms[2]->tid .']'] = FALSE;
339    $this->drupalPost('node/'. $node->nid .'/edit', $edit, 'Save');
340    $node = node_load($node->nid, NULL, TRUE);
341    $in_term_node1 = db_result(db_query("SELECT tid FROM {term_node} WHERE nid = %d AND tid = %d", $node->nid, $terms[0]->tid));
342    $this->assertFalse($in_term_node1, "Term deleted term_node table");
343    $in_term_node2 = db_result(db_query("SELECT tid FROM {term_node} WHERE nid = %d AND tid = %d", $node->nid, $terms[1]->tid));
344    $this->assertFalse($in_term_node2, "Term deleted term_node table");
345    $in_term_node3 = db_result(db_query("SELECT tid FROM {term_node} WHERE nid = %d AND tid = %d", $node->nid, $terms[2]->tid));
346    $this->assertFalse($in_term_node3, "Term deleted term_node table");
347    $this->assertNodeMultiValues($node, $field_name, array(), array($terms[0], $terms[1], $terms[2]));
348    $this->drupalGet('node/'. $node->nid);
349    $this->assertNoText($terms[1]->name, 'Terms not displayed');
350    $this->assertNoText($terms[2]->name, 'Terms not displayed');
351    $this->assertNoText($terms[0]->name, 'Terms not displayed');
352  }
353}
354
355
356/**
357 * Test Cases for Content Taxonomy Autocomplete
358 */
359class ContentTaxonomyAutocompleteTest extends ContentTaxonomyTestCase {
360 
361  function getInfo() {
362    return array(
363      'name' => t('Content Taxonomy - Autocomplete'),
364      'description' => t('Tests freetagging widget'),
365      'group' => t('Content Taxonomy'),
366    );
367  }
368 
369  function setUp() {
370    parent::setUp("diff");
371  }
372 
373  function testAutocomplete() {
374    $type = $this->content_types[1];
375    $type_url = str_replace('_', '-', $type->type);
376    $terms = $this->createTerms(4);
377   
378    //single field
379    $settings = array(
380      'type' => 'content_taxonomy',
381      'widget_type' => 'content_taxonomy_autocomplete',
382      'vid' => $terms[0]->vid,
383      'parent' => 0,
384      'parent_php_code' => '',
385      'show_depth' => 0,
386      'save_term_node' => FALSE,
387      'depth' => NULL,
388      'hide_taxonomy_fields' => TRUE,
389    );
390   
391    $field = $this->createField($settings, 1);
392    $field_name = $field['field_name'];
393
394    // Create a node with one value
395    $edit = array();
396    $edit['title'] = $this->randomName(20);
397    $edit['body'] = $this->randomName(20);
398    $edit[$field_name .'[value]'] = $terms[0]->name;
399    $this->drupalPost('node/add/'. $type_url, $edit, 'Save');
400    $node = node_load(array('title' => $edit['title']));
401    $this->assertEqual($node->{$field_name}[0]['value'], $terms[0]->tid, 'Terms saved');
402    $this->drupalGet('node/'. $node->nid);   
403    $this->assertText($terms[0]->name, 'Terms displayed');
404    $this->assertNoText($terms[1]->name, 'Term not displayed');
405   
406    //Edit the node and select a different value
407    $edit = array();
408    $edit[$field_name.'[value]'] = $terms[1]->name;
409    $this->drupalPost('node/'. $node->nid .'/edit', $edit, 'Save');
410    $node = node_load($node->nid, NULL, TRUE);
411    $this->assertIdentical($node->{$field_name}[0]['value'], $terms[1]->tid, 'Terms updated');
412    $this->drupalGet('node/'. $node->nid);
413    $this->assertText($terms[1]->name, 'Terms displayed');
414    $this->assertNoText($terms[0]->name, 'Term not displayed');
415   
416    //Edit the node and select 2 values for single field
417    $edit = array();
418    $edit[$field_name.'[value]'] = $terms[1]->name .", ". $terms[0]->name;
419    $this->drupalPost('node/'. $node->nid .'/edit', $edit, 'Save');
420    $this->assertText('You can provide only one value', 'Validated');
421    $edit[$field_name.'[value]'] = $terms[1]->name;
422    $this->drupalPost('node/'. $node->nid .'/edit', $edit, 'Save');
423    $node = node_load($node->nid, NULL, TRUE);
424    $this->assertIdentical($node->{$field_name}[0]['value'], $terms[1]->tid, 'Terms updated');
425    $this->drupalGet('node/'. $node->nid);
426    $this->assertText($terms[1]->name, 'Terms displayed');
427    $this->assertNoText($terms[0]->name, 'Term not displayed');
428   
429    //Add a new term
430    $edit = array();
431    $new_term_name = 'test';
432    $edit['title'] = $this->randomName(20);
433    $edit['body'] = $this->randomName(20);
434    $edit[$field_name .'[value]'] = $new_term_name;
435    $this->drupalPost('node/add/'. $type_url, $edit, 'Save');
436    $new_term_tid = db_result(db_query("SELECT tid FROM {term_data} WHERE name = '%s' AND vid = %d", $new_term_name, $settings['vid']));
437    $this->assertTrue(($new_term_tid > 0), "New term added to vocabulary");
438    $node = node_load(array('title' => $edit['title']));
439    $this->assertEqual($node->{$field_name}[0]['value'], $new_term_tid, 'Terms saved');
440    $this->drupalGet('node/'. $node->nid);   
441    $this->assertText($new_term_name, 'Terms displayed');
442
443    //test Multi Field
444    $type = $this->content_types[0];
445    $type_url = str_replace('_', '-', $type->type);
446   
447    //multi field
448    $settings = array(
449      'type' => 'content_taxonomy',
450      'widget_type' => 'content_taxonomy_autocomplete',
451      'vid' => $terms[0]->vid,
452      'parent' => 0,
453      'parent_php_code' => '',
454      'show_depth' => 0,
455      'save_term_node' => FALSE,
456      'depth' => NULL,
457      'hide_taxonomy_fields' => TRUE,
458      'multiple' => TRUE,
459    );
460   
461
462    $field = $this->createField($settings, 0);
463    $field_name = $field['field_name'];
464
465    // Create a node with one value
466    $edit = array();
467    $edit['title'] = $this->randomName(20);
468    $edit['body'] = $this->randomName(20);
469    $edit[$field_name .'[value]'] = $terms[0]->name;
470    $this->drupalPost('node/add/'. $type_url, $edit, 'Save');
471    $node = node_load(array('title' => $edit['title']));
472    $this->assertNodeMultiValues($node, $field_name, array($terms[0]));
473    $this->drupalGet('node/'. $node->nid);   
474    $this->assertText($terms[0]->name, 'Terms displayed');
475    $this->assertNoText($terms[1]->name, 'Term not displayed');
476
477    //Edit the node and select a different value
478    $edit = array();
479    $edit[$field_name.'[value]'] = $terms[1]->name;
480    $this->drupalPost('node/'. $node->nid .'/edit', $edit, 'Save');
481    $node = node_load($node->nid, NULL, TRUE);
482    $this->assertNodeMultiValues($node, $field_name, array($terms[1]), array($terms[0]));
483    $this->drupalGet('node/'. $node->nid);
484    $this->assertText($terms[1]->name, 'Terms displayed');
485    $this->assertNoText($terms[0]->name, 'Term not displayed');
486   
487    //Edit the node and select a second value
488    $edit = array();
489    $edit[$field_name.'[value]'] = $terms[1]->name .", ". $terms[0]->name;
490    $this->drupalPost('node/'. $node->nid .'/edit', $edit, 'Save');
491    $node = node_load($node->nid, NULL, TRUE);
492    $this->assertNodeMultiValues($node, $field_name, array($terms[0], $terms[1]));
493    $this->drupalGet('node/'. $node->nid);
494    $this->assertText($terms[1]->name, 'Terms displayed');
495    $this->assertText($terms[0]->name, 'Terms displayed');
496   
497    // Create a node with one value and test preview
498    $edit = array();
499    $edit['title'] = $this->randomName(20);
500    $edit['body'] = $this->randomName(20);
501    $edit[$field_name .'[value]'] = $terms[0]->name;
502    $this->drupalPost('node/add/'. $type_url, $edit, 'Preview');
503    $this->drupalPost('node/add/'. $type_url, $edit, 'Save');
504    $node = node_load(array('title' => $edit['title']));
505    $this->assertNodeMultiValues($node, $field_name, array($terms[0]));
506    $this->drupalGet('node/'. $node->nid);   
507    $this->assertText($terms[0]->name, 'Terms displayed');
508   
509    // Create a node with one value and test preview with a new term
510    $new_term_name = 'test2';
511    $edit = array();
512    $edit['title'] = $this->randomName(20);
513    $edit['body'] = $this->randomName(20);
514    $edit[$field_name .'[value]'] = $new_term_name;
515    $this->drupalPost('node/add/'. $type_url, $edit, 'Preview');
516    $new_term_tid = db_result(db_query("SELECT tid FROM {term_data} WHERE name = '%s' AND vid = %d", $new_term_name, $settings['vid']));
517    $this->assertTrue(($new_term_tid > 0), "Term in added to vocabulary");
518    $this->drupalPost('node/add/'. $type_url, $edit, 'Save');
519    $node = node_load(array('title' => $edit['title']));
520    $this->assertNodeMultiValues($node, $field_name, array(taxonomy_get_term($new_term_tid)));
521    $this->drupalGet('node/'. $node->nid);   
522    $this->assertText($new_term_name, 'Terms displayed');
523   
524    // Create a node with one value and test preview diff
525    $edit = array();
526    $edit['title'] = $this->randomName(20);
527    $edit['body'] = $this->randomName(20);
528    $edit[$field_name .'[value]'] = $terms[0]->name;
529    $this->drupalPost('node/add/'. $type_url, $edit, 'Save');
530    $node = node_load(array('title' => $edit['title']));
531   
532    $edit = array();
533    $edit['title'] = $node->title;
534    $edit['body'] = str_replace('<!--break-->', '', $node->body);
535    $edit[$field_name .'[value]'] = $terms[0]->name;   
536    $this->drupalPost('node/'. $node->nid .'/edit', $edit, 'Preview changes');
537    $this->assertText('No visible changes', 'No visible changes');
538    $this->assertRaw($terms[0]->name, 'Term in field');
539   /* $this->drupalPost('node/'. $node->nid .'/edit', $edit, 'Save');
540    $node = node_load($node->nid, NULL, TRUE);
541    $this->assertNodeMultiValues($node, $field_name, array($terms[0]));
542    $this->drupalGet('node/'. $node->nid);
543    $this->assertText($terms[0]->name, 'Terms displayed');*/
544   
545    //CREATE NEW REQUIRED FIELD
546    $settings['required'] = TRUE;
547    $field = $this->createField($settings, 0);
548    $field_name = $field['field_name'];
549   
550    $edit = array();
551    $edit['title'] = $this->randomName(20);
552    $edit['body'] = $this->randomName(20);
553    $edit[$field_name.'[value]'] = '';
554    $this->drupalPost('node/add/'. $type_url, $edit, 'Save');
555    $this->assertText($field_name .' field is required', 'Validated required field');
556    $edit[$field_name.'[value]'] = $terms[1]->name;
557    $this->drupalPost('node/add/'. $type_url, $edit, 'Save');
558    $this->assertNoText($field_name .' field is required', 'Validation for required field successfully passed');
559    $node = node_load(array('title' => $edit['title']));
560    $this->assertNodeMultiValues($node, $field_name, array($terms[1]));
561    $this->drupalGet('node/'. $node->nid);
562    $this->assertText($terms[1]->name, 'Terms displayed');
563
564  }
565}
566
567/**
568 * Test Cases for Content Taxonomy Autocomplete
569 */
570class ContentTaxonomyAutocompletePermissionsTest extends ContentTaxonomyTestCase {
571 
572  function getInfo() {
573    return array(
574      'name' => t('Content Taxonomy - Autocomplete with Permissions'),
575      'description' => t('Tests freetagging widget with content permissions'),
576      'group' => t('Content Taxonomy'),
577    );
578  }
579 
580  function setUp() {
581    parent::setUp("content_permissions");
582  }
583 
584  function testAutocomplete() {
585    $type = $this->content_types[1];
586    $type_url = str_replace('_', '-', $type->type);
587    $terms = $this->createTerms(4);
588   
589    //single field
590    $settings = array(
591      'type' => 'content_taxonomy',
592      'widget_type' => 'content_taxonomy_autocomplete',
593      'vid' => $terms[0]->vid,
594      'parent' => 0,
595      'parent_php_code' => '',
596      'show_depth' => 0,
597      'save_term_node' => FALSE,
598      'depth' => NULL,
599      'hide_taxonomy_fields' => TRUE,
600    );
601   
602    $field = $this->createField($settings, 1);
603    $field_name = $field['field_name'];
604   
605    $permissions = array('edit '. $field_name, 'view '. $field_name);
606    $rids = db_query("SELECT rid FROM {role}");
607    while($obj = db_fetch_object($rids)) {
608      db_query("INSERT INTO {permission} (rid, perm) VALUES (%d, '%s')", $obj->rid, implode(', ', $permissions));
609    }
610   
611    // Create a node with one value with edit permissions
612    $edit = array();
613    $edit['title'] = $this->randomName(20);
614    $edit['body'] = $this->randomName(20);
615    $edit[$field_name .'[value]'] = $terms[0]->name;
616    $this->drupalPost('node/add/'. $type_url, $edit, 'Save');
617    $node = node_load(array('title' => $edit['title']));
618    $this->assertEqual($node->{$field_name}[0]['value'], $terms[0]->tid, 'Terms saved');
619    $this->drupalGet('node/'. $node->nid);   
620    $this->assertText($terms[0]->name, 'Terms displayed');
621    $this->assertNoText($terms[1]->name, 'Term not displayed');
622   
623    //delete edit field perm
624    $permissions_old = array('edit '. $field_name, 'view '. $field_name);
625    $permissions_new = array('view '. $field_name);
626    $rids = db_query("SELECT rid FROM {role}");
627    while($obj = db_fetch_object($rids)) {
628      db_query("DELETE FROM {permission WHERE rid = %d AND perm = '%s'", $obj->rid, implode(', ', $permissions_old));
629      db_query("INSERT INTO {permission} (rid, perm) VALUES (%d, '%s')", $obj->rid, implode(', ', $permissions_new));
630    }
631   
632    //Edit the node, but without perm
633    $edit = array();
634    $this->drupalPost('node/'. $node->nid .'/edit', $edit, 'Save');
635    $this->drupalGet('node/'. $node->nid .'/edit');
636    $this->assertNoRaw($field_name, "Field hidden");
637    $node = node_load($node->nid, NULL, TRUE);
638    $this->assertIdentical($node->{$field_name}[0]['value'], $terms[0]->tid, 'Terms saved');
639    $this->drupalGet('node/'. $node->nid);
640    $this->assertText($terms[0]->name, 'Terms displayed');
641  }
642}
Nota: Vea TracBrowser para ayuda de uso del navegador del repositorio.