@vnejs/plugins.views.screens.credits 0.2.0 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +11 -1
- package/dist/modules/accept.d.ts +11 -0
- package/dist/modules/accept.js +9 -0
- package/dist/modules/controller.d.ts +1 -6
- package/dist/modules/controller.js +1 -7
- package/dist/modules/hide.controls.d.ts +8 -0
- package/dist/modules/hide.controls.js +7 -0
- package/dist/modules/hide.state.d.ts +6 -0
- package/dist/modules/hide.state.js +5 -0
- package/package.json +7 -1
- package/src/index.ts +11 -1
- package/src/modules/accept.ts +22 -0
- package/src/modules/controller.ts +1 -9
- package/src/modules/hide.controls.ts +17 -0
- package/src/modules/hide.state.ts +14 -0
- package/src/tests/accept.test.ts +52 -0
- package/src/tests/hide.controls.test.ts +55 -0
- package/src/tests/hide.state.test.ts +25 -0
- package/src/tests/setup.ts +1 -1
package/dist/index.js
CHANGED
|
@@ -2,6 +2,16 @@ import "@vnejs/contracts.views.screens.credits";
|
|
|
2
2
|
import { regPlugin } from "@vnejs/shared";
|
|
3
3
|
import { PARAMS, PLUGIN_NAME, SUBSCRIBE_EVENTS } from "@vnejs/contracts.views.screens.credits";
|
|
4
4
|
import { CreditsController } from "./modules/controller.js";
|
|
5
|
+
import { CreditsAccept } from "./modules/accept.js";
|
|
6
|
+
import { CreditsHideOnControls } from "./modules/hide.controls.js";
|
|
7
|
+
import { CreditsHideOnState } from "./modules/hide.state.js";
|
|
5
8
|
import { Credits } from "./modules/credits.js";
|
|
6
9
|
import { CreditsView } from "./modules/view.js";
|
|
7
|
-
regPlugin(PLUGIN_NAME, { events: SUBSCRIBE_EVENTS, params: PARAMS }, [
|
|
10
|
+
regPlugin(PLUGIN_NAME, { events: SUBSCRIBE_EVENTS, params: PARAMS }, [
|
|
11
|
+
CreditsController,
|
|
12
|
+
CreditsAccept,
|
|
13
|
+
CreditsHideOnControls,
|
|
14
|
+
CreditsHideOnState,
|
|
15
|
+
Credits,
|
|
16
|
+
CreditsView,
|
|
17
|
+
]);
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { ModuleControllerAccept } from "@vnejs/module.controller.accept";
|
|
2
|
+
import type { CreditsPluginConstants, CreditsPluginEvents, CreditsPluginParams, CreditsPluginSettings } from "../types.js";
|
|
3
|
+
import type { CreditsPluginState } from "../utils/credits.js";
|
|
4
|
+
export declare class CreditsAccept extends ModuleControllerAccept<CreditsPluginEvents, CreditsPluginConstants, CreditsPluginSettings, CreditsPluginParams, CreditsPluginState> {
|
|
5
|
+
name: string;
|
|
6
|
+
EVENT_SHOW: "vne:credits:show";
|
|
7
|
+
EVENT_HIDE: "vne:credits:hide";
|
|
8
|
+
EVENT_ACCEPT: "vne:credits:hide";
|
|
9
|
+
CONTROLS_ZINDEX: number;
|
|
10
|
+
onAccept: () => undefined;
|
|
11
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { ModuleControllerAccept } from "@vnejs/module.controller.accept";
|
|
2
|
+
export class CreditsAccept extends ModuleControllerAccept {
|
|
3
|
+
name = "credits.controller.accept";
|
|
4
|
+
EVENT_SHOW = this.EVENTS.CREDITS.SHOW;
|
|
5
|
+
EVENT_HIDE = this.EVENTS.CREDITS.HIDE;
|
|
6
|
+
EVENT_ACCEPT = this.EVENTS.CREDITS.HIDE;
|
|
7
|
+
CONTROLS_ZINDEX = this.PARAMS.CREDITS.ZINDEX;
|
|
8
|
+
onAccept = () => undefined;
|
|
9
|
+
}
|
|
@@ -3,13 +3,8 @@ import type { CreditsPluginConstants, CreditsPluginEvents, CreditsPluginParams,
|
|
|
3
3
|
import type { CreditsPluginState } from "../utils/credits.js";
|
|
4
4
|
export declare class CreditsController extends ModuleController<CreditsPluginEvents, CreditsPluginConstants, CreditsPluginSettings, CreditsPluginParams, CreditsPluginState> {
|
|
5
5
|
name: string;
|
|
6
|
-
onInteract: () => undefined;
|
|
7
6
|
updateEvent: "vne:credits:update";
|
|
8
|
-
controls: {
|
|
9
|
-
abstract_accept: () => undefined;
|
|
10
|
-
abstract_interact: () => undefined;
|
|
11
|
-
abstract_menu: () => undefined;
|
|
12
|
-
};
|
|
7
|
+
controls: {};
|
|
13
8
|
controlsIndex: number;
|
|
14
9
|
subscribe: () => void;
|
|
15
10
|
afterHide: () => undefined;
|
|
@@ -1,18 +1,12 @@
|
|
|
1
1
|
import { ModuleController } from "@vnejs/module.components";
|
|
2
2
|
export class CreditsController extends ModuleController {
|
|
3
3
|
name = "credits.controller";
|
|
4
|
-
onInteract = () => void this.emit(this.EVENTS.CREDITS.HIDE);
|
|
5
4
|
updateEvent = this.EVENTS.CREDITS.UPDATE;
|
|
6
|
-
controls = {
|
|
7
|
-
[this.CONST.CONTROLS.BUTTONS.ACCEPT]: this.onInteract,
|
|
8
|
-
[this.CONST.CONTROLS.BUTTONS.INTERACT]: this.onInteract,
|
|
9
|
-
[this.CONST.CONTROLS.BUTTONS.MENU]: this.onInteract,
|
|
10
|
-
};
|
|
5
|
+
controls = {};
|
|
11
6
|
controlsIndex = this.PARAMS.CREDITS.ZINDEX;
|
|
12
7
|
subscribe = () => {
|
|
13
8
|
this.on(this.EVENTS.CREDITS.SHOW, this.onShow);
|
|
14
9
|
this.on(this.EVENTS.CREDITS.HIDE, this.onHide);
|
|
15
|
-
this.on(this.EVENTS.STATE.CLEAR, this.onHide);
|
|
16
10
|
};
|
|
17
11
|
afterHide = () => void this.emitNext();
|
|
18
12
|
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { ModuleControllerHideOnControls } from "@vnejs/module.controller.hide.on.controls";
|
|
2
|
+
import type { CreditsPluginConstants, CreditsPluginEvents, CreditsPluginParams, CreditsPluginSettings } from "../types.js";
|
|
3
|
+
export declare class CreditsHideOnControls extends ModuleControllerHideOnControls<CreditsPluginEvents, CreditsPluginConstants, CreditsPluginSettings, CreditsPluginParams> {
|
|
4
|
+
name: string;
|
|
5
|
+
EVENT_SHOW: "vne:credits:show";
|
|
6
|
+
EVENT_HIDE: "vne:credits:hide";
|
|
7
|
+
CONTROLS_ZINDEX: number;
|
|
8
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { ModuleControllerHideOnControls } from "@vnejs/module.controller.hide.on.controls";
|
|
2
|
+
export class CreditsHideOnControls extends ModuleControllerHideOnControls {
|
|
3
|
+
name = "credits.hide.controls";
|
|
4
|
+
EVENT_SHOW = this.EVENTS.CREDITS.SHOW;
|
|
5
|
+
EVENT_HIDE = this.EVENTS.CREDITS.HIDE;
|
|
6
|
+
CONTROLS_ZINDEX = this.PARAMS.CREDITS.ZINDEX;
|
|
7
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { ModuleControllerHideOnState } from "@vnejs/module.controller.hide.on.state";
|
|
2
|
+
import type { CreditsPluginConstants, CreditsPluginEvents, CreditsPluginParams, CreditsPluginSettings } from "../types.js";
|
|
3
|
+
export declare class CreditsHideOnState extends ModuleControllerHideOnState<CreditsPluginEvents, CreditsPluginConstants, CreditsPluginSettings, CreditsPluginParams> {
|
|
4
|
+
name: string;
|
|
5
|
+
EVENT_HIDE: "vne:credits:hide";
|
|
6
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vnejs/plugins.views.screens.credits",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.1",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -36,6 +36,9 @@
|
|
|
36
36
|
"@vnejs/helpers": "~0.2.0",
|
|
37
37
|
"@vnejs/module.core": "~0.2.0",
|
|
38
38
|
"@vnejs/module.components": "~0.2.0",
|
|
39
|
+
"@vnejs/module.controller.accept": "~0.2.0",
|
|
40
|
+
"@vnejs/module.controller.hide.on.controls": "~0.2.0",
|
|
41
|
+
"@vnejs/module.controller.hide.on.state": "~0.2.0",
|
|
39
42
|
"@vnejs/contracts.controls": "~0.2.0",
|
|
40
43
|
"@vnejs/shared": "~0.2.0",
|
|
41
44
|
"@vnejs/uis.react": "~0.2.0"
|
|
@@ -49,6 +52,9 @@
|
|
|
49
52
|
"@vnejs/helpers": "~0.2.0",
|
|
50
53
|
"@vnejs/module.core": "~0.2.0",
|
|
51
54
|
"@vnejs/module.components": "~0.2.0",
|
|
55
|
+
"@vnejs/module.controller.accept": "~0.2.0",
|
|
56
|
+
"@vnejs/module.controller.hide.on.controls": "~0.2.0",
|
|
57
|
+
"@vnejs/module.controller.hide.on.state": "~0.2.0",
|
|
52
58
|
"@vnejs/shared": "~0.2.0",
|
|
53
59
|
"@vnejs/uis.react": "~0.2.0"
|
|
54
60
|
}
|
package/src/index.ts
CHANGED
|
@@ -4,7 +4,17 @@ import { regPlugin } from "@vnejs/shared";
|
|
|
4
4
|
import { PARAMS, PLUGIN_NAME, SUBSCRIBE_EVENTS } from "@vnejs/contracts.views.screens.credits";
|
|
5
5
|
|
|
6
6
|
import { CreditsController } from "./modules/controller.js";
|
|
7
|
+
import { CreditsAccept } from "./modules/accept.js";
|
|
8
|
+
import { CreditsHideOnControls } from "./modules/hide.controls.js";
|
|
9
|
+
import { CreditsHideOnState } from "./modules/hide.state.js";
|
|
7
10
|
import { Credits } from "./modules/credits.js";
|
|
8
11
|
import { CreditsView } from "./modules/view.js";
|
|
9
12
|
|
|
10
|
-
regPlugin(PLUGIN_NAME, { events: SUBSCRIBE_EVENTS, params: PARAMS }, [
|
|
13
|
+
regPlugin(PLUGIN_NAME, { events: SUBSCRIBE_EVENTS, params: PARAMS }, [
|
|
14
|
+
CreditsController,
|
|
15
|
+
CreditsAccept,
|
|
16
|
+
CreditsHideOnControls,
|
|
17
|
+
CreditsHideOnState,
|
|
18
|
+
Credits,
|
|
19
|
+
CreditsView,
|
|
20
|
+
]);
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { ModuleControllerAccept } from "@vnejs/module.controller.accept";
|
|
2
|
+
|
|
3
|
+
import type { CreditsPluginConstants, CreditsPluginEvents, CreditsPluginParams, CreditsPluginSettings } from "../types.js";
|
|
4
|
+
import type { CreditsPluginState } from "../utils/credits.js";
|
|
5
|
+
|
|
6
|
+
export class CreditsAccept extends ModuleControllerAccept<
|
|
7
|
+
CreditsPluginEvents,
|
|
8
|
+
CreditsPluginConstants,
|
|
9
|
+
CreditsPluginSettings,
|
|
10
|
+
CreditsPluginParams,
|
|
11
|
+
CreditsPluginState
|
|
12
|
+
> {
|
|
13
|
+
name = "credits.controller.accept";
|
|
14
|
+
|
|
15
|
+
EVENT_SHOW = this.EVENTS.CREDITS.SHOW;
|
|
16
|
+
EVENT_HIDE = this.EVENTS.CREDITS.HIDE;
|
|
17
|
+
EVENT_ACCEPT = this.EVENTS.CREDITS.HIDE;
|
|
18
|
+
|
|
19
|
+
CONTROLS_ZINDEX = this.PARAMS.CREDITS.ZINDEX;
|
|
20
|
+
|
|
21
|
+
onAccept = () => undefined;
|
|
22
|
+
}
|
|
@@ -12,21 +12,13 @@ export class CreditsController extends ModuleController<
|
|
|
12
12
|
> {
|
|
13
13
|
name = "credits.controller";
|
|
14
14
|
|
|
15
|
-
onInteract = () => void this.emit(this.EVENTS.CREDITS.HIDE);
|
|
16
|
-
|
|
17
15
|
updateEvent = this.EVENTS.CREDITS.UPDATE;
|
|
18
|
-
controls = {
|
|
19
|
-
[this.CONST.CONTROLS.BUTTONS.ACCEPT]: this.onInteract,
|
|
20
|
-
[this.CONST.CONTROLS.BUTTONS.INTERACT]: this.onInteract,
|
|
21
|
-
[this.CONST.CONTROLS.BUTTONS.MENU]: this.onInteract,
|
|
22
|
-
};
|
|
16
|
+
controls = {};
|
|
23
17
|
controlsIndex = this.PARAMS.CREDITS.ZINDEX;
|
|
24
18
|
|
|
25
19
|
subscribe = () => {
|
|
26
20
|
this.on(this.EVENTS.CREDITS.SHOW, this.onShow);
|
|
27
21
|
this.on(this.EVENTS.CREDITS.HIDE, this.onHide);
|
|
28
|
-
|
|
29
|
-
this.on(this.EVENTS.STATE.CLEAR, this.onHide);
|
|
30
22
|
};
|
|
31
23
|
|
|
32
24
|
afterHide = () => void this.emitNext();
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { ModuleControllerHideOnControls } from "@vnejs/module.controller.hide.on.controls";
|
|
2
|
+
|
|
3
|
+
import type { CreditsPluginConstants, CreditsPluginEvents, CreditsPluginParams, CreditsPluginSettings } from "../types.js";
|
|
4
|
+
|
|
5
|
+
export class CreditsHideOnControls extends ModuleControllerHideOnControls<
|
|
6
|
+
CreditsPluginEvents,
|
|
7
|
+
CreditsPluginConstants,
|
|
8
|
+
CreditsPluginSettings,
|
|
9
|
+
CreditsPluginParams
|
|
10
|
+
> {
|
|
11
|
+
name = "credits.hide.controls";
|
|
12
|
+
|
|
13
|
+
EVENT_SHOW = this.EVENTS.CREDITS.SHOW;
|
|
14
|
+
EVENT_HIDE = this.EVENTS.CREDITS.HIDE;
|
|
15
|
+
|
|
16
|
+
CONTROLS_ZINDEX = this.PARAMS.CREDITS.ZINDEX;
|
|
17
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { ModuleControllerHideOnState } from "@vnejs/module.controller.hide.on.state";
|
|
2
|
+
|
|
3
|
+
import type { CreditsPluginConstants, CreditsPluginEvents, CreditsPluginParams, CreditsPluginSettings } from "../types.js";
|
|
4
|
+
|
|
5
|
+
export class CreditsHideOnState extends ModuleControllerHideOnState<
|
|
6
|
+
CreditsPluginEvents,
|
|
7
|
+
CreditsPluginConstants,
|
|
8
|
+
CreditsPluginSettings,
|
|
9
|
+
CreditsPluginParams
|
|
10
|
+
> {
|
|
11
|
+
name = "credits.hide.state";
|
|
12
|
+
|
|
13
|
+
EVENT_HIDE = this.EVENTS.CREDITS.HIDE;
|
|
14
|
+
}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { beforeEach, describe, expect, it } from "vitest";
|
|
2
|
+
|
|
3
|
+
import { spyEvent } from "@vnejs/test-utils";
|
|
4
|
+
|
|
5
|
+
import { CreditsAccept } from "../modules/accept.js";
|
|
6
|
+
import { CONTROLS_EVENTS, createCreditsTestModule, registerCreditsPluginVne, SUBSCRIBE_EVENTS } from "./setup.js";
|
|
7
|
+
|
|
8
|
+
describe("CreditsAccept", () => {
|
|
9
|
+
beforeEach(() => {
|
|
10
|
+
registerCreditsPluginVne();
|
|
11
|
+
});
|
|
12
|
+
|
|
13
|
+
it("SHOW pushes ACCEPT and INTERACT controls", async () => {
|
|
14
|
+
const { module, observer } = createCreditsTestModule(CreditsAccept);
|
|
15
|
+
const accept = module as CreditsAccept;
|
|
16
|
+
const push = spyEvent(observer, CONTROLS_EVENTS.PUSH);
|
|
17
|
+
|
|
18
|
+
await observer.emit(SUBSCRIBE_EVENTS.SHOW);
|
|
19
|
+
|
|
20
|
+
expect(push).toHaveBeenCalledExactlyOnceWith(
|
|
21
|
+
expect.objectContaining({
|
|
22
|
+
key: "credits.controller.accept",
|
|
23
|
+
checkNext: true,
|
|
24
|
+
index: accept.PARAMS.CREDITS.ZINDEX + 1,
|
|
25
|
+
}),
|
|
26
|
+
);
|
|
27
|
+
expect(push.mock.calls[0][0].controls).toHaveProperty(accept.CONST.CONTROLS.BUTTONS.ACCEPT);
|
|
28
|
+
expect(push.mock.calls[0][0].controls).toHaveProperty(accept.CONST.CONTROLS.BUTTONS.INTERACT);
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
it("HIDE pops ACCEPT controls", async () => {
|
|
32
|
+
const { observer } = createCreditsTestModule(CreditsAccept);
|
|
33
|
+
const pop = spyEvent(observer, CONTROLS_EVENTS.POP);
|
|
34
|
+
|
|
35
|
+
await observer.emit(SUBSCRIBE_EVENTS.HIDE);
|
|
36
|
+
|
|
37
|
+
expect(pop).toHaveBeenCalledExactlyOnceWith({ key: "credits.controller.accept" });
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
it("ACCEPT and INTERACT emit CREDITS.HIDE", async () => {
|
|
41
|
+
const { module, observer } = createCreditsTestModule(CreditsAccept);
|
|
42
|
+
const accept = module as CreditsAccept;
|
|
43
|
+
const hide = spyEvent(observer, SUBSCRIBE_EVENTS.HIDE);
|
|
44
|
+
|
|
45
|
+
accept.controls[accept.CONST.CONTROLS.BUTTONS.ACCEPT]();
|
|
46
|
+
accept.controls[accept.CONST.CONTROLS.BUTTONS.INTERACT]();
|
|
47
|
+
await Promise.resolve();
|
|
48
|
+
await Promise.resolve();
|
|
49
|
+
|
|
50
|
+
expect(hide).toHaveBeenCalledTimes(2);
|
|
51
|
+
});
|
|
52
|
+
});
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { beforeEach, describe, expect, it } from "vitest";
|
|
2
|
+
|
|
3
|
+
import { spyEvent } from "@vnejs/test-utils";
|
|
4
|
+
|
|
5
|
+
import { CreditsHideOnControls } from "../modules/hide.controls.js";
|
|
6
|
+
import { CONTROLS_EVENTS, createCreditsTestModule, registerCreditsPluginVne, SUBSCRIBE_EVENTS } from "./setup.js";
|
|
7
|
+
|
|
8
|
+
describe("CreditsHideOnControls", () => {
|
|
9
|
+
beforeEach(() => {
|
|
10
|
+
registerCreditsPluginVne();
|
|
11
|
+
});
|
|
12
|
+
|
|
13
|
+
it("SHOW pushes BACK, MENU and GAMEMENU controls", async () => {
|
|
14
|
+
const { module, observer } = createCreditsTestModule(CreditsHideOnControls);
|
|
15
|
+
const hide = module as CreditsHideOnControls;
|
|
16
|
+
const push = spyEvent(observer, CONTROLS_EVENTS.PUSH);
|
|
17
|
+
|
|
18
|
+
await observer.emit(SUBSCRIBE_EVENTS.SHOW);
|
|
19
|
+
|
|
20
|
+
expect(push).toHaveBeenCalledExactlyOnceWith(
|
|
21
|
+
expect.objectContaining({
|
|
22
|
+
key: "credits.hide.controls",
|
|
23
|
+
checkNext: true,
|
|
24
|
+
index: hide.PARAMS.CREDITS.ZINDEX + 1,
|
|
25
|
+
}),
|
|
26
|
+
);
|
|
27
|
+
expect(push.mock.calls[0][0].controls).toHaveProperty(hide.CONST.CONTROLS.BUTTONS.BACK);
|
|
28
|
+
expect(push.mock.calls[0][0].controls).toHaveProperty(hide.CONST.CONTROLS.BUTTONS.MENU);
|
|
29
|
+
expect(push.mock.calls[0][0].controls).toHaveProperty(hide.CONST.CONTROLS.BUTTONS.GAMEMENU);
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
it("HIDE pops hide.controls", async () => {
|
|
33
|
+
const { observer } = createCreditsTestModule(CreditsHideOnControls);
|
|
34
|
+
const pop = spyEvent(observer, CONTROLS_EVENTS.POP);
|
|
35
|
+
|
|
36
|
+
await observer.emit(SUBSCRIBE_EVENTS.HIDE);
|
|
37
|
+
|
|
38
|
+
expect(pop).toHaveBeenCalledExactlyOnceWith({ key: "credits.hide.controls" });
|
|
39
|
+
});
|
|
40
|
+
|
|
41
|
+
it("BACK, MENU and GAMEMENU emit CREDITS.HIDE", async () => {
|
|
42
|
+
const { module, observer } = createCreditsTestModule(CreditsHideOnControls);
|
|
43
|
+
const hide = module as CreditsHideOnControls;
|
|
44
|
+
const hideEvent = spyEvent(observer, SUBSCRIBE_EVENTS.HIDE);
|
|
45
|
+
|
|
46
|
+
hide.controls[hide.CONST.CONTROLS.BUTTONS.BACK]();
|
|
47
|
+
hide.controls[hide.CONST.CONTROLS.BUTTONS.MENU]();
|
|
48
|
+
hide.controls[hide.CONST.CONTROLS.BUTTONS.GAMEMENU]();
|
|
49
|
+
await Promise.resolve();
|
|
50
|
+
await Promise.resolve();
|
|
51
|
+
await Promise.resolve();
|
|
52
|
+
|
|
53
|
+
expect(hideEvent).toHaveBeenCalledTimes(3);
|
|
54
|
+
});
|
|
55
|
+
});
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { beforeEach, describe, expect, it } from "vitest";
|
|
2
|
+
|
|
3
|
+
import { SUBSCRIBE_EVENTS as STATE_EVENTS } from "@vnejs/contracts.core.state";
|
|
4
|
+
import { spyEvent } from "@vnejs/test-utils";
|
|
5
|
+
|
|
6
|
+
import { CreditsHideOnState } from "../modules/hide.state.js";
|
|
7
|
+
import { createCreditsTestModule, registerCreditsPluginVne, SUBSCRIBE_EVENTS } from "./setup.js";
|
|
8
|
+
|
|
9
|
+
describe("CreditsHideOnState", () => {
|
|
10
|
+
beforeEach(() => {
|
|
11
|
+
registerCreditsPluginVne();
|
|
12
|
+
});
|
|
13
|
+
|
|
14
|
+
it("STATE.SET and STATE.CLEAR emit HIDE with isForce", async () => {
|
|
15
|
+
const { observer } = createCreditsTestModule(CreditsHideOnState);
|
|
16
|
+
const hide = spyEvent(observer, SUBSCRIBE_EVENTS.HIDE);
|
|
17
|
+
|
|
18
|
+
await observer.emit(STATE_EVENTS.SET);
|
|
19
|
+
await observer.emit(STATE_EVENTS.CLEAR);
|
|
20
|
+
|
|
21
|
+
expect(hide).toHaveBeenCalledTimes(2);
|
|
22
|
+
expect(hide).toHaveBeenNthCalledWith(1, { isForce: true });
|
|
23
|
+
expect(hide).toHaveBeenNthCalledWith(2, { isForce: true });
|
|
24
|
+
});
|
|
25
|
+
});
|
package/src/tests/setup.ts
CHANGED