Difference between revisions of "Basic Functions of a Wiki"

(assertElementContainsText)
(Adding Category:DevelopmentTeam, Category:Testing, and bread crumbs etc)
 

(18 intermediate revisions by one other user not shown)



Line 1: Line 1:
 +
<noinclude><big>[[AboutUs]] < [[DevelopmentTeam]] < [[Testing]] < [[:Category:AboutUs:Acceptance Tests|Acceptance Tests]] < [[Basic Functions of a Wiki]]</big></noinclude>
 +
__NOTOC__
 +
 +
{{TOCright}}
 
each test independent of the others?  can we test preview or save if edit isn't working?
 
each test independent of the others?  can we test preview or save if edit isn't working?
 
* edit
 
* edit
Line 15: Line 19:
  
 
==Next Actions==
 
==Next Actions==
* need to carefully think through edit tests to make sure they cannot pass when they shouldn't - all 8 tests now pass!
+
* for "save", look at differences between editing whole page and editing just a section - the section edit tests are currently failing
* CFLN issue very interesting - I'm writing this        <code>$sectionOne="==first section==" .chr(13).chr(10). "test text in page $testPage $timestamp";</code> and then getting this from the test runner:
 
 
 
<pre>Failed asserting that
 
<string:==first section== test text in page AboutUsTest.com 1173799512>
 
contains "==first section==
 
test text in page AboutUsTest.com 1173799512".</pre>
 
  
 
==Done==
 
==Done==
Line 27: Line 25:
 
* testEditLinkWholePageIP() & testEditLinkWholePageLogin() both call editLinkWholePage() which does the actual work - the only difference is the login one logs in
 
* testEditLinkWholePageIP() & testEditLinkWholePageLogin() both call editLinkWholePage() which does the actual work - the only difference is the login one logs in
 
* testEditLinkSectionIP() & testEditLinkSectionLogin() both call editLinkSection() - same as above
 
* testEditLinkSectionIP() & testEditLinkSectionLogin() both call editLinkSection() - same as above
* basic structure of the file is complete now with 8 tests in two categories, logged in & IP; calling 4 functions in two categories, whole page or section; calling 2 functions in two categories, edit link or type edit URL; call DoTest(), so it's something like this
+
* 4 tests in each of two categories, logged in & IP; calling 4 functions in two categories, whole page or section; calling 2 functions in two categories, edit link or type edit URL;  
** doTest
+
* save works - not quite done yet
*** editLink
+
* "preview" done
**** editLinkWholePage
 
***** IP
 
***** logged in
 
**** editLinkSection
 
***** IP
 
***** logged in
 
*** editURL
 
**** editURLWholePage
 
***** IP
 
***** logged in
 
**** editURLSection
 
***** IP
 
***** logged in
 
 
 
== Notes ==
 
* carriage return line feed issue
 
** linux uses LF only, mac uses CR only, win uses CRLF [http://www.websiterepairguy.com/articles/os/crlf.html]
 
** What do I do about this?
 
** What happens if we use CRLF ( chr(13).chr(10) )?
 
* whole page text, not just one section
 
* look for more duplication in code
 
 
 
=== getText ===
 
<code>
 
public function getText($locator)
 
{
 
return $this->selenium->getText($locator);
 
}
 
 
 
public function getText($locator)
 
{
 
return $this->getString("getText", array($locator));
 
}
 
 
 
private function getString($verb, $args = array())
 
{
 
try {
 
$result = $this->doCommand($verb, $args);
 
} catch (Testing_Selenium_Exception $e) {
 
return $e;
 
}
 
return substr($result, 3);
 
}
 
 
 
private function doCommand($verb, $args = array())
 
{
 
$url = sprintf('http://%s:%s/selenium-server/driver/?cmd=%s', $this->host, $this->port, urlencode($verb));
 
for ($i = 0; $i < count($args); $i++) {
 
$argNum = strval($i + 1);
 
$url .= sprintf('&%s=%s', $argNum, urlencode(trim($args[$i])));
 
}
 
if (isset($this->sessionId)) {
 
$url .= sprintf('&%s=%s', 'sessionId', $this->sessionId);
 
}
 
if ($this->driver == 'curl') {
 
$response = $this->useCurl($verb, $args, $url);
 
} else {
 
$response = $this->useNative($verb, $args, $url);
 
}
 
if (!preg_match('/^OK/', $response)) {
 
throw new Testing_Selenium_Exception('The Response of the Selenium RC is invalid: ' . $response);
 
}
 
return $response;
 
}
 
</code>
 
 
 
=== assertElementContainsText ===
 
<code>
 
    public function assertElementContainsText($locator, $text)
 
    {
 
        $this->assertContains($text, $this->getText($locator));
 
    }
 
</code>
 
 
 
=== /r/n, /r, & /n ===
 
Very strange. 
 
* Mediawiki doesn't care if I put /r or /n or /r/n into the wiki text, which is good, of course.
 
* If I put in /r/n or /r or /n and then change /r/n to /n and then /r to " " and /n to " " in my expected text, my tests pass as long as I don't have /r/r
 
* if I do have /r/r then that gets replaced in my expected test with two spaces, while in the getText output, there's only one space - I really need to look at docommand() to see why/how these end of line characters are being replaced/stripped
 
  
  
 +
[[Category:AboutUs:Acceptance Tests]]
 
[[Category:Acceptance Tests]]
 
[[Category:Acceptance Tests]]
 +
[[Category:DevelopmentTeam]]
 +
[[Category:Testing]]
 +
[[Category:AboutUs]]

Latest revision as of 03:34, 30 October 2007

AboutUs


each test independent of the others? can we test preview or save if edit isn't working?

  • edit
    • logged in & not logged in, click the "edit" link at the top & "type" the "action=edit" url & click section edit & type section edit url
      • verify the textarea exists
      • verify the textarea contents are correct
      • verify that typing works
  • save
    • in edit mode, click the "Save page" button
    • verify that the page saves
      • we're now NOT in edit mode
      • the contents of the page are what we expect
  • preview
    • in edit mode, click the "Show preview" button
    • the page shows both the contents of the page in html AND the textarea we're editing

Next Actions

  • for "save", look at differences between editing whole page and editing just a section - the section edit tests are currently failing

Done

  • created files basic_wiki_functions_acceptance_test.sh & BasicWikiFunctionsTest.php
  • testEditLinkWholePageIP() & testEditLinkWholePageLogin() both call editLinkWholePage() which does the actual work - the only difference is the login one logs in
  • testEditLinkSectionIP() & testEditLinkSectionLogin() both call editLinkSection() - same as above
  • 4 tests in each of two categories, logged in & IP; calling 4 functions in two categories, whole page or section; calling 2 functions in two categories, edit link or type edit URL;
  • save works - not quite done yet
  • "preview" done


Retrieved from "http://aboutus.com/index.php?title=Basic_Functions_of_a_Wiki&oldid=12080889"