function DateTimeFunctionalTest::testDateFormatConfiguration in Drupal 7
Test date format configuration.
File
- modules/
system/ system.test, line 1343 - Tests for system.module.
Class
- DateTimeFunctionalTest
- Tests generic date and time handling capabilities of Drupal.
Code
function testDateFormatConfiguration() {
// Confirm 'no custom date formats available' message appears.
$this
->drupalGet('admin/config/regional/date-time/formats');
$this
->assertText(t('No custom date formats available.'), 'No custom date formats message appears.');
// Add custom date format.
$this
->clickLink(t('Add format'));
$edit = array(
'date_format' => 'Y',
);
$this
->drupalPost('admin/config/regional/date-time/formats/add', $edit, t('Add format'));
$this
->assertEqual($this
->getUrl(), url('admin/config/regional/date-time/formats', array(
'absolute' => TRUE,
)), 'Correct page redirection.');
$this
->assertNoText(t('No custom date formats available.'), 'No custom date formats message does not appear.');
$this
->assertText(t('Custom date format added.'), 'Custom date format added.');
// Ensure custom date format appears in date type configuration options.
$this
->drupalGet('admin/config/regional/date-time');
$this
->assertRaw('<option value="Y">', 'Custom date format appears in options.');
// Edit custom date format.
$this
->drupalGet('admin/config/regional/date-time/formats');
$this
->clickLink(t('edit'));
$edit = array(
'date_format' => 'Y m',
);
$this
->drupalPost($this
->getUrl(), $edit, t('Save format'));
$this
->assertEqual($this
->getUrl(), url('admin/config/regional/date-time/formats', array(
'absolute' => TRUE,
)), 'Correct page redirection.');
$this
->assertText(t('Custom date format updated.'), 'Custom date format successfully updated.');
// Check that ajax callback is protected by CSRF token.
$this
->drupalGet('admin/config/regional/date-time/formats/lookup', array(
'query' => array(
'format' => 'Y m d',
),
));
$this
->assertResponse(403, 'Access denied with no token');
$this
->drupalGet('admin/config/regional/date-time/formats/lookup', array(
'query' => array(
'token' => 'invalid',
'format' => 'Y m d',
),
));
$this
->assertResponse(403, 'Access denied with invalid token');
$this
->drupalGet('admin/config/regional/date-time/formats');
$this
->clickLink(t('edit'));
$settings = $this
->drupalGetSettings();
$lookup_url = $settings['dateTime']['date-format']['lookup'];
preg_match('/token=([^&]+)/', $lookup_url, $matches);
$this
->assertFalse(empty($matches[1]), 'Found token value');
$this
->drupalGet('admin/config/regional/date-time/formats/lookup', array(
'query' => array(
'token' => $matches[1],
'format' => 'Y m d',
),
));
$this
->assertResponse(200, 'Access allowed with valid token');
$this
->assertText(format_date(time(), 'custom', 'Y m d'));
// Delete custom date format.
$this
->drupalGet('admin/config/regional/date-time/formats');
$this
->clickLink(t('delete'));
$this
->drupalPost($this
->getUrl(), array(), t('Remove'));
$this
->assertEqual($this
->getUrl(), url('admin/config/regional/date-time/formats', array(
'absolute' => TRUE,
)), 'Correct page redirection.');
$this
->assertText(t('Removed date format'), 'Custom date format removed successfully.');
}