| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240 |
- <?php
- /**
- * @file
- * Tests for timefield.
- */
- class TimeFieldTest extends DrupalWebTestCase {
- /**
- * Implements getInfo().
- */
- public static function getInfo() {
- return array(
- 'name' => 'Timefield',
- 'description' => 'Create a content type with timefield fields, create a node, check for correct values.',
- 'group' => 'Fields',
- );
- }
- /**
- * Overrides setUp()
- */
- function setUp() {
- // Enable the timefield module.
- parent::setUp(array('field_ui', 'timefield'));
- }
- /**
- * Test basic functionality of the timefield.
- *
- * - Creates a content type.
- * - Adds a single-valued timefield to it.
- * - Adds a multivalued timefield to it.
- * - Creates a node of the new type.
- * - Populates the single-valued field.
- * - Populates the multivalued field with two items.
- * - Tests the result.
- */
- function testTimeFieldBasic() {
- $content_type_friendly = $this->randomName(20);
- $content_type_machine = drupal_strtolower($this->randomName(10));
- $title = $this->randomName(20);
- // Create and login user.
- $account = $this->drupalCreateUser(array('administer content types'));
- $this->drupalLogin($account);
- $this->drupalGet('admin/structure/types');
- // Create the content type.
- $this->clickLink(t('Add content type'));
- $single_field_name_friendly = $this->randomName(20);
- $single_field_name_machine = drupal_strtolower($this->randomName(10));
- $edit = array(
- 'name' => $content_type_friendly,
- 'type' => $content_type_machine,
- );
- $this->drupalPost(NULL, $edit, t('Save and add fields'));
- $this->assertText(t('The content type @name has been added.', array('@name' => $content_type_friendly)));
- // Somehow clicking "save" isn't enough, and we have to do a
- // node_types_rebuild().
- node_types_rebuild();
- menu_rebuild();
- $type_exists = db_query('SELECT 1 FROM {node_type} WHERE type = :type', array(':type' => $content_type_machine))->fetchField();
- $this->assertTrue($type_exists, 'The new content type has been created in the database.');
- // Now add a singleton field.
- $edit = array(
- 'fields[_add_new_field][label]' => $single_field_name_friendly,
- 'fields[_add_new_field][field_name]' => $single_field_name_machine,
- 'fields[_add_new_field][type]' => 'timefield',
- 'fields[_add_new_field][widget_type]' => 'timefield_standard',
- );
- $this->drupalPost(NULL, $edit, t('Save'));
- $edit = array('field[settings][totime]' => (string) ('required'));
- $this->drupalPost(NULL, array(), t('Save field settings'));
- $this->drupalPost(NULL, $edit, t('Save settings'));
- $this->assertText(t('Saved @name configuration.', array('@name' => $single_field_name_friendly)));
- // Now we're back on the field-add page.
- // Now add a multivalued field.
- $multivalue_field_name_friendly = $this->randomName(20);
- $multivalue_field_name_machine = drupal_strtolower($this->randomName(10));
- $edit = array(
- 'fields[_add_new_field][label]' => $multivalue_field_name_friendly,
- 'fields[_add_new_field][field_name]' => $multivalue_field_name_machine,
- 'fields[_add_new_field][type]' => 'timefield',
- 'fields[_add_new_field][widget_type]' => 'timefield_standard',
- );
- $this->drupalPost(NULL, $edit, t('Save'));
- $edit = array('field[settings][totime]' => (string) ('required'));
- $this->drupalPost(NULL, $edit, t('Save field settings'));
- $edit = array(
- 'field[cardinality]' => (string) (-1),
- );
- $this->drupalPost(NULL, $edit, t('Save settings'));
- $this->assertText(t('Saved @name configuration.', array('@name' => $multivalue_field_name_friendly)));
- // Now we're back on the field-add page.
- // Now add a duration field.
- $duration_field_name_friendly = $this->randomName(20);
- $duration_field_name_machine = drupal_strtolower($this->randomName(10));
- $edit = array(
- 'fields[_add_new_field][label]' => $duration_field_name_friendly,
- 'fields[_add_new_field][field_name]' => $duration_field_name_machine,
- 'fields[_add_new_field][type]' => 'timefield',
- 'fields[_add_new_field][widget_type]' => 'timefield_standard',
- );
- $this->drupalPost(NULL, $edit, t('Save'));
- $edit = array('field[settings][totime]' => (string) ('required'));
- $this->drupalPost(NULL, $edit, t('Save field settings'));
- $this->drupalPost(NULL, $edit, t('Save settings'));
- $this->assertText(t('Saved @name configuration.', array('@name' => $duration_field_name_friendly)));
- // Make the display settings for duration field
- $this->drupalGet('admin/structure/types/manage/' . $content_type_machine . '/display');
- $edit = array(
- 'fields[field_' . $duration_field_name_machine . '][type]' => 'timefield_duration',
- );
- $this->drupalPost(NULL, $edit, t('Save'));
- $permission = 'create ' . $content_type_machine . ' content';
- // Reset the permissions cache.
- $this->checkPermissions(array($permission), TRUE);
- // Now that we have a new content type, create a user that has privileges
- // on the content type.
- $account = $this->drupalCreateUser(array($permission));
- $this->drupalLogin($account);
- $this->drupalGet('node/add/' . $content_type_machine);
- // Add a node.
- $edit = array(
- 'title' => $title,
- 'field_' . $single_field_name_machine . '[und][0][value]' => '7:00 am',
- 'field_' . $single_field_name_machine . '[und][0][value2]' => '8:00 am',
- 'field_' . $multivalue_field_name_machine . '[und][0][value]' => '2:00 pm',
- 'field_' . $multivalue_field_name_machine . '[und][0][value2]' => '3:00 pm',
- );
- // We want to add a 2nd item in the multivalue field, so hit "add another".
- $this->drupalPost(NULL, $edit, t('Add another item'));
- $edit = array(
- 'field_' . $multivalue_field_name_machine . '[und][1][value]' => '8:00 pm',
- 'field_' . $multivalue_field_name_machine . '[und][1][value2]' => '9:00 pm',
- 'field_' . $duration_field_name_machine . '[und][0][value]' => '12:00 am',
- 'field_' . $duration_field_name_machine . '[und][0][value2]' => '2:00 pm',
- );
- // Now we can fill in the second item in the multivalue field and save.
- $this->drupalPost(NULL, $edit, t('Save'));
- $this->assertText(t('@content_type_friendly @title has been created', array('@content_type_friendly' => $content_type_friendly, '@title' => $title)));
- $this->assertText(t('@time1', array('@time1' => "7:00am - 8:00am")));
- $this->assertText(t('@time2', array('@time2' => "2:00pm - 3:00pm")));
- $this->assertText(t('@time3', array('@time3' => "8:00pm - 9:00pm")));
- $this->assertText(t('@duration', array('@duration' => "840")));
- }
- }
- /**
- * Timefield Unit tests
- *
- * @see DrupalUnitTestCase
- */
- class TimeFieldUnitTest extends DrupalUnitTestCase {
- public static function getInfo() {
- return array(
- 'name' => 'Timefield unit tests',
- 'description' => 'Test that utility functions work properly.',
- 'group' => 'Fields',
- );
- }
- function setUp() {
- parent::setUp('timefield');
- }
- /**
- * Check that timefield_field_is_empty work correctly
- *
- */
- public function testSimpletestUnitTestExampleFunction() {
- $item = array();
- $result = timefield_field_is_empty($item, array());
- $message = t('Value index not set should return TRUE.');
- $this->assertTrue($result, $message);
- $item['value'] = NULL;
- $result = timefield_field_is_empty($item, array());
- $message = t('A NULL value should return TRUE.');
- $this->assertTrue($result, $message);
- $item['value'] = '';
- $result = timefield_field_is_empty($item, array());
- $message = t('An empty string should return TRUE.');
- $this->assertTrue($result, $message);
- $item['value'] = 50;
- $result = timefield_field_is_empty($item, array());
- $message = t('A positive integer should return FALSE.');
- $this->assertFalse($result, $message);
- $item['value'] = '0';
- $result = timefield_field_is_empty($item, array());
- $message = t('A string with a zero should return FALSE.');
- $this->assertFalse($result, $message);
- $item['value'] = 0;
- $result = timefield_field_is_empty($item, array());
- $message = t('A zero should return FALSE.');
- $this->assertFalse($result, $message);
- }
- }
|