| <!DOCTYPE html> | |
| <html> | |
| <head> | |
| <title>Unit tests for bot.dom.isEnabled</title> | |
| <script src="test_bootstrap.js"></script> | |
| <script type="text/javascript"> | |
| goog.require('bot.dom'); | |
| goog.require('bot.userAgent'); | |
| goog.require('goog.dom'); | |
| goog.require('goog.testing.jsunit'); | |
| goog.require('goog.userAgent'); | |
| goog.require('goog.userAgent.product'); | |
| </script> | |
| <script type="text/javascript"> | |
| function testElementsThatDoNotSupportTheDisabledAttributeAreAlwaysEnabled() { | |
| assertTrue('Body should be enabled', bot.dom.isEnabled(document.body)); | |
| assertTrue('Form should be enabled', bot.dom.isEnabled(document.forms[0])); | |
| } | |
| function assertDisabled(id) { | |
| var element = goog.dom.$(id); | |
| assertNotNullNorUndefined('no such element: ' + id, element); | |
| assertFalse(id + ' should be disabled', bot.dom.isEnabled(element)); | |
| } | |
| function assertEnabled(id) { | |
| var element = goog.dom.$(id); | |
| assertNotNullNorUndefined('no such element: ' + id, element); | |
| assertTrue(id + ' should be enabled', bot.dom.isEnabled(element)); | |
| } | |
| function testShouldBeEnabledIfDoesNotHaveDisabledAttribute() { | |
| assertEnabled('enabled-button-a'); | |
| } | |
| function testShouldBeDisabledIfItHasTheDisabledAttribute() { | |
| assertDisabled('disabled-button-b'); | |
| assertDisabled('disabled-button-c'); | |
| assertDisabled('disabled-button-d'); | |
| assertDisabled('disabled-button-e'); | |
| } | |
| function testDisabledShouldBeAnInheritedAttribute() { | |
| assertEnabled('enabled-select'); | |
| assertEnabled('enabled-option'); | |
| assertDisabled('disabled-optgroup'); | |
| assertDisabled('inherits-disabled'); | |
| assertDisabled('disabled-select'); | |
| assertDisabled('inherits-disabled-2'); | |
| } | |
| function testDisabledShouldInheritFromFieldsetUnlessInLegend() { | |
| assertEnabled('enabled-legend-button'); | |
| // Some older browsers do not support the semantics of disabling fieldsets. | |
| if ((goog.userAgent.GECKO && !bot.userAgent.isEngineVersion(2)) || | |
| (goog.userAgent.WEBKIT && !bot.userAgent.isEngineVersion(535)) || | |
| (goog.userAgent.product.ANDROID && !bot.userAgent.isProductVersion(5))) { | |
| assertEnabled('disabled-legend-button'); | |
| assertEnabled('disabled-fieldset-button'); | |
| } else { | |
| assertDisabled('disabled-legend-button'); | |
| assertDisabled('disabled-fieldset-button'); | |
| } | |
| } | |
| function testEnabledShouldRespondToDisabledProperty() { | |
| var element = goog.dom.$('enabled-button-a'); | |
| element.disabled = true; | |
| assertDisabled('enabled-button-a'); | |
| element.disabled = false; | |
| assertEnabled('enabled-button-a'); | |
| } | |
| </script> | |
| </head> | |
| <body> | |
| <form> | |
| <button id="enabled-button-a" value="Enabled A"></button> | |
| <button id="disabled-button-b" value="Enabled B" disabled></button> | |
| <button id="disabled-button-c" value="Enabled C" disabled="disabled"> | |
| </button> | |
| <button id="disabled-button-d" value="Enabled D" disabled="true"> | |
| </button> | |
| <button id="disabled-button-e" value="Enabled E" disabled="false"> | |
| </button> | |
| <select id="enabled-select"> | |
| <option id="enabled-option">foo</option> | |
| <optgroup id="disabled-optgroup" disabled> | |
| <option id="inherits-disabled">bar</option> | |
| </optgroup> | |
| </select> | |
| <select id="disabled-select" disabled> | |
| <optgroup> | |
| <option id="inherits-disabled-2">baz</option> | |
| </optgroup> | |
| </select> | |
| <fieldset id="disabled-fieldset" disabled="disabled"> | |
| <legend> | |
| <button id="enabled-legend-button">Enabled Legend Button</button> | |
| </legend> | |
| <legend> | |
| <button id="disabled-legend-button">Disabled Legend Button</button> | |
| </legend> | |
| <button id="disabled-fieldset-button">Disabled Fieldset Button</button> | |
| </fieldset> | |
| </form> | |
| </body> | |
| </html> |