@vnejs/plugins.views.screens.credits 0.1.18 → 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 +24 -18
- 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.1
|
|
3
|
+
"version": "0.2.1",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -30,26 +30,32 @@
|
|
|
30
30
|
"author": "",
|
|
31
31
|
"license": "ISC",
|
|
32
32
|
"dependencies": {
|
|
33
|
-
"@vnejs/contracts.views.screens.credits": "~0.
|
|
33
|
+
"@vnejs/contracts.views.screens.credits": "~0.2.0"
|
|
34
34
|
},
|
|
35
35
|
"peerDependencies": {
|
|
36
|
-
"@vnejs/helpers": "~0.
|
|
37
|
-
"@vnejs/module.core": "~0.
|
|
38
|
-
"@vnejs/module.components": "~0.
|
|
39
|
-
"@vnejs/
|
|
40
|
-
"@vnejs/
|
|
41
|
-
"@vnejs/
|
|
36
|
+
"@vnejs/helpers": "~0.2.0",
|
|
37
|
+
"@vnejs/module.core": "~0.2.0",
|
|
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",
|
|
42
|
+
"@vnejs/contracts.controls": "~0.2.0",
|
|
43
|
+
"@vnejs/shared": "~0.2.0",
|
|
44
|
+
"@vnejs/uis.react": "~0.2.0"
|
|
42
45
|
},
|
|
43
46
|
"devDependencies": {
|
|
44
|
-
"@vnejs/configs.ts-common": "~0.
|
|
45
|
-
"@vnejs/configs.vitest": "~0.
|
|
46
|
-
"@vnejs/test-utils": "~0.
|
|
47
|
-
"@vnejs/contracts.controls": "~0.
|
|
48
|
-
"@vnejs/contracts.views.screens.credits": "~0.
|
|
49
|
-
"@vnejs/helpers": "~0.
|
|
50
|
-
"@vnejs/module.core": "~0.
|
|
51
|
-
"@vnejs/module.components": "~0.
|
|
52
|
-
"@vnejs/
|
|
53
|
-
"@vnejs/
|
|
47
|
+
"@vnejs/configs.ts-common": "~0.2.0",
|
|
48
|
+
"@vnejs/configs.vitest": "~0.2.0",
|
|
49
|
+
"@vnejs/test-utils": "~0.2.0",
|
|
50
|
+
"@vnejs/contracts.controls": "~0.2.0",
|
|
51
|
+
"@vnejs/contracts.views.screens.credits": "~0.2.0",
|
|
52
|
+
"@vnejs/helpers": "~0.2.0",
|
|
53
|
+
"@vnejs/module.core": "~0.2.0",
|
|
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",
|
|
58
|
+
"@vnejs/shared": "~0.2.0",
|
|
59
|
+
"@vnejs/uis.react": "~0.2.0"
|
|
54
60
|
}
|
|
55
61
|
}
|
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