mirror of
https://github.com/nasa/openmct.git
synced 2025-02-18 16:40:58 +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 () {
|
||||
var mockApp,
|
||||
mockLog,
|
||||
mockSorter,
|
||||
customRegistrars,
|
||||
registrar;
|
||||
|
||||
beforeEach(function () {
|
||||
mockApp = jasmine.createSpyObj("app", ["factory"]);
|
||||
mockLog = jasmine.createSpyObj("$log", ["error", "warn", "debug", "info"]);
|
||||
mockSorter = jasmine.createSpyObj("sorter", ["sort"]);
|
||||
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 () {
|
||||
@ -64,6 +74,23 @@ define(
|
||||
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",
|
||||
"register/CustomRegistrars",
|
||||
"register/ExtensionRegistrar",
|
||||
"register/ExtensionSorter",
|
||||
"register/PartialConstructor",
|
||||
"register/ServiceCompositor",
|
||||
"resolve/BundleResolver",
|
||||
|
Loading…
x
Reference in New Issue
Block a user