From 20e1bb12ba105af046fb103ce2c534b901a05a1f Mon Sep 17 00:00:00 2001
From: Angie Byron <webchick@24967.no-reply.drupal.org>
Date: Mon, 3 Aug 2009 22:18:59 +0000
Subject: [PATCH] #339406 by dropcube and boombatower: Add an assertion to
 check if a checkbox is checked.

---
 modules/locale/locale.test                  | 13 +++------
 modules/simpletest/drupal_web_test_case.php | 30 +++++++++++++++++++++
 2 files changed, 34 insertions(+), 9 deletions(-)

diff --git a/modules/locale/locale.test b/modules/locale/locale.test
index 3138348a5dba..c7a6e4489b57 100644
--- a/modules/locale/locale.test
+++ b/modules/locale/locale.test
@@ -79,16 +79,13 @@ class LocaleConfigurationTest extends DrupalWebTestCase {
     // Check if we can change the default language.
     $path = 'admin/international/language';
     $this->drupalGet($path);
-    // Set up the raw HTML strings we need to search for.
-    $elements = $this->xpath('//input[@id="edit-site-default-en"]');
-    $this->assertTrue(isset($elements[0]) && !empty($elements[0]['checked']), t('English is the default language.'));
+    $this->assertFieldChecked('edit-site-default-en', t('English is the default language.'));
     // Change the default language.
     $edit = array(
       'site_default' => $langcode,
     );
     $this->drupalPost($path, $edit, t('Save configuration'));
-    $elements = $this->xpath('//input[@id="edit-site-default-en"]');
-    $this->assertTrue(isset($elements[0]) && empty($elements[0]['checked']), t('Default language updated.'));
+    $this->assertNoFieldChecked('edit-site-default-en', t('Default language updated.'));
     $this->assertEqual($this->getUrl(), url('admin/international/language', array('absolute' => TRUE)), t('Correct page redirection.'));
 
     // Ensure we can't delete the default language.
@@ -102,16 +99,14 @@ class LocaleConfigurationTest extends DrupalWebTestCase {
       'enabled[en]' => FALSE,
     );
     $this->drupalPost($path, $edit, t('Save configuration'));
-    $elements = $this->xpath('//input[@id="edit-enabled-en"]');
-    $this->assertTrue(isset($elements[0]) && empty($elements[0]['checked']), t('Language disabled.'));
+    $this->assertNoFieldChecked('edit-enabled-en', t('Language disabled.'));
 
     // Set disabled language to be the default and ensure it is re-enabled.
     $edit = array(
       'site_default' => 'en',
     );
     $this->drupalPost($path, $edit, t('Save configuration'));
-    $elements = $this->xpath('//input[@id="edit-enabled-en"]');
-    $this->assertTrue(isset($elements[0]) && !empty($elements[0]['checked']), t('Default language re-enabled.'));
+    $this->assertFieldChecked('edit-enabled-en', t('Default language re-enabled.'));
 
     // Ensure 'edit' link works.
     $this->clickLink(t('edit'));
diff --git a/modules/simpletest/drupal_web_test_case.php b/modules/simpletest/drupal_web_test_case.php
index 6df78fbf255e..4af15d36a955 100644
--- a/modules/simpletest/drupal_web_test_case.php
+++ b/modules/simpletest/drupal_web_test_case.php
@@ -2360,6 +2360,36 @@ protected function assertNoFieldById($id, $value = '', $message = '') {
     return $this->assertNoFieldByXPath($this->constructFieldXpath('id', $id), $value, $message ? $message : t('Did not find field by id @id', array('@id' => $id)), t('Browser'));
   }
 
+  /**
+   * Assert that a checkbox field in the current page is checked.
+   *
+   * @param $id
+   *   Id of field to assert.
+   * @param $message
+   *   Message to display.
+   * @return
+   *   TRUE on pass, FALSE on fail.
+   */
+  protected function assertFieldChecked($id, $message = '') {
+    $elements = $this->xpath('//input[@id="' . $id . '"]');
+    return $this->assertTrue(isset($elements[0]) && !empty($elements[0]['checked']), $message ? $message : t('Checkbox field @id is checked.', array('@id' => $id)), t('Browser'));
+  }
+
+  /**
+   * Assert that a checkbox field in the current page is not checked.
+   *
+   * @param $id
+   *   Id of field to assert.
+   * @param $message
+   *   Message to display.
+   * @return
+   *   TRUE on pass, FALSE on fail.
+   */
+  protected function assertNoFieldChecked($id, $message = '') {
+    $elements = $this->xpath('//input[@id="' . $id . '"]');
+    return $this->assertTrue(isset($elements[0]) && empty($elements[0]['checked']), $message ? $message : t('Checkbox field @id is not checked.', array('@id' => $id)), t('Browser'));
+  }
+
   /**
    * Assert that a field exists with the given name or id.
    *
-- 
GitLab