From e7e7c7403b1ffffdf1a7a4bb9e1de752fe1c72db Mon Sep 17 00:00:00 2001 From: wei <> Date: Wed, 5 Jul 2006 07:45:41 +0000 Subject: clean up tests --- .../docs/en/form_testing_documentation.html | 277 --------------------- 1 file changed, 277 deletions(-) delete mode 100644 tests/UnitTests/simpletest/docs/en/form_testing_documentation.html (limited to 'tests/UnitTests/simpletest/docs/en/form_testing_documentation.html') diff --git a/tests/UnitTests/simpletest/docs/en/form_testing_documentation.html b/tests/UnitTests/simpletest/docs/en/form_testing_documentation.html deleted file mode 100644 index 597db3b0..00000000 --- a/tests/UnitTests/simpletest/docs/en/form_testing_documentation.html +++ /dev/null @@ -1,277 +0,0 @@ - - - -Simple Test documentation for testing HTML forms - - - - -

Form testing documentation

-
-

- -

Submitting a simple form

- -

-

- When a page is fetched by the WebTestCase - using get() or - post() the page content is - automatically parsed. - This results in any form controls that are inside <form> tags - being available from within the test case. - For example, if we have this snippet of HTML... -

-<form>
-    <input type="text" name="a" value="A default" />
-    <input type="submit" value="Go" />
-</form>
-
- Which looks like this... -

-

-

- - -
-

-

- We can navigate to this code, via the - LastCraft - site, with the following test... -

-class SimpleFormTests extends WebTestCase {
-    
-    function testDefaultValue() {
-        $this->get('http://www.lastcraft.com/form_testing_documentation.php');
-        $this->assertField('a', 'A default');
-    }
-}
-
- Immediately after loading the page all of the HTML controls are set at - their default values just as they would appear in the web browser. - The assertion tests that a HTML widget exists in the page with the - name "a" and that it is currently set to the value - "A default" -

-

- We could submit the form straight away, but first we'll change - the value of the text field and only then submit it... -

-class SimpleFormTests extends WebTestCase {
-
-    function testDefaultValue() {
-        $this->get('http://www.my-site.com/');
-        $this->assertField('a', 'A default');
-        $this->setField('a', 'New value');
-        $this->clickSubmit('Go');
-    }
-}
-
- Because we didn't specify a method attribute on the form tag, and - didn't specify an action either, the test case will follow - the usual browser behaviour of submitting the form data as a GET - request back to the same location. - SimpleTest tries to emulate typical browser behaviour as much as possible, - rather than attempting to catch missing attributes on tags. - This is because the target of the testing framework is the PHP application - logic, not syntax or other errors in the HTML code. - For HTML errors, other tools such as - HTMLTidy should be used. -

-

- If a field is not present in any form, or if an option is unavailable, - then WebTestCase::setField() will return - false. - For example, suppose we wish to verify that a "Superuser" - option is not present in this form... -

-<strong>Select type of user to add:</strong>
-<select name="type">
-    <option>Subscriber</option>
-    <option>Author</option>
-    <option>Administrator</option>
-</select>
-
- Which looks like... -

-

-

- Select type of user to add: - -
-

-

- The following test will confirm it... -

-class SimpleFormTests extends WebTestCase {
-    ...
-    function testNoSuperuserChoiceAvailable() {
-        $this->get('http://www.lastcraft.com/form_testing_documentation.php');
-        $this->assertFalse($this->setField('type', 'Superuser'));
-    }
-}
-
- The selection will not be changed on a failure to set - a widget value. -

-

- Here is the full list of widgets currently supported... -

-

-

- Although most standard HTML widgets are catered for by SimpleTest's - built in parser, it is unlikely that JavaScript will be implemented - anytime soon. -

- -

- -

Fields with multiple values

- -

-

- SimpleTest can cope with two types of multivalue controls: Multiple - selection drop downs, and multiple checkboxes with the same name - within a form. - The multivalue nature of these means that setting and testing - are slightly different. - Using checkboxes as an example... -

-<form class="demo">
-    <strong>Create privileges allowed:</strong>
-    <input type="checkbox" name="crud" value="c" checked><br>
-    <strong>Retrieve privileges allowed:</strong>
-    <input type="checkbox" name="crud" value="r" checked><br>
-    <strong>Update privileges allowed:</strong>
-    <input type="checkbox" name="crud" value="u" checked><br>
-    <strong>Destroy privileges allowed:</strong>
-    <input type="checkbox" name="crud" value="d" checked><br>
-    <input type="submit" value="Enable Privileges">
-</form>
-
- Which renders as... -

-

-

- Create privileges allowed: - -
- Retrieve privileges allowed: - -
- Update privileges allowed: - -
- Destroy privileges allowed: - -
- -
-

-

- If we wish to disable all but the retrieval privileges and - submit this information we can do it like this... -

-class SimpleFormTests extends WebTestCase {
-    ...
-    function testDisableNastyPrivileges() {
-        $this->get('http://www.lastcraft.com/form_testing_documentation.php');
-        $this->assertField('crud', array('c', 'r', 'u', 'd'));
-        $this->setField('crud', array('r'));
-        $this->clickSubmit('Enable Privileges');
-    }
-}
-
- Instead of setting the field to a single value, we give it a list - of values. - We do the same when testing expected values. - We can then write other test code to confirm the effect of this, perhaps - by logging in as that user and attempting an update. -

-

- -

Raw posting

- -

-

- If you want to test a form handler, but have not yet written - or do not have access to the form itself, you can create a - form submission by hand. -

-class SimpleFormTests extends WebTestCase {
-    ...    
-    function testAttemptedHack() {
-        $this->post(
-                'http://www.my-site.com/add_user.php',
-                array('type' => 'superuser'));
-        $this->assertNoUnwantedPattern('/user created/i');
-    }
-}
-
- By adding data to the WebTestCase::post() - method, we are attempting to fetch the page as a form submission. -

- -
- - - -- cgit v1.2.3