mirror of
https://github.com/nasa/openmct.git
synced 2025-02-20 17:33:23 +00:00
[Framework] Add/update tests for sorting
Add/update framework tests to include the sorting of extensions by priority, WTD-590.
This commit is contained in:
parent
9d8885d48f
commit
64ede1e917
@ -11,14 +11,24 @@ define(
|
|||||||
describe("The extension registrar", function () {
|
describe("The extension registrar", function () {
|
||||||
var mockApp,
|
var mockApp,
|
||||||
mockLog,
|
mockLog,
|
||||||
|
mockSorter,
|
||||||
customRegistrars,
|
customRegistrars,
|
||||||
registrar;
|
registrar;
|
||||||
|
|
||||||
beforeEach(function () {
|
beforeEach(function () {
|
||||||
mockApp = jasmine.createSpyObj("app", ["factory"]);
|
mockApp = jasmine.createSpyObj("app", ["factory"]);
|
||||||
mockLog = jasmine.createSpyObj("$log", ["error", "warn", "debug", "info"]);
|
mockLog = jasmine.createSpyObj("$log", ["error", "warn", "debug", "info"]);
|
||||||
|
mockSorter = jasmine.createSpyObj("sorter", ["sort"]);
|
||||||
customRegistrars = {};
|
customRegistrars = {};
|
||||||
registrar = new ExtensionRegistrar(mockApp, customRegistrars, mockLog);
|
|
||||||
|
mockSorter.sort.andCallFake(function (v) { return v; });
|
||||||
|
|
||||||
|
registrar = new ExtensionRegistrar(
|
||||||
|
mockApp,
|
||||||
|
customRegistrars,
|
||||||
|
mockSorter,
|
||||||
|
mockLog
|
||||||
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
it("registers extensions using the factory", function () {
|
it("registers extensions using the factory", function () {
|
||||||
@ -64,6 +74,23 @@ define(
|
|||||||
expect(customRegistrars.things).toHaveBeenCalled();
|
expect(customRegistrars.things).toHaveBeenCalled();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it("sorts extensions before registering", function () {
|
||||||
|
// Some extension definitions to sort
|
||||||
|
var a = { a: 'a' }, b = { b: 'b' }, c = { c: 'c' };
|
||||||
|
|
||||||
|
// Fake sorting; just reverse the array
|
||||||
|
mockSorter.sort.andCallFake(function (v) { return v.reverse(); });
|
||||||
|
|
||||||
|
// Register the extensions
|
||||||
|
registrar.registerExtensions({ things: [ a, b, c ] });
|
||||||
|
|
||||||
|
// Verify registration interactions occurred in reverse-order
|
||||||
|
[ c, b, a ].forEach(function (extension, index) {
|
||||||
|
expect(mockApp.factory.calls[index].args[1][0]())
|
||||||
|
.toEqual(extension);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
);
|
);
|
50
platform/framework/test/register/ExtensionSorterSpec.js
Normal file
50
platform/framework/test/register/ExtensionSorterSpec.js
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
/*global define,Promise,describe,it,expect,beforeEach,jasmine,waitsFor*/
|
||||||
|
|
||||||
|
define(
|
||||||
|
["../../src/register/ExtensionSorter"],
|
||||||
|
function (ExtensionSorter) {
|
||||||
|
"use strict";
|
||||||
|
|
||||||
|
describe("The extension sorter", function () {
|
||||||
|
var mockLog,
|
||||||
|
sorter;
|
||||||
|
|
||||||
|
beforeEach(function () {
|
||||||
|
mockLog = jasmine.createSpyObj(
|
||||||
|
"$log",
|
||||||
|
["error", "warn", "debug", "info"]
|
||||||
|
);
|
||||||
|
|
||||||
|
sorter = new ExtensionSorter(mockLog);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("sorts extensions in priority order", function () {
|
||||||
|
var a = { priority: 10 },
|
||||||
|
b = {},
|
||||||
|
c = { priority: 'mandatory' }; // Should be +Inf
|
||||||
|
expect(sorter.sort([a, b, c])).toEqual([c, a, b]);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("warns about unrecognized priorities", function () {
|
||||||
|
var a = { priority: 10 },
|
||||||
|
b = {},
|
||||||
|
c = { priority: 'mandatory' }, // Should be +Inf
|
||||||
|
d = { priority: 'GARBAGE-TEXT' },
|
||||||
|
e = { priority: { mal: "formed"} },
|
||||||
|
f = { priority: 3 };
|
||||||
|
|
||||||
|
// Sorting should use default order (note we assume
|
||||||
|
// a stable sort here as well)
|
||||||
|
expect(sorter.sort(
|
||||||
|
[a, b, c, d, e, f]
|
||||||
|
)).toEqual(
|
||||||
|
[c, a, f, b, d, e]
|
||||||
|
);
|
||||||
|
|
||||||
|
// Should have been warned exactly twice (for d & e)
|
||||||
|
expect(mockLog.warn.calls.length).toEqual(2);
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
||||||
|
}
|
||||||
|
);
|
@ -6,6 +6,7 @@
|
|||||||
"load/Extension",
|
"load/Extension",
|
||||||
"register/CustomRegistrars",
|
"register/CustomRegistrars",
|
||||||
"register/ExtensionRegistrar",
|
"register/ExtensionRegistrar",
|
||||||
|
"register/ExtensionSorter",
|
||||||
"register/PartialConstructor",
|
"register/PartialConstructor",
|
||||||
"register/ServiceCompositor",
|
"register/ServiceCompositor",
|
||||||
"resolve/BundleResolver",
|
"resolve/BundleResolver",
|
||||||
|
Loading…
x
Reference in New Issue
Block a user