1
0
mirror of https://github.com/lensapp/lens.git synced 2025-05-20 05:10:56 +00:00
Signed-off-by: Janne Savolainen <janne.savolainen@live.fi>
This commit is contained in:
Janne Savolainen 2023-03-17 09:03:41 +02:00
parent 8aab8c020b
commit 4d8c26d587
No known key found for this signature in database
GPG Key ID: 8C6CFB2FFFE8F68A
3 changed files with 37 additions and 95 deletions

View File

@ -22,7 +22,7 @@ import type { MessageChannel } from "../message/message-channel-listener-injecti
import { getMessageChannelListenerInjectable } from "../message/message-channel-listener-injection-token"; import { getMessageChannelListenerInjectable } from "../message/message-channel-listener-injection-token";
import { registerMobX } from "@ogre-tools/injectable-extension-for-mobx"; import { registerMobX } from "@ogre-tools/injectable-extension-for-mobx";
import { registerFeature } from "@k8slens/feature-core"; import { registerFeature } from "@k8slens/feature-core";
import { messagingFeature } from "../feature"; import { messagingFeatureForUnitTesting } from "../../unit-testing";
import { import {
computedChannelAdministrationChannel, computedChannelAdministrationChannel,
ComputedChannelAdminMessage, ComputedChannelAdminMessage,
@ -77,8 +77,8 @@ const testChannel2: MessageChannel<string> = { id: "some-other-channel-id" };
}); });
runInAction(() => { runInAction(() => {
registerFeature(di1, messagingFeature); registerFeature(di1, messagingFeatureForUnitTesting);
registerFeature(di2, messagingFeature); registerFeature(di2, messagingFeatureForUnitTesting);
di1.register(channelValueTestListenerInjectable); di1.register(channelValueTestListenerInjectable);
di2.register(administrationChannelTestListenerInjectable); di2.register(administrationChannelTestListenerInjectable);

View File

@ -1,7 +1,6 @@
import { import {
createContainer, createContainer,
DiContainer, DiContainer,
getInjectable,
Injectable, Injectable,
} from "@ogre-tools/injectable"; } from "@ogre-tools/injectable";
@ -14,7 +13,7 @@ import {
enlistMessageChannelListenerInjectionToken, enlistMessageChannelListenerInjectionToken,
} from "./features/actual/message/enlist-message-channel-listener-injection-token"; } from "./features/actual/message/enlist-message-channel-listener-injection-token";
import { messagingFeature } from "./features/actual/feature"; import { messagingFeatureForUnitTesting } from "./features/unit-testing";
import { import {
getMessageChannelListenerInjectable, getMessageChannelListenerInjectable,
@ -23,9 +22,9 @@ import {
} from "./features/actual/message/message-channel-listener-injection-token"; } from "./features/actual/message/message-channel-listener-injection-token";
import { listeningOfChannelsInjectionToken } from "./features/actual/listening-of-channels/listening-of-channels.injectable"; import { listeningOfChannelsInjectionToken } from "./features/actual/listening-of-channels/listening-of-channels.injectable";
import { enlistRequestChannelListenerInjectionToken } from "./features/actual/request/enlist-request-channel-listener-injection-token";
import { sendMessageToChannelInjectionToken } from "./features/actual/message/message-to-channel-injection-token.no-coverage";
import { getMessageChannel } from "./features/actual/message/get-message-channel"; import { getMessageChannel } from "./features/actual/message/get-message-channel";
import { applicationFeature, startApplicationInjectionToken } from "@k8slens/application";
describe("listening-of-messages", () => { describe("listening-of-messages", () => {
let di: DiContainer; let di: DiContainer;
@ -42,38 +41,16 @@ describe("listening-of-messages", () => {
disposeSomeUnrelatedListenerMock = jest.fn(); disposeSomeUnrelatedListenerMock = jest.fn();
enlistMessageChannelListenerMock = jest.fn((listener) => enlistMessageChannelListenerMock = jest.fn((listener) =>
listener.id === "some-listener" listener.id === "some-channel-id-message-listener-some-listener"
? disposeSomeListenerMock ? disposeSomeListenerMock
: disposeSomeUnrelatedListenerMock : disposeSomeUnrelatedListenerMock,
); );
const someEnlistMessageChannelListenerInjectable = getInjectable({
id: "some-enlist-message-channel-listener",
instantiate: () => enlistMessageChannelListenerMock,
injectionToken: enlistMessageChannelListenerInjectionToken,
});
const someEnlistRequestChannelListenerInjectable = getInjectable({
id: "some-enlist-request-channel-listener",
instantiate: () => () => () => {},
injectionToken: enlistRequestChannelListenerInjectionToken,
});
const sendMessageToChannelDummyInjectable = getInjectable({
id: "send-message-to-channel-dummy",
instantiate: () => () => {},
injectionToken: sendMessageToChannelInjectionToken,
});
runInAction(() => { runInAction(() => {
di.register( registerFeature(di, applicationFeature, messagingFeatureForUnitTesting);
someEnlistMessageChannelListenerInjectable,
someEnlistRequestChannelListenerInjectable,
sendMessageToChannelDummyInjectable
);
registerFeature(di, messagingFeature);
}); });
di.override(enlistMessageChannelListenerInjectionToken, () => enlistMessageChannelListenerMock);
}); });
describe("given listening of channels has not started yet", () => { describe("given listening of channels has not started yet", () => {
@ -102,19 +79,16 @@ describe("listening-of-messages", () => {
}); });
}); });
// Todo: make starting automatic by using a runnable with a timeslot. describe("when application is started", () => {
describe("when listening of channels is started", () => { beforeEach(async () => {
beforeEach(() => { const startApplication = di.inject(startApplicationInjectionToken);
const listeningOnMessageChannels = di.inject(
listeningOfChannelsInjectionToken
);
listeningOnMessageChannels.start(); await startApplication();
}); });
it("it enlists a listener for the channel", () => { it("it enlists a listener for the channel", () => {
expect(enlistMessageChannelListenerMock).toHaveBeenCalledWith({ expect(enlistMessageChannelListenerMock).toHaveBeenCalledWith({
id: "some-listener", id: "some-channel-id-message-listener-some-listener",
channel: someChannel, channel: someChannel,
handler: someMessageHandler, handler: someMessageHandler,
}); });
@ -147,7 +121,7 @@ describe("listening-of-messages", () => {
expect(enlistMessageChannelListenerMock.mock.calls).toEqual([ expect(enlistMessageChannelListenerMock.mock.calls).toEqual([
[ [
{ {
id: "some-other-listener", id: "some-channel-id-message-listener-some-other-listener",
channel: someChannel, channel: someChannel,
handler: someMessageHandler, handler: someMessageHandler,
}, },

View File

@ -1,9 +1,4 @@
import { import { createContainer, DiContainer, Injectable } from "@ogre-tools/injectable";
createContainer,
DiContainer,
getInjectable,
Injectable,
} from "@ogre-tools/injectable";
import { registerFeature } from "@k8slens/feature-core"; import { registerFeature } from "@k8slens/feature-core";
import { registerMobX } from "@ogre-tools/injectable-extension-for-mobx"; import { registerMobX } from "@ogre-tools/injectable-extension-for-mobx";
@ -14,7 +9,7 @@ import {
enlistRequestChannelListenerInjectionToken, enlistRequestChannelListenerInjectionToken,
} from "./features/actual/request/enlist-request-channel-listener-injection-token"; } from "./features/actual/request/enlist-request-channel-listener-injection-token";
import { messagingFeature } from "./features/actual/feature"; import { messagingFeatureForUnitTesting } from "./features/unit-testing";
import { import {
getRequestChannelListenerInjectable, getRequestChannelListenerInjectable,
@ -23,10 +18,9 @@ import {
} from "./features/actual/request/request-channel-listener-injection-token"; } from "./features/actual/request/request-channel-listener-injection-token";
import { listeningOfChannelsInjectionToken } from "./features/actual/listening-of-channels/listening-of-channels.injectable"; import { listeningOfChannelsInjectionToken } from "./features/actual/listening-of-channels/listening-of-channels.injectable";
import { enlistMessageChannelListenerInjectionToken } from "./features/actual/message/enlist-message-channel-listener-injection-token";
import { noop } from "lodash/fp"; import { noop } from "lodash/fp";
import { sendMessageToChannelInjectionToken } from "./features/actual/message/message-to-channel-injection-token.no-coverage";
import { getRequestChannel } from "./features/actual/request/get-request-channel"; import { getRequestChannel } from "./features/actual/request/get-request-channel";
import { applicationFeature, startApplicationInjectionToken } from "@k8slens/application";
describe("listening-of-requests", () => { describe("listening-of-requests", () => {
let di: DiContainer; let di: DiContainer;
@ -49,38 +43,16 @@ describe("listening-of-requests", () => {
disposeSomeUnrelatedListenerMock = jest.fn(); disposeSomeUnrelatedListenerMock = jest.fn();
enlistRequestChannelListenerMock = jest.fn((listener) => enlistRequestChannelListenerMock = jest.fn((listener) =>
listener.id === "some-listener" listener.id === "some-channel-id-request-listener-some-listener"
? disposeSomeListenerMock ? disposeSomeListenerMock
: disposeSomeUnrelatedListenerMock : disposeSomeUnrelatedListenerMock,
); );
const someEnlistMessageChannelListenerInjectable = getInjectable({
id: "some-enlist-message-channel-listener",
instantiate: () => () => () => {},
injectionToken: enlistMessageChannelListenerInjectionToken,
});
const someEnlistRequestChannelListenerInjectable = getInjectable({
id: "some-enlist-request-channel-listener",
instantiate: () => enlistRequestChannelListenerMock,
injectionToken: enlistRequestChannelListenerInjectionToken,
});
const sendMessageToChannelDummyInjectable = getInjectable({
id: "send-message-to-channel-dummy",
instantiate: () => () => {},
injectionToken: sendMessageToChannelInjectionToken,
});
runInAction(() => { runInAction(() => {
di.register( registerFeature(di, applicationFeature, messagingFeatureForUnitTesting);
someEnlistMessageChannelListenerInjectable,
someEnlistRequestChannelListenerInjectable,
sendMessageToChannelDummyInjectable
);
registerFeature(di, messagingFeature);
}); });
di.override(enlistRequestChannelListenerInjectionToken, () => enlistRequestChannelListenerMock);
}); });
describe("given listening of channels has not started yet", () => { describe("given listening of channels has not started yet", () => {
@ -111,19 +83,16 @@ describe("listening-of-requests", () => {
}); });
}); });
// Todo: make starting automatic by using a runnable with a timeslot. describe("when application is started", () => {
describe("when listening of channels is started", () => { beforeEach(async () => {
beforeEach(() => { const startApplication = di.inject(startApplicationInjectionToken);
const listeningOnRequestChannels = di.inject(
listeningOfChannelsInjectionToken
);
listeningOnRequestChannels.start(); await startApplication();
}); });
it("it enlists a listener for the channel", () => { it("it enlists a listener for the channel", () => {
expect(enlistRequestChannelListenerMock).toHaveBeenCalledWith({ expect(enlistRequestChannelListenerMock).toHaveBeenCalledWith({
id: "some-listener", id: "some-channel-id-request-listener-some-listener",
channel: someChannel, channel: someChannel,
handler: someRequestHandler, handler: someRequestHandler,
}); });
@ -142,8 +111,7 @@ describe("listening-of-requests", () => {
const handler = () => someRequestHandler; const handler = () => someRequestHandler;
const someConflictingListenerInjectable = const someConflictingListenerInjectable = getRequestChannelListenerInjectable({
getRequestChannelListenerInjectable({
id: "some-other-listener", id: "some-other-listener",
channel: someChannel, channel: someChannel,
getHandler: handler, getHandler: handler,
@ -154,7 +122,7 @@ describe("listening-of-requests", () => {
di.register(someConflictingListenerInjectable); di.register(someConflictingListenerInjectable);
}); });
}).toThrow( }).toThrow(
'Tried to add listener for channel "some-channel-id" but listener already exists.' 'Tried to add listener for channel "some-channel-id" but listener already exists.',
); );
}); });
@ -184,7 +152,7 @@ describe("listening-of-requests", () => {
expect(enlistRequestChannelListenerMock.mock.calls).toEqual([ expect(enlistRequestChannelListenerMock.mock.calls).toEqual([
[ [
{ {
id: "some-other-listener", id: "some-other-channel-id-request-listener-some-other-listener",
channel: someOtherChannel, channel: someOtherChannel,
handler: someRequestHandler, handler: someRequestHandler,
}, },