Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

Autoría | Ultima modificación | Ver Log |

/*global test, equal, module, ok*/
(function(global, jQuery, undefined) {
"use strict";

function undefine() { // Undefine registered modules from previously run tests.
        require.undef("jsrender");
        require.undef("jquery");
        delete window.jQuery;
}

if (!window.attachEvent || window.addEventListener) { // Running RequireJS in qunit async test seems to fail in IE8

QUnit.module("AMD Script Loader");

QUnit.test("Loading JsRender, without jQuery, using RequireJS", function(assert) {
        var done = assert.async(),
                jq = window.jQuery;
        undefine();

        require(["//www.jsviews.com/download/jsrender.js"], function($) { // Or point to correct local path for jsrender.js on your system
//      require(["../../download/jsrender.js"], function($) { // Or point to correct local path for jsrender.js on your system
                // Here $ is the global jQuery object, (jq - loaded by script block in page header, for QUnit)
                // If there was no global jQuery it would be the jsviews object - but no global would be created.

                var result = $.templates("Name: {{:name}}").render({name: "Jo"}) + " " + (!!$.jsrender);
                assert.equal(result, "Name: Jo true", "JsRender Loaded");
                done();
        });
});

QUnit.test("Loading JsRender and jQuery, without forcing load order, using RequireJS", function(assert) {
        var done = assert.async(),
                jq = window.jQuery;
        undefine();

// Note JsRender does not require jQuery - so its AMD definition does not specify jQuery dependency.

        require(["./unit-tests/requirejs-config"], function() {
                require(["jquery", "jsrender"], function($jq, $) {
                        // Note: $ is either the jQuery loaded by RequireJS, or the window.jsrender object, depending on load order
                        // Either way, it is the jQuery instance that has a $.views, $.templates etc.

                        var result = $.templates("Name: {{:name}}").render({name: "Jo"}) + " " + ($ === $jq || !!$.jsrender);
                        assert.equal(result, "Name: Jo true", "JsRender Loaded");
                        done();
                });
        });
});

QUnit.test("Loading JsRender with jQuery, and force jQuery to load before JsRender, using RequireJS", function(assert) {
        var done = assert.async(),
                jq = window.jQuery;
        undefine();

// Note JsRender does not require jQuery - so its AMD definition does not specify jQuery dependency.
// So we will force loading order here by nesting require call for JsRender inside require call for jQuery.
// This is not optimized for loading speed.

        require(["./unit-tests/requirejs-config"], function() {
                require(["jquery"], function($jq) {
                        require(["jsrender"], function($) {
                                // Note: $ is a new instance of jQuery (=== $jq) loaded by RequireJS, not the instance loaded by script block in page header, for QUnit.

                                var result = $.templates("Name: {{:name}}").render({name: "Jo"}) + " " + (jq !== $ && $ === window.jQuery && $ === $jq);
                                assert.equal(result, "Name: Jo true", "JsRender LoadedX");
                                done();
                        });
                });
        });
});

}
})(this, this.jQuery);