mirror of
https://github.com/jquery/jquery.git
synced 2026-04-20 03:01:22 -04:00
Core: Test all factory use cases from intro.js
There is a lot of logic in intro.js; now we test four cases: 1. (implicitly, via QUnit tests) A real browser with window being the global 2. Browserify where there are both global & window variables. 3. Node with jsdom where window is passed manually to the jQuery factory. 4. Pure Node with incorrect window passed; jQuery should throw then. Previously the second & fourth case was not tested and the third was tested in a way that interfered with the main test environment. We now also test if in the Browserify case we're not creating a jQuery global by default. Fixes gh-2181 Closes gh-2234
This commit is contained in:
19
test/node_smoke_tests/document_missing.js
Normal file
19
test/node_smoke_tests/document_missing.js
Normal file
@@ -0,0 +1,19 @@
|
||||
/* jshint node: true */
|
||||
|
||||
"use strict";
|
||||
|
||||
var ensureGlobalNotCreated = require( "./lib/ensure_global_not_created" ),
|
||||
jQueryFactory = require( "../../dist/jquery.js" );
|
||||
|
||||
try {
|
||||
jQueryFactory( {} );
|
||||
console.error( "The jQuery factory should reject window without a document" );
|
||||
process.exit( 1 );
|
||||
} catch ( e ) {
|
||||
if ( e.message === "jQuery requires a window with a document" ) {
|
||||
ensureGlobalNotCreated( module.exports );
|
||||
process.exit( 0 );
|
||||
}
|
||||
console.error( "An unexpected error thrown; message: ", e.message );
|
||||
process.exit( 1 );
|
||||
}
|
||||
17
test/node_smoke_tests/document_passed.js
Normal file
17
test/node_smoke_tests/document_passed.js
Normal file
@@ -0,0 +1,17 @@
|
||||
/* jshint node: true */
|
||||
|
||||
"use strict";
|
||||
|
||||
require( "jsdom" ).env( "", function( errors, window ) {
|
||||
if ( errors ) {
|
||||
console.error( errors );
|
||||
process.exit( 1 );
|
||||
}
|
||||
|
||||
var ensureJQuery = require( "./lib/ensure_jquery" ),
|
||||
ensureGlobalNotCreated = require( "./lib/ensure_global_not_created" ),
|
||||
jQuery = require( "../../dist/jquery.js" )( window );
|
||||
|
||||
ensureJQuery( jQuery );
|
||||
ensureGlobalNotCreated( module.exports );
|
||||
} );
|
||||
20
test/node_smoke_tests/document_present_originally.js
Normal file
20
test/node_smoke_tests/document_present_originally.js
Normal file
@@ -0,0 +1,20 @@
|
||||
/* jshint node: true */
|
||||
|
||||
"use strict";
|
||||
|
||||
require( "jsdom" ).env( "", function( errors, window ) {
|
||||
if ( errors ) {
|
||||
console.error( errors );
|
||||
process.exit( 1 );
|
||||
}
|
||||
|
||||
// Pretend the window is a global.
|
||||
global.window = window;
|
||||
|
||||
var ensureJQuery = require( "./lib/ensure_jquery" ),
|
||||
ensureGlobalNotCreated = require( "./lib/ensure_global_not_created" ),
|
||||
jQuery = require( "../../dist/jquery.js" );
|
||||
|
||||
ensureJQuery( jQuery );
|
||||
ensureGlobalNotCreated( module.exports, window );
|
||||
} );
|
||||
17
test/node_smoke_tests/lib/ensure_global_not_created.js
Normal file
17
test/node_smoke_tests/lib/ensure_global_not_created.js
Normal file
@@ -0,0 +1,17 @@
|
||||
/* jshint node: true */
|
||||
|
||||
"use strict";
|
||||
|
||||
// Ensure the jQuery property on global/window/module.exports/etc. was not
|
||||
// created in a CommonJS environment.
|
||||
// `global` is always checked in addition to passed parameters.
|
||||
module.exports = function ensureGlobalNotCreated() {
|
||||
var args = [].slice.call( arguments ).concat( global );
|
||||
|
||||
args.forEach( function( object ) {
|
||||
if ( object.jQuery ) {
|
||||
console.error( "A jQuery global was created in a CommonJS environment." );
|
||||
process.exit( 1 );
|
||||
}
|
||||
} );
|
||||
};
|
||||
11
test/node_smoke_tests/lib/ensure_jquery.js
Normal file
11
test/node_smoke_tests/lib/ensure_jquery.js
Normal file
@@ -0,0 +1,11 @@
|
||||
/* jshint node: true */
|
||||
|
||||
"use strict";
|
||||
|
||||
// Check if the object we got is the jQuery object by invoking a basic API.
|
||||
module.exports = function ensureJQuery( jQuery ) {
|
||||
if ( !/^jQuery/.test( jQuery.expando ) ) {
|
||||
console.error( "jQuery.expando was not detected, the jQuery bootstrap process has failed" );
|
||||
process.exit( 1 );
|
||||
}
|
||||
};
|
||||
Reference in New Issue
Block a user