6056 |
efrain |
1 |
/*global test, equal, module, ok*/
|
|
|
2 |
(function(global, jQuery, undefined) {
|
|
|
3 |
"use strict";
|
|
|
4 |
|
|
|
5 |
function undefine() { // Undefine registered modules from previously run tests.
|
|
|
6 |
require.undef("jsrender");
|
|
|
7 |
require.undef("jquery");
|
|
|
8 |
delete window.jQuery;
|
|
|
9 |
}
|
|
|
10 |
|
|
|
11 |
if (!window.attachEvent || window.addEventListener) { // Running RequireJS in qunit async test seems to fail in IE8
|
|
|
12 |
|
|
|
13 |
QUnit.module("AMD Script Loader");
|
|
|
14 |
|
|
|
15 |
QUnit.test("Loading JsRender, without jQuery, using RequireJS", function(assert) {
|
|
|
16 |
var done = assert.async(),
|
|
|
17 |
jq = window.jQuery;
|
|
|
18 |
undefine();
|
|
|
19 |
|
|
|
20 |
require(["//www.jsviews.com/download/jsrender.js"], function($) { // Or point to correct local path for jsrender.js on your system
|
|
|
21 |
// require(["../../download/jsrender.js"], function($) { // Or point to correct local path for jsrender.js on your system
|
|
|
22 |
// Here $ is the global jQuery object, (jq - loaded by script block in page header, for QUnit)
|
|
|
23 |
// If there was no global jQuery it would be the jsviews object - but no global would be created.
|
|
|
24 |
|
|
|
25 |
var result = $.templates("Name: {{:name}}").render({name: "Jo"}) + " " + (!!$.jsrender);
|
|
|
26 |
assert.equal(result, "Name: Jo true", "JsRender Loaded");
|
|
|
27 |
done();
|
|
|
28 |
});
|
|
|
29 |
});
|
|
|
30 |
|
|
|
31 |
QUnit.test("Loading JsRender and jQuery, without forcing load order, using RequireJS", function(assert) {
|
|
|
32 |
var done = assert.async(),
|
|
|
33 |
jq = window.jQuery;
|
|
|
34 |
undefine();
|
|
|
35 |
|
|
|
36 |
// Note JsRender does not require jQuery - so its AMD definition does not specify jQuery dependency.
|
|
|
37 |
|
|
|
38 |
require(["./unit-tests/requirejs-config"], function() {
|
|
|
39 |
require(["jquery", "jsrender"], function($jq, $) {
|
|
|
40 |
// Note: $ is either the jQuery loaded by RequireJS, or the window.jsrender object, depending on load order
|
|
|
41 |
// Either way, it is the jQuery instance that has a $.views, $.templates etc.
|
|
|
42 |
|
|
|
43 |
var result = $.templates("Name: {{:name}}").render({name: "Jo"}) + " " + ($ === $jq || !!$.jsrender);
|
|
|
44 |
assert.equal(result, "Name: Jo true", "JsRender Loaded");
|
|
|
45 |
done();
|
|
|
46 |
});
|
|
|
47 |
});
|
|
|
48 |
});
|
|
|
49 |
|
|
|
50 |
QUnit.test("Loading JsRender with jQuery, and force jQuery to load before JsRender, using RequireJS", function(assert) {
|
|
|
51 |
var done = assert.async(),
|
|
|
52 |
jq = window.jQuery;
|
|
|
53 |
undefine();
|
|
|
54 |
|
|
|
55 |
// Note JsRender does not require jQuery - so its AMD definition does not specify jQuery dependency.
|
|
|
56 |
// So we will force loading order here by nesting require call for JsRender inside require call for jQuery.
|
|
|
57 |
// This is not optimized for loading speed.
|
|
|
58 |
|
|
|
59 |
require(["./unit-tests/requirejs-config"], function() {
|
|
|
60 |
require(["jquery"], function($jq) {
|
|
|
61 |
require(["jsrender"], function($) {
|
|
|
62 |
// Note: $ is a new instance of jQuery (=== $jq) loaded by RequireJS, not the instance loaded by script block in page header, for QUnit.
|
|
|
63 |
|
|
|
64 |
var result = $.templates("Name: {{:name}}").render({name: "Jo"}) + " " + (jq !== $ && $ === window.jQuery && $ === $jq);
|
|
|
65 |
assert.equal(result, "Name: Jo true", "JsRender LoadedX");
|
|
|
66 |
done();
|
|
|
67 |
});
|
|
|
68 |
});
|
|
|
69 |
});
|
|
|
70 |
});
|
|
|
71 |
|
|
|
72 |
}
|
|
|
73 |
})(this, this.jQuery);
|