Skip to content

Commit

Permalink
Add quick-start documentation for testing with QUnit and using jQuery…
Browse files Browse the repository at this point in the history
…'s helper methods.
  • Loading branch information
timmywil committed May 29, 2012
1 parent 02dd7c5 commit a8d9d05
Show file tree
Hide file tree
Showing 9 changed files with 105 additions and 16 deletions.
54 changes: 54 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -161,6 +161,60 @@ Following are some commands that can be used there:
* `Ctrl + S` - save
* `Ctrl + Q` - quit

[QUnit](http://docs.jquery.com/QUnit) Reference
-----------------

Test methods:
expect( numAssertions )
stop()
start()
note: QUnit's eventual addition of an argument to stop/start is ignored in this test suite
so that start and stop can be passed as callbacks without worrying about
their parameters

Test assertions:
ok( value, [message] )
equal( actual, expected, [message] )
notEqual( actual, expected, [message] )
deepEqual( actual, expected, [message] )
notDeepEqual( actual, expected, [message] )
strictEqual( actual, expected, [message] )
notStrictEqual( actual, expected, [message] )
raises( block, [expected], [message] )

Test Suite Convenience Methods Reference (See [test/data/testinit.js](https://github.com/jquery/jquery/blob/master/test/data/testinit.js))
------------------------------

q( ... );
Returns an array of elements with the given IDs
@example q("main", "foo", "bar") => [<div id="main">, <span id="foo">, <input id="bar">]

t( testName, selector, [ "#array", "#of", "#ids" ] );
Asserts that a select matches the given IDs
@example t("Check for something", "//[a]", ["foo", "baar"]);

fireNative( node, eventType );
Fires a native DOM event without going through jQuery
@example fireNative( jQuery("#elem")[0], "click" );

url( "some/url.php" );
Add random number to url to stop caching
@example url("data/test.html") => "data/test.html?10538358428943"
@example url("data/test.php?foo=bar") => "data/test.php?foo=bar&10538358345554"

testIframe( fileName, testName, callback );
Loads a given page constructing a url with fileName: "./data/" + fileName + ".html"
and fires the given callback on jQuery ready (using the jQuery loading from that page)
and passes the iFrame's jQuery to the callback.
Callback arguments:
callback( jQueryFromIFrame, iFrameWindow, iFrameDocument )

testIframeWithCallback( testName, fileName, callback )
Loads a given page constructing a url with fileName: "./data/" + fileName + ".html"
The given callback is fired when window.iframeCallback is called by the page
The arguments passed to the callback are the same as the
arguments passed to window.iframeCallback, whatever that may be

Questions?
----------

Expand Down
2 changes: 1 addition & 1 deletion src/sizzle
Submodule sizzle updated 4 files
+392 −452 sizzle.js
+50 −14 test/data/testinit.js
+5,303 −2,817 test/jquery.js
+164 −148 test/unit/selector.js
11 changes: 6 additions & 5 deletions test/data/testinit.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ var jQuery = this.jQuery || "jQuery", // For testing .noConflict()
/**
* Set up a mock AMD define function for testing AMD registration.
*/
function define(name, dependencies, callback) {
function define( name, dependencies, callback ) {
amdDefined = callback();
}

Expand All @@ -19,7 +19,7 @@ define.amd = {
};

/**
* Returns an array of elements with the given IDs, eg.
* Returns an array of elements with the given IDs
* @example q("main", "foo", "bar")
* @result [<div id="main">, <span id="foo">, <input id="bar">]
*/
Expand All @@ -34,10 +34,11 @@ function q() {
}

/**
* Asserts that a select matches the given IDs * @example t("Check for something", "//[a]", ["foo", "baar"]);
* Asserts that a select matches the given IDs
* @param {String} a - Assertion name
* @param {String} b - Sizzle selector
* @param {String} c - Array of ids to construct what is expected
* @example t("Check for something", "//[a]", ["foo", "baar"]);
* @result returns true if "//[a]" return two elements with the IDs 'foo' and 'baar'
*/
function t( a, b, c ) {
Expand Down Expand Up @@ -113,15 +114,15 @@ if ( document.createEvent ) {
}

/**
* Add random number to url to stop IE from caching
* Add random number to url to stop caching
*
* @example url("data/test.html")
* @result "data/test.html?10538358428943"
*
* @example url("data/test.php?foo=bar")
* @result "data/test.php?foo=bar&10538358345554"
*/
function url(value) {
function url( value ) {
return value + (/\?/.test(value) ? "&" : "?") + new Date().getTime() + "" + parseInt(Math.random()*100000);
}

Expand Down
15 changes: 13 additions & 2 deletions test/unit/attributes.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,19 @@
module("attributes", { teardown: moduleTeardown });

var bareObj = function(value) { return value; };
var functionReturningObj = function(value) { return (function() { return value; }); };
var bareObj = function( value ) { return value; };
var functionReturningObj = function( value ) { return (function() { return value; }); };

/*
======== local reference =======
bareObj and functionReturningObj can be used to test passing functions to setters
See testVal below for an example
bareObj( value );
This function returns whatever value is passed in
functionReturningObj( value );
Returns a function that returns the value
*/

test("jQuery.propFix integrity test", function() {
expect(1);
Expand Down
12 changes: 12 additions & 0 deletions test/unit/dimensions.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,18 @@ function fn( val ) {
return function(){ return val; };
}

/*
======== local reference =======
pass and fn can be used to test passing functions to setters
See testWidth below for an example
pass( value );
This function returns whatever value is passed in
fn( value );
Returns a function that returns the value
*/

function testWidth( val ) {
expect(9);

Expand Down
2 changes: 1 addition & 1 deletion test/unit/effects.js
Original file line number Diff line number Diff line change
Expand Up @@ -1628,4 +1628,4 @@ asyncTest( "multiple unqueued and promise", 4, function() {
});
});

} // if ( jQuery.fx )
} // if ( jQuery.fx )
12 changes: 12 additions & 0 deletions test/unit/manipulation.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,18 @@ Array.prototype.arrayProtoFn = function(arg) { throw("arrayProtoFn should not be
var bareObj = function(value) { return value; };
var functionReturningObj = function(value) { return (function() { return value; }); };

/*
======== local reference =======
bareObj and functionReturningObj can be used to test passing functions to setters
See testVal below for an example
bareObj( value );
This function returns whatever value is passed in
functionReturningObj( value );
Returns a function that returns the value
*/

test("text()", function() {
expect(5);
var expected = "This link has class=\"blog\": Simon Willison's Weblog";
Expand Down
6 changes: 2 additions & 4 deletions test/unit/queue.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
module( "queue", {
teardown: moduleTeardown
});
module( "queue", { teardown: moduleTeardown });

test( "queue() with other types", 12, function() {
var counter = 0;
Expand Down Expand Up @@ -288,4 +286,4 @@ if ( jQuery.fn.stop ) {
foo.stop( false, true );
});

} // if ( jQuery.fn.stop )
} // if ( jQuery.fn.stop )
7 changes: 4 additions & 3 deletions test/unit/selector.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
module("selector - jQuery only", { teardown: moduleTeardown });

/**
* This test page is for selector tests that require jQuery in order to do the selection
*/

module("selector - jQuery only", { teardown: moduleTeardown });

test("element - jQuery only", function() {
expect( 7 );

Expand Down Expand Up @@ -65,7 +65,8 @@ testIframe("selector/html5_selector", "attributes - jQuery.attr", function( jQue
expect(35);

/**
* Returns an array of elements with the given IDs, eg.
* Returns an array of elements with the given IDs
* q & t are added here for the iFrame's context
*/
function q() {
var r = [],
Expand Down

0 comments on commit a8d9d05

Please sign in to comment.