mirror of
https://github.com/silverstripe/silverstripe-framework
synced 2024-09-20 00:16:55 +02:00
325 lines
6.5 KiB
JavaScript
325 lines
6.5 KiB
JavaScript
|
test("module without setup/teardown (default)", function() {
|
||
|
expect(1);
|
||
|
ok(true);
|
||
|
});
|
||
|
|
||
|
test("expect in test", 3, function() {
|
||
|
ok(true);
|
||
|
ok(true);
|
||
|
ok(true);
|
||
|
});
|
||
|
|
||
|
test("expect in test", 1, function() {
|
||
|
ok(true);
|
||
|
});
|
||
|
|
||
|
module("setup test", {
|
||
|
setup: function() {
|
||
|
ok(true);
|
||
|
}
|
||
|
});
|
||
|
|
||
|
test("module with setup", function() {
|
||
|
expect(2);
|
||
|
ok(true);
|
||
|
});
|
||
|
|
||
|
test("module with setup, expect in test call", 2, function() {
|
||
|
ok(true);
|
||
|
});
|
||
|
|
||
|
var state;
|
||
|
|
||
|
module("setup/teardown test", {
|
||
|
setup: function() {
|
||
|
state = true;
|
||
|
ok(true);
|
||
|
},
|
||
|
teardown: function() {
|
||
|
ok(true);
|
||
|
}
|
||
|
});
|
||
|
|
||
|
test("module with setup/teardown", function() {
|
||
|
expect(3);
|
||
|
ok(true);
|
||
|
});
|
||
|
|
||
|
module("setup/teardown test 2");
|
||
|
|
||
|
test("module without setup/teardown", function() {
|
||
|
expect(1);
|
||
|
ok(true);
|
||
|
});
|
||
|
|
||
|
if (typeof setTimeout !== 'undefined') {
|
||
|
state = 'fail';
|
||
|
|
||
|
module("teardown and stop", {
|
||
|
teardown: function() {
|
||
|
equal(state, "done", "Test teardown.");
|
||
|
}
|
||
|
});
|
||
|
|
||
|
test("teardown must be called after test ended", function() {
|
||
|
expect(1);
|
||
|
stop();
|
||
|
setTimeout(function() {
|
||
|
state = "done";
|
||
|
start();
|
||
|
}, 13);
|
||
|
});
|
||
|
|
||
|
module("async setup test", {
|
||
|
setup: function() {
|
||
|
stop();
|
||
|
setTimeout(function(){
|
||
|
ok(true);
|
||
|
start();
|
||
|
}, 500);
|
||
|
}
|
||
|
});
|
||
|
|
||
|
asyncTest("module with async setup", function() {
|
||
|
expect(2);
|
||
|
ok(true);
|
||
|
start();
|
||
|
});
|
||
|
|
||
|
module("async teardown test", {
|
||
|
teardown: function() {
|
||
|
stop();
|
||
|
setTimeout(function(){
|
||
|
ok(true);
|
||
|
start();
|
||
|
}, 500);
|
||
|
}
|
||
|
});
|
||
|
|
||
|
asyncTest("module with async teardown", function() {
|
||
|
expect(2);
|
||
|
ok(true);
|
||
|
start();
|
||
|
});
|
||
|
|
||
|
module("asyncTest");
|
||
|
|
||
|
asyncTest("asyncTest", function() {
|
||
|
expect(2);
|
||
|
ok(true);
|
||
|
setTimeout(function() {
|
||
|
state = "done";
|
||
|
ok(true);
|
||
|
start();
|
||
|
}, 13);
|
||
|
});
|
||
|
|
||
|
asyncTest("asyncTest", 2, function() {
|
||
|
ok(true);
|
||
|
setTimeout(function() {
|
||
|
state = "done";
|
||
|
ok(true);
|
||
|
start();
|
||
|
}, 13);
|
||
|
});
|
||
|
|
||
|
test("sync", 2, function() {
|
||
|
stop();
|
||
|
setTimeout(function() {
|
||
|
ok(true);
|
||
|
start();
|
||
|
}, 13);
|
||
|
stop();
|
||
|
setTimeout(function() {
|
||
|
ok(true);
|
||
|
start();
|
||
|
}, 125);
|
||
|
});
|
||
|
}
|
||
|
|
||
|
module("save scope", {
|
||
|
setup: function() {
|
||
|
this.foo = "bar";
|
||
|
},
|
||
|
teardown: function() {
|
||
|
deepEqual(this.foo, "bar");
|
||
|
}
|
||
|
});
|
||
|
test("scope check", function() {
|
||
|
expect(2);
|
||
|
deepEqual(this.foo, "bar");
|
||
|
});
|
||
|
|
||
|
module("simple testEnvironment setup", {
|
||
|
foo: "bar",
|
||
|
bugid: "#5311" // example of meta-data
|
||
|
});
|
||
|
test("scope check", function() {
|
||
|
deepEqual(this.foo, "bar");
|
||
|
});
|
||
|
test("modify testEnvironment",function() {
|
||
|
this.foo="hamster";
|
||
|
});
|
||
|
test("testEnvironment reset for next test",function() {
|
||
|
deepEqual(this.foo, "bar");
|
||
|
});
|
||
|
|
||
|
module("testEnvironment with object", {
|
||
|
options:{
|
||
|
recipe:"soup",
|
||
|
ingredients:["hamster","onions"]
|
||
|
}
|
||
|
});
|
||
|
test("scope check", function() {
|
||
|
deepEqual(this.options, {recipe:"soup",ingredients:["hamster","onions"]}) ;
|
||
|
});
|
||
|
test("modify testEnvironment",function() {
|
||
|
// since we do a shallow copy, the testEnvironment can be modified
|
||
|
this.options.ingredients.push("carrots");
|
||
|
});
|
||
|
test("testEnvironment reset for next test",function() {
|
||
|
deepEqual(this.options, {recipe:"soup",ingredients:["hamster","onions","carrots"]}, "Is this a bug or a feature? Could do a deep copy") ;
|
||
|
});
|
||
|
|
||
|
|
||
|
module("testEnvironment tests");
|
||
|
|
||
|
function makeurl() {
|
||
|
var testEnv = QUnit.current_testEnvironment;
|
||
|
var url = testEnv.url || 'http://example.com/search';
|
||
|
var q = testEnv.q || 'a search test';
|
||
|
return url + '?q='+encodeURIComponent(q);
|
||
|
}
|
||
|
|
||
|
test("makeurl working",function() {
|
||
|
equal( QUnit.current_testEnvironment, this, 'The current testEnvironment is global');
|
||
|
equal( makeurl(), 'http://example.com/search?q=a%20search%20test', 'makeurl returns a default url if nothing specified in the testEnvironment');
|
||
|
});
|
||
|
|
||
|
module("testEnvironment with makeurl settings", {
|
||
|
url: 'http://google.com/',
|
||
|
q: 'another_search_test'
|
||
|
});
|
||
|
test("makeurl working with settings from testEnvironment", function() {
|
||
|
equal( makeurl(), 'http://google.com/?q=another_search_test', 'rather than passing arguments, we use test metadata to form the url');
|
||
|
});
|
||
|
test("each test can extend the module testEnvironment", {
|
||
|
q:'hamstersoup'
|
||
|
}, function() {
|
||
|
equal( makeurl(), 'http://google.com/?q=hamstersoup', 'url from module, q from test');
|
||
|
});
|
||
|
|
||
|
module("jsDump");
|
||
|
test("jsDump output", function() {
|
||
|
equals( QUnit.jsDump.parse([1, 2]), "[\n 1,\n 2\n]" );
|
||
|
equals( QUnit.jsDump.parse({top: 5, left: 0}), "{\n \"top\": 5,\n \"left\": 0\n}" );
|
||
|
if (typeof document !== 'undefined' && document.getElementById("qunit-header")) {
|
||
|
equals( QUnit.jsDump.parse(document.getElementById("qunit-header")), "<h1 id=\"qunit-header\"></h1>" );
|
||
|
equals( QUnit.jsDump.parse(document.getElementsByTagName("h1")), "[\n <h1 id=\"qunit-header\"></h1>\n]" );
|
||
|
}
|
||
|
});
|
||
|
|
||
|
module("assertions");
|
||
|
test("raises",function() {
|
||
|
function CustomError( message ) {
|
||
|
this.message = message;
|
||
|
}
|
||
|
|
||
|
CustomError.prototype.toString = function() {
|
||
|
return this.message;
|
||
|
};
|
||
|
|
||
|
raises(
|
||
|
function() {
|
||
|
throw "error"
|
||
|
}
|
||
|
);
|
||
|
|
||
|
raises(
|
||
|
function() {
|
||
|
throw "error"
|
||
|
},
|
||
|
'raises with just a message, no expected'
|
||
|
);
|
||
|
|
||
|
raises(
|
||
|
function() {
|
||
|
throw new CustomError();
|
||
|
},
|
||
|
CustomError,
|
||
|
'raised error is an instance of CustomError'
|
||
|
);
|
||
|
|
||
|
raises(
|
||
|
function() {
|
||
|
throw new CustomError("some error description");
|
||
|
},
|
||
|
/description/,
|
||
|
"raised error message contains 'description'"
|
||
|
);
|
||
|
|
||
|
raises(
|
||
|
function() {
|
||
|
throw new CustomError("some error description");
|
||
|
},
|
||
|
function( err ) {
|
||
|
if ( (err instanceof CustomError) && /description/.test(err) ) {
|
||
|
return true;
|
||
|
}
|
||
|
},
|
||
|
"custom validation function"
|
||
|
);
|
||
|
|
||
|
});
|
||
|
|
||
|
if (typeof document !== "undefined") {
|
||
|
|
||
|
module("fixture");
|
||
|
test("setup", function() {
|
||
|
document.getElementById("qunit-fixture").innerHTML = "foobar";
|
||
|
});
|
||
|
test("basics", function() {
|
||
|
equal( document.getElementById("qunit-fixture").innerHTML, "test markup", "automatically reset" );
|
||
|
});
|
||
|
|
||
|
}
|
||
|
|
||
|
module("custom assertions");
|
||
|
(function() {
|
||
|
function mod2(value, expected, message) {
|
||
|
var actual = value % 2;
|
||
|
QUnit.push(actual == expected, actual, expected, message);
|
||
|
}
|
||
|
test("mod2", function() {
|
||
|
mod2(2, 0, "2 % 2 == 0");
|
||
|
mod2(3, 1, "3 % 2 == 1");
|
||
|
})
|
||
|
})();
|
||
|
|
||
|
(function() {
|
||
|
var reset = QUnit.reset;
|
||
|
function afterTest() {
|
||
|
ok( false, "reset should not modify test status" );
|
||
|
}
|
||
|
module("reset");
|
||
|
test("reset runs assertions", function() {
|
||
|
QUnit.reset = function() {
|
||
|
afterTest();
|
||
|
reset.apply( this, arguments );
|
||
|
};
|
||
|
});
|
||
|
test("reset runs assertions2", function() {
|
||
|
QUnit.reset = reset;
|
||
|
});
|
||
|
})();
|
||
|
|
||
|
module("noglobals", {
|
||
|
teardown: function() {
|
||
|
delete window.badGlobalVariableIntroducedInTest;
|
||
|
}
|
||
|
});
|
||
|
test("let teardown clean up globals", function() {
|
||
|
// this test will always pass if run without ?noglobals=true
|
||
|
window.badGlobalVariableIntroducedInTest = true;
|
||
|
});
|