/* Loads all required files. Calls loader.js to get x-editable files with dependencies. */ //detect version of jquery from url param, e.g. 'jquery=1.7.2' var jqver = decodeURIComponent((new RegExp('[?|&]' + 'jquery' + '=' + '([^&;]+?)(&|#|;|$)').exec(location.search)||[,""])[1].replace(/\+/g, '%20'))||null; jqurl = jqver ? "http://code.jquery.com/jquery-"+jqver+".min.js" : "libs/jquery/jquery-1.9.1.min.js"; require(["loader", jqurl], function(loader) { var config = loader.getConfig("../src"), params = loader.getParams(); //add test specific dependencies config.shim['test/mocks'] = ['element/editable-element', 'test/libs/mockjax/jquery.mockjax']; //as we need to keep order of tests, create shim dependencies automatically addTests(config); requirejs.config(config); require(['test/unit/api'], function() { //disable effects $.fx.off = true; $.support.transition = false; $.fn.editable.defaults.mode = params.c === 'inline' ? 'inline' : 'popup'; //for some reason qunit's empty of fixture does not call element's `destryed` event //and container remains open QUnit.testDone(function( details ) { $('#qunit-fixture').empty(); }); QUnit.load(); QUnit.start(); }); function addTests(config) { var custom; switch(params.f) { case 'bootstrap2': custom = ['test/unit/datefield', 'test/unit/date', 'test/unit/datetimefield', 'test/unit/datetime', 'test/unit/wysihtml5', 'test/unit/typeahead' ]; break; case 'bootstrap3': custom = [ 'test/unit/datefield', 'test/unit/date', 'test/unit/datetimefield', 'test/unit/datetime', //'test/unit/wysihtml5' 'test/unit/typeaheadjs' ]; break; default: custom = ['test/unit/dateuifield', 'test/unit/dateui']; } var tests = [ 'test/mocks', 'test/unit/common', 'test/unit/text', 'test/unit/textarea', 'test/unit/select', 'test/unit/checklist', 'test/unit/combodate', 'test/unit/select2' ]; tests = tests.concat(custom); tests.push('test/unit/api'); for(var i=0; i<tests.length-1; i++) { config.shim[tests[i+1]] = [tests[i]]; } } }); // implement JSON.stringify serialization for IE7 var JSON = JSON || {}; JSON.stringify = JSON.stringify || function (obj) { var t = typeof (obj); if (t != "object" || obj === null) { // simple data type if (t == "string") obj = '"'+obj+'"'; return String(obj); } else { // recurse array or object var n, v, json = [], arr = (obj && obj.constructor == Array); for (n in obj) { v = obj[n]; t = typeof(v); if (t == "string") v = '"'+v+'"'; else if (t == "object" && v !== null) v = JSON.stringify(v); json.push((arr ? "" : '"' + n + '":') + String(v)); } return (arr ? "[" : "{") + String(json) + (arr ? "]" : "}"); } };