public function UniqueFieldDateTestCase::testUniqueSingleNode in Unique field 7
Test the unique requirement on a date field in the single scope.
File
- tests/
date.test, line 161 - Functional tests for the Unique Field module with Date field types.
Class
- UniqueFieldDateTestCase
- @file Functional tests for the Unique Field module with Date field types.
Code
public function testUniqueSingleNode() {
// Create a content type with two date fields that are set to be unique
$edit = array();
$edit['name'] = 'Unique Node Single';
$edit['type'] = 'uf_node_single';
$this
->drupalPost('admin/structure/types/add', $edit, t('Save content type'));
$this
->assertText('The content type Unique Node Single has been added.', 'Content type added.');
$edit = array();
$edit['fields[_add_new_field][label]'] = 'Unique Node Single Date 1';
$edit['fields[_add_new_field][field_name]'] = 'uf_node_single_date_1';
$edit['fields[_add_new_field][type]'] = 'date';
$edit['fields[_add_new_field][widget_type]'] = 'date_select';
$this
->drupalPost('admin/structure/types/manage/uf_node_single/fields', $edit, t('Save'));
$this
->assertText('These settings apply to the Unique Node Single Date 1 field everywhere it is used.', 'Field added to content type.');
$edit = array();
$edit['fields[_add_new_field][label]'] = 'Unique Node Single Date 2';
$edit['fields[_add_new_field][field_name]'] = 'uf_node_single_date_2';
$edit['fields[_add_new_field][type]'] = 'date';
$edit['fields[_add_new_field][widget_type]'] = 'date_select';
$this
->drupalPost('admin/structure/types/manage/uf_node_single/fields', $edit, t('Save'));
$this
->assertText('These settings apply to the Unique Node Single Date 2 field everywhere it is used.', 'Field added to content type.');
$edit = array();
$edit['unique_field_scope'] = UNIQUE_FIELD_SCOPE_NODE;
$edit['unique_field_fields[field_uf_node_single_date_1]'] = 'field_uf_node_single_date_1';
$edit['unique_field_fields[field_uf_node_single_date_2]'] = 'field_uf_node_single_date_2';
$this
->drupalPost('admin/structure/types/manage/uf_node_single', $edit, t('Save content type'));
$this
->assertText('The content type Unique Node Single has been updated.', 'Content type updated.');
// Attempt to create a node with the same date in both fields
$date = new DateTime('2011-06-12 19:08:22');
$edit = array();
$edit['title'] = $this
->randomName(24);
$edit['body[und][0][value]'] = $this
->randomName(48);
$edit['field_uf_node_single_date_1[und][0][value][month]'] = $date
->format('n');
$edit['field_uf_node_single_date_1[und][0][value][day]'] = $date
->format('j');
$edit['field_uf_node_single_date_1[und][0][value][year]'] = $date
->format('Y');
$edit['field_uf_node_single_date_1[und][0][value][hour]'] = $date
->format('G');
$edit['field_uf_node_single_date_1[und][0][value][minute]'] = $date
->format('i');
$edit['field_uf_node_single_date_2[und][0][value][month]'] = $date
->format('n');
$edit['field_uf_node_single_date_2[und][0][value][day]'] = $date
->format('j');
$edit['field_uf_node_single_date_2[und][0][value][year]'] = $date
->format('Y');
$edit['field_uf_node_single_date_2[und][0][value][hour]'] = $date
->format('G');
$edit['field_uf_node_single_date_2[und][0][value][minute]'] = $date
->format('i');
$this
->drupalPost('node/add/uf-node-single', $edit, t('Save'));
$this
->assertText('The Unique Node Single Date 2 fields must have unique values. The Unique Node Single Date 2 field has a value that is already used.', 'Unique Node Single (uf_node_single) node with duplicate content could not be created');
// Check for false negative: Attempt to create a node with unique text
$date1 = new DateTime('2011-01-12 19:08:22');
$date2 = new DateTime('2011-04-12 19:08:22');
$edit = array();
$edit['title'] = $this
->randomName(24);
$edit['body[und][0][value]'] = $this
->randomName(48);
$edit['field_uf_node_single_date_1[und][0][value][month]'] = $date1
->format('n');
$edit['field_uf_node_single_date_1[und][0][value][day]'] = $date1
->format('j');
$edit['field_uf_node_single_date_1[und][0][value][year]'] = $date1
->format('Y');
$edit['field_uf_node_single_date_1[und][0][value][hour]'] = $date1
->format('G');
$edit['field_uf_node_single_date_1[und][0][value][minute]'] = $date1
->format('i');
$edit['field_uf_node_single_date_2[und][0][value][month]'] = $date2
->format('n');
$edit['field_uf_node_single_date_2[und][0][value][day]'] = $date2
->format('j');
$edit['field_uf_node_single_date_2[und][0][value][year]'] = $date2
->format('Y');
$edit['field_uf_node_single_date_2[und][0][value][hour]'] = $date2
->format('G');
$edit['field_uf_node_single_date_2[und][0][value][minute]'] = $date2
->format('i');
$this
->drupalPost('node/add/uf-node-single', $edit, t('Save'));
$this
->assertText($edit['body[und][0][value]'], 'Unique Node Single (uf_node_single) node has been created');
}