Added $.testHelper.deferredSequence

Renamed reloadLib to reloadModule
Resuscitated $.testHelper.reloadLib
This commit is contained in:
Ghislain Seguin 2011-12-22 17:31:11 -08:00 committed by scottjehl
parent 02baaf67f7
commit 043a5164c9
2 changed files with 67 additions and 7 deletions

View file

@ -55,7 +55,7 @@
reloads: {},
reloadLib: function(libName){
reloadModule: function(libName){
var deferred = $.Deferred();
if(this.reloads[libName] === undefined) {
this.reloads[libName] = {
@ -76,6 +76,22 @@
return deferred;
},
reloadLib: function(libName){
if(this.reloads[libName] === undefined) {
this.reloads[libName] = {
lib: $("script[src$='" + libName + "']"),
count: 0
};
}
var lib = this.reloads[libName].lib.clone(),
src = lib.attr('src');
//NOTE append "cache breaker" to force reload
lib.attr('src', src + "?" + this.reloads[libName].count++);
$("body").append(lib);
},
rerunQunit: function(){
var self = this;
QUnit.init();
@ -147,6 +163,37 @@
fn(timedOut);
},
deferredSequence: function(fns) {
var fn = fns.shift(),
deferred = $.Deferred(),
self = this;
if (fn) {
res = fn();
if ( res && $.type( res.done ) === "function" ) {
res.done(
function() {
self.deferredSequence( fns ).done(
function() {
deferred.resolve();
}
);
}
)
} else {
self.deferredSequence( fns ).done(
function() {
deferred.resolve();
}
);
}
} else {
deferred.resolve();
}
return deferred;
},
decorate: function(opts){
var thisVal = opts.self || window;

View file

@ -24,14 +24,27 @@
});
$.testHelper.excludeFileProtocol(function(){
test( "grade A browser either supports media queries or is IE 7+", function(){
asyncTest( "grade A browser either supports media queries or is IE 7+", function(){
setGradeA(false, 6);
$.testHelper.reloadLib(libName);
ok(!$.mobile.gradeA());
$.testHelper.deferredSequence([
function() {
return $.testHelper.reloadModule(libName);
},
setGradeA(true, 8);
$.testHelper.reloadLib(libName);
ok($.mobile.gradeA());
function() {
ok(!$.mobile.gradeA());
},
function() {
setGradeA(true, 8);
return $.testHelper.reloadModule(libName);
},
function() {
ok($.mobile.gradeA());
start();
}
]);
});
});