Do not register time system listener until we have resolve remote clock object (#6063)

This commit is contained in:
Andrew Henry
2022-12-20 14:01:47 -08:00
committed by GitHub
parent 3deb2e3dc2
commit cbecd79f71
2 changed files with 45 additions and 32 deletions

View File

@ -62,8 +62,8 @@ export default class RemoteClock extends DefaultClock {
} }
start() { start() {
this.openmct.time.on('timeSystem', this._timeSystemChange);
this.openmct.objects.get(this.identifier).then((domainObject) => { this.openmct.objects.get(this.identifier).then((domainObject) => {
this.openmct.time.on('timeSystem', this._timeSystemChange);
this.timeTelemetryObject = domainObject; this.timeTelemetryObject = domainObject;
this.metadata = this.openmct.telemetry.getMetadata(domainObject); this.metadata = this.openmct.telemetry.getMetadata(domainObject);
this._timeSystemChange(); this._timeSystemChange();

View File

@ -71,7 +71,10 @@ describe("the RemoteClock plugin", () => {
parse: (datum) => datum.key parse: (datum) => datum.key
}; };
beforeEach(async () => { let objectPromise;
let requestPromise;
beforeEach(() => {
openmct.install(openmct.plugins.RemoteClock(TIME_TELEMETRY_ID)); openmct.install(openmct.plugins.RemoteClock(TIME_TELEMETRY_ID));
let clocks = openmct.time.getAllClocks(); let clocks = openmct.time.getAllClocks();
@ -89,7 +92,9 @@ describe("the RemoteClock plugin", () => {
spyOn(metadata, 'value').and.callThrough(); spyOn(metadata, 'value').and.callThrough();
let requestPromiseResolve; let requestPromiseResolve;
let requestPromise = new Promise((resolve) => { let objectPromiseResolve;
requestPromise = new Promise((resolve) => {
requestPromiseResolve = resolve; requestPromiseResolve = resolve;
}); });
spyOn(openmct.telemetry, 'request').and.callFake(() => { spyOn(openmct.telemetry, 'request').and.callFake(() => {
@ -98,8 +103,7 @@ describe("the RemoteClock plugin", () => {
return requestPromise; return requestPromise;
}); });
let objectPromiseResolve; objectPromise = new Promise((resolve) => {
let objectPromise = new Promise((resolve) => {
objectPromiseResolve = resolve; objectPromiseResolve = resolve;
}); });
spyOn(openmct.objects, 'get').and.callFake(() => { spyOn(openmct.objects, 'get').and.callFake(() => {
@ -112,8 +116,15 @@ describe("the RemoteClock plugin", () => {
start: OFFSET_START, start: OFFSET_START,
end: OFFSET_END end: OFFSET_END
}); });
});
await Promise.all([objectPromiseResolve, requestPromise]); it("Does not throw error if time system is changed before remote clock initialized", () => {
expect(() => openmct.time.timeSystem('utc')).not.toThrow();
});
describe('once resolved', () => {
beforeEach(async () => {
await Promise.all([objectPromise, requestPromise]);
}); });
it('is available and sets up initial values and listeners', () => { it('is available and sets up initial values and listeners', () => {
@ -148,3 +159,5 @@ describe("the RemoteClock plugin", () => {
}); });
}); });
});