test-fixture
Test Fixture
Introduction
The test-fixture is a description of a group of software tests. It is designed as a microformat, but as it has not been through the community review process, it is called a POSH pattern. The idea is to build a series of pages containing test-fixtures into a full test-suite. This format was orginal developed for the UfXtract test-suite but is now public domain.
This specification should be considered a draft. Contents are subject to change. It is provided here for reference and as a basis for discussion and ongoing development.
Structure
- class="test-fixture"
- class="summary"
- class="description"
- class="format"
- class="author" (hcard)
- class="output"
- class="type" [JSON,XML]
- class="value"
- class="assert"
- class="test"
- class="result"
- class="comment"
- class="history" (vevent)
Key
- Single occurrence required
- Single occurrence optional
- Zero or More occurrences
Properties
Field details
The fields of the test-fixture schema represent the following:
test-fixture
:: The root class namesummary
:: The title of the test-fixturedescription
:: An expanded piece of text about the test-fixtureformat
:: The format to be tested ie hCardauthor
:: The authors of the test as an hCardoutput
:: The example output which would be expected form the test.type
:: The output formatvalue
:: A URL to link to the exampleassert
:: The assert is a description of a testtest
:: The element to testresult
:: The expected result for the test.comment
:: An expanded piece of text about the test.history
:: The history of changes to test-fixture, as hCalendar events
<h1 class="summary">hCard 1 - single occurrence test</h1> <p class="description"> This page was designed to test the values of a hcard which are meant to have only a single occurrence parsed correctly. </p> <p>From: <a href="default.htm"><span class="format">hCard</span> testsuite 1.0</a></p> <p class="author vcard"> Author: <a class="url fn" href="http://www.glennjones.net/">Glenn Jones</a> <a class="org url" href="http://www.madgex.com/">Madgex</a> </p> <p>Output examples: <ul> <li class="output"><a class="url" href="hcard1.js"><span class="type">JSON</span></a></li> <li class="output"><a class="url" href="hcard1.xml"><span class="type">XML</span></a></li> </ul> </p> <p>Tests:</p> <table id="assetTable" cellpadding="0" cellspacing="0"> <thead> <tr> <th>Test</th> <th>Result</th> <th>Comment</th> </tr> </thead> <tbody> <tr class="assert"> <td class="test">vcard[0].fn</td> <td class="result">IsEqualTo("John Doe")</td> <td class="comment">The fn (formatted name) is a singular value</td> </tr> <tr class="assert"> <td class="test">vcard[0].n.given-name[0]</td> <td class="result">IsEqualTo("John")</td> <td class="comment">The n (name) is a singular value</td> </tr> <tr class="assert"> <td class="test">vcard[0].bday</td> <td class="result">IsEqualTo("2000-01-01T00:00:00-0800")</td> <td class="comment">The bday (birthday) is a singular value</td> </tr> <tr class="assert"> <td class="test">vcard[0].class</td> <td class="result">IsEqualTo("Public")</td> <td class="comment">The class is a singular value</td> </tr> <tr class="assert"> <td class="test">vcard[0].geo.latitude</td> <td class="result">IsEqualTo("30.267991")</td> <td class="comment">The geo is a singular value</td> </tr> <tr class="assert"> <td class="test">vcard[0].rev</td> <td class="result">IsEqualTo("2008-01-01T13:45")</td> <td class="comment">The rev is a singular value</td> </tr> <tr class="assert"> <td class="test">vcard[0].role</td> <td class="result">IsEqualTo("Designer")</td> <td class="comment">The role is a singular value</td> </tr> <tr class="assert"> <td class="test">vcard[0].sort-string</td> <td class="result">IsEqualTo("John")</td> <td class="comment">The sort-string is a singular value</td> </tr> <tr class="assert"> <td class="test">vcard[0].tz</td> <td class="result">IsEqualTo("-05:00")</td> <td class="comment">The tz is a singular value</td> </tr> <tr class="assert"> <td class="test">vcard[0].uid</td> <td class="result">IsEqualTo("com.johndoe/profiles/johndoe")</td> <td class="comment">The uid is a singular value</td> </tr> </tbody> </table> <p>History:</p> <ul> <li class="history vevent"> <span class="summary">Created</span>: <abbr class="dtstart" title="2008-04-08">8 April 2008</abbr> <span class="description">by Glenn Jones</span> </li> </ul> </div>
Embeding microformats to test within the same page
When testing microformats you can embed them into the same page as the test-fixture. As the test-fixture itself contains microformats such as hCards so we need to define what section of the page to we should be testing. For the sake of consistency within the microformats test-suite all microformats That are been tested should be contain in a HTML element with the id “uf”.
Some parsers such as UfXtarct and Sumo already have this ability to parse only a fragement of HTML from a pgae, for other you can use a simple proxy service. It allows you to define a URL of a page and the ID of any element and it returns a HTML page containing just that element.
Current test methods
- IsEqualTo()
- isEqualToCaseInsensitive()
- IsEqualToISODate()
- IsEqualToPhoneNumbers()
- isEqualToGeo()
- IsTrue()
- IsFalse()
- HasProperty()