/*!
GPII Dynamic Component Indexer Tests
Copyright 2012 OCAD University
Copyright 2012 Raising The Floor - International
Licensed under the New BSD license. You may not use this file except in
compliance with this License.
You may obtain a copy of the License at
https://github.com/GPII/universal/blob/master/LICENSE.txt
*/
/* eslint-env browser */
/* eslint strict: ["error", "function"] */
/* global jqUnit, fluid */
(function () {
"use strict";
var gpii = fluid.registerNamespace("gpii");
fluid.defaults("gpii.tests.sessionIndexer", {
gradeNames: "gpii.indexedDynamicComponent",
components: {
dynamicIndexTarget: "{gpii.tests.dynamicIndexerHolder}"
},
dynamicIndexTargetPath: "sessionIndex",
dynamicIndexKeyPath: "options.userId"
});
fluid.defaults("gpii.tests.dynamicIndexerHolder", {
gradeNames: "fluid.component",
members: {
sessionIndex: {}
},
dynamicComponents: {
session: {
type: "gpii.tests.sessionIndexer",
options: {
userId: "{arguments}.0"
},
createOnEvent: "onSessionStart"
}
},
events: {
onSessionStart: null
}
});
gpii.tests.sessionIndexer.assertIndexed = function (that, keys) {
var sessionIndex = that.sessionIndex;
jqUnit.assertDeepEq("Exactly those expected components indexed", keys, fluid.keys(sessionIndex));
fluid.each(keys, function (key) {
jqUnit.assertEquals("Dynamic component with key " + key + " indexed", key, that[sessionIndex[key]].options.userId);
});
};
jqUnit.test("Dynamic Component Indexer", function () {
var holder = gpii.tests.dynamicIndexerHolder();
gpii.tests.sessionIndexer.assertIndexed(holder, []);
holder.events.onSessionStart.fire("user1");
gpii.tests.sessionIndexer.assertIndexed(holder, ["user1"]);
holder.events.onSessionStart.fire("user2");
gpii.tests.sessionIndexer.assertIndexed(holder, ["user1", "user2"]);
holder[holder.sessionIndex.user1].destroy();
gpii.tests.sessionIndexer.assertIndexed(holder, ["user2"]);
holder[holder.sessionIndex.user2].destroy();
gpii.tests.sessionIndexer.assertIndexed(holder, []);
});
})();
|