From 2170c06924b3a0dc1fef3b383d6a236e670dceea Mon Sep 17 00:00:00 2001 From: Igor Minar Date: Thu, 15 Sep 2011 04:54:00 +0200 Subject: fix(specs): fix jQuery to jqLite binding on IE8 It appears that this whole time all IE8 unit tests ran only with jqLite. Due to a weird bug in IE[1], we never overwrote jqLite implementation with jQuery, so the tests ran with our jqLite instead. This affected only IE8 (and likely older) and only in unit testing mode. angular.js - the built artifact binds to jQuery just find. [1] https://plus.google.com/104744871076396904202/posts/Kqjuj6RSbbT --- test/jqLiteSpec.js | 5 +++++ test/jquery_alias.js | 3 ++- test/jquery_remove.js | 3 ++- test/testabilityPatch.js | 8 ++++++++ 4 files changed, 17 insertions(+), 2 deletions(-) diff --git a/test/jqLiteSpec.js b/test/jqLiteSpec.js index b31b1664..63ba24bf 100644 --- a/test/jqLiteSpec.js +++ b/test/jqLiteSpec.js @@ -39,6 +39,11 @@ describe('jqLite', function(){ }); + it('should be jqLite when jqLiteMode is on, otherwise jQuery', function() { + expect(jqLite).toBe(_jqLiteMode ? jqLiteWrap : _jQuery); + }); + + describe('construction', function(){ it('should allow construction with text node', function(){ var text = a.firstChild; diff --git a/test/jquery_alias.js b/test/jquery_alias.js index d9e1222b..ee4094f2 100644 --- a/test/jquery_alias.js +++ b/test/jquery_alias.js @@ -1,3 +1,4 @@ 'use strict'; -var _jQuery = jQuery; +var _jQuery = jQuery, + _jqLiteMode = false; diff --git a/test/jquery_remove.js b/test/jquery_remove.js index 0f2ce623..66029c81 100644 --- a/test/jquery_remove.js +++ b/test/jquery_remove.js @@ -1,3 +1,4 @@ 'use strict'; -var _jQuery = jQuery.noConflict(true); +var _jQuery = jQuery.noConflict(true), + _jqLiteMode = true; diff --git a/test/testabilityPatch.js b/test/testabilityPatch.js index 314ba6da..24f10139 100644 --- a/test/testabilityPatch.js +++ b/test/testabilityPatch.js @@ -28,6 +28,14 @@ if (window.jstestdriver) { beforeEach(function(){ // This is to reset parsers global cache of expressions. compileCache = {}; + + // workaround for IE bug https://plus.google.com/104744871076396904202/posts/Kqjuj6RSbbT + // IE overwrite window.jQuery with undefined because of empty jQuery var statement, so we have to + // correct this, but only if we are not running in jqLite mode + if (!_jqLiteMode && _jQuery !== jQuery) { + jQuery = _jQuery; + } + // reset to jQuery or default to us. bindJQuery(); jqLite(document.body).html(''); -- cgit v1.2.3