Skip to content
Permalink
Browse files

Add quick-start documentation for testing with QUnit and using jQuery…

…'s helper methods.
  • Loading branch information
timmywil committed May 29, 2012
1 parent 02dd7c5 commit a8d9d05388465b16880be43629af008ff19b7725
Showing with 105 additions and 16 deletions.
  1. +54 −0 README.md
  2. +1 −1 src/sizzle
  3. +6 −5 test/data/testinit.js
  4. +13 −2 test/unit/attributes.js
  5. +12 −0 test/unit/dimensions.js
  6. +1 −1 test/unit/effects.js
  7. +12 −0 test/unit/manipulation.js
  8. +2 −4 test/unit/queue.js
  9. +4 −3 test/unit/selector.js
@@ -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?
----------

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
@@ -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();
}

@@ -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">]
*/
@@ -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 ) {
@@ -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);
}

@@ -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);
@@ -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);

@@ -1628,4 +1628,4 @@ asyncTest( "multiple unqueued and promise", 4, function() {
});
});

} // if ( jQuery.fx )
} // if ( jQuery.fx )
@@ -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";
@@ -1,6 +1,4 @@
module( "queue", {
teardown: moduleTeardown
});
module( "queue", { teardown: moduleTeardown });

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

} // if ( jQuery.fn.stop )
} // if ( jQuery.fn.stop )
@@ -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 );

@@ -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 = [],

0 comments on commit a8d9d05

Please sign in to comment.
You can’t perform that action at this time.