aboutsummaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorMichał Gołębiowski <m.goleb@gmail.com>2015-04-26 19:33:05 +0200
committerMichał Gołębiowski <m.goleb@gmail.com>2015-04-27 22:44:47 +0200
commitab407258795bfa05756b009058757f8b42aa9c53 (patch)
treef96c0057a86c7d53deae69dd442ae55311263ee8 /test
parentff18d8e2060ae7c15c7694dc6bcbbeb9cbfbdaa4 (diff)
downloadjquery-ab407258795bfa05756b009058757f8b42aa9c53.tar.gz
jquery-ab407258795bfa05756b009058757f8b42aa9c53.zip
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
Diffstat (limited to 'test')
-rw-r--r--test/node_smoke_tests/document_missing.js19
-rw-r--r--test/node_smoke_tests/document_passed.js17
-rw-r--r--test/node_smoke_tests/document_present_originally.js20
-rw-r--r--test/node_smoke_tests/lib/ensure_global_not_created.js17
-rw-r--r--test/node_smoke_tests/lib/ensure_jquery.js11
-rw-r--r--test/promises_aplus_adapter.js (renamed from test/promises-aplus-adapter.js)9
6 files changed, 88 insertions, 5 deletions
diff --git a/test/node_smoke_tests/document_missing.js b/test/node_smoke_tests/document_missing.js
new file mode 100644
index 000000000..0a0bda350
--- /dev/null
+++ b/test/node_smoke_tests/document_missing.js
@@ -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 );
+}
diff --git a/test/node_smoke_tests/document_passed.js b/test/node_smoke_tests/document_passed.js
new file mode 100644
index 000000000..5bbddb718
--- /dev/null
+++ b/test/node_smoke_tests/document_passed.js
@@ -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 );
+} );
diff --git a/test/node_smoke_tests/document_present_originally.js b/test/node_smoke_tests/document_present_originally.js
new file mode 100644
index 000000000..76fa88e86
--- /dev/null
+++ b/test/node_smoke_tests/document_present_originally.js
@@ -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 );
+} );
diff --git a/test/node_smoke_tests/lib/ensure_global_not_created.js b/test/node_smoke_tests/lib/ensure_global_not_created.js
new file mode 100644
index 000000000..e2ce98309
--- /dev/null
+++ b/test/node_smoke_tests/lib/ensure_global_not_created.js
@@ -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 );
+ }
+ } );
+};
diff --git a/test/node_smoke_tests/lib/ensure_jquery.js b/test/node_smoke_tests/lib/ensure_jquery.js
new file mode 100644
index 000000000..f121f6652
--- /dev/null
+++ b/test/node_smoke_tests/lib/ensure_jquery.js
@@ -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 );
+ }
+};
diff --git a/test/promises-aplus-adapter.js b/test/promises_aplus_adapter.js
index bb1587337..decc3e0f0 100644
--- a/test/promises-aplus-adapter.js
+++ b/test/promises_aplus_adapter.js
@@ -1,4 +1,5 @@
-/*jshint es3:false, node:true */
+/* jshint node: true */
+
"use strict";
require( "jsdom" ).env( "", function ( errors, window ) {
@@ -13,11 +14,9 @@ require( "jsdom" ).env( "", function ( errors, window ) {
var deferred = jQuery.Deferred();
return {
- get promise() {
- return deferred.promise();
- },
+ promise: deferred.promise(),
resolve: deferred.resolve.bind( deferred ),
reject: deferred.reject.bind( deferred )
};
};
-});
+} );