protected function DrupalWebTestCase::assertNoDuplicateIds
7.x drupal_web_test_case.php | protected DrupalWebTestCase::assertNoDuplicateIds($message = '', $group = 'Other', $ids_to_skip = array()) |
Asserts that each HTML ID is used for just a single element.
Parameters
$message: Message to display.
$group: The group this message belongs to.
$ids_to_skip: An optional array of ids to skip when checking for duplicates. It is always a bug to have duplicate HTML IDs, so this parameter is to enable incremental fixing of core code. Whenever a test passes this parameter, it should add a "todo" comment above the call to this function explaining the legacy bug that the test wishes to ignore and including a link to an issue that is working to fix that legacy bug.
Return value
TRUE on pass, FALSE on fail.
2 calls to DrupalWebTestCase::assertNoDuplicateIds()
- AJAXMultiFormTestCase::testMultiForm in drupal-7.x/
modules/ simpletest/ tests/ ajax.test - Test that a page with the 'page_node_form' included twice works correctly.
- HTMLIdTestCase::testHTMLId in drupal-7.x/
modules/ simpletest/ tests/ form.test - Tests that HTML IDs do not get duplicated when form validation fails.
File
- drupal-7.x/
modules/ simpletest/ drupal_web_test_case.php, line 3513
Class
- DrupalWebTestCase
- Test case for typical Drupal tests.
Code
protected function assertNoDuplicateIds($message = '', $group = 'Other', $ids_to_skip = array()) {
$status = TRUE;
foreach ($this->xpath('//*[@id]') as $element) {
$id = (string) $element['id'];
if (isset($seen_ids[$id]) && !in_array($id, $ids_to_skip)) {
$this->fail(t('The HTML ID %id is unique.', array('%id' => $id)), $group);
$status = FALSE;
}
$seen_ids[$id] = TRUE;
}
return $this->assert($status, $message, $group);
}