You are here

public function UniqueFieldDateTestCase::testUniqueCtypeNode in Unique field 7

Test the unique requirement on a date field in the content type scope.

File

tests/date.test, line 32
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 testUniqueCtypeNode() {

  // Create a content type with a node reference field that is set to be
  // unique
  $edit = array();
  $edit['name'] = 'Unique Node';
  $edit['type'] = 'uf_node';
  $this
    ->drupalPost('admin/structure/types/add', $edit, t('Save content type'));
  $this
    ->assertText('The content type Unique Node has been added.', 'Content type added.');
  $edit = array();
  $edit['fields[_add_new_field][label]'] = 'Unique Node Date';
  $edit['fields[_add_new_field][field_name]'] = 'uf_node_date';
  $edit['fields[_add_new_field][type]'] = 'date';
  $edit['fields[_add_new_field][widget_type]'] = 'date_select';
  $this
    ->drupalPost('admin/structure/types/manage/uf_node/fields', $edit, t('Save'));
  $this
    ->assertText('These settings apply to the Unique Node Date field everywhere it is used.', 'Field added to content type.');
  $edit = array();
  $edit['unique_field_fields[field_uf_node_date]'] = 'field_uf_node_date';
  $this
    ->drupalPost('admin/structure/types/manage/uf_node', $edit, t('Save content type'));
  $this
    ->assertText('The content type Unique Node has been updated.', 'Content type updated.');

  // Attempt to create 2 nodes with the same date value
  $date = new DateTime('2011-07-11 11:11:11');
  $edit = array();
  $edit['title'] = $this
    ->randomName(24);
  $edit['body[und][0][value]'] = $this
    ->randomName(48);
  $edit['field_uf_node_date[und][0][value][month]'] = $date
    ->format('n');
  $edit['field_uf_node_date[und][0][value][day]'] = $date
    ->format('j');
  $edit['field_uf_node_date[und][0][value][year]'] = $date
    ->format('Y');
  $edit['field_uf_node_date[und][0][value][hour]'] = $date
    ->format('G');
  $edit['field_uf_node_date[und][0][value][minute]'] = $date
    ->format('i');
  $this
    ->drupalPost('node/add/uf-node', $edit, t('Save'));
  $this
    ->assertText($edit['body[und][0][value]'], 'Unique Node (uf_node) node has been created');
  $edit['title'] = $this
    ->randomName(24);
  $edit['body[und][0][value]'] = $this
    ->randomName(48);
  $this
    ->drupalPost('node/add/uf-node', $edit, t('Save'));
  $this
    ->assertText('The Unique Node Date field requires a unique value, and the specified value is already used', 'Unique Node (uf_node) node with duplicate content could not be created');

  // Check for false negative: Attempt to create a node with a unique date
  $date = new DateTime('2010-02-02 17:43:11');
  $edit = array();
  $edit['title'] = $this
    ->randomName(24);
  $edit['body[und][0][value]'] = $this
    ->randomName(48);
  $edit['field_uf_node_date[und][0][value][month]'] = $date
    ->format('n');
  $edit['field_uf_node_date[und][0][value][day]'] = $date
    ->format('j');
  $edit['field_uf_node_date[und][0][value][year]'] = $date
    ->format('Y');
  $edit['field_uf_node_date[und][0][value][hour]'] = $date
    ->format('G');
  $edit['field_uf_node_date[und][0][value][minute]'] = $date
    ->format('i');
  $this
    ->drupalPost('node/add/uf-node', $edit, t('Save'));
  $this
    ->assertText($edit['body[und][0][value]'], 'Unique Node (uf_node) node has been created');
}