@vnejs/plugins.views.screens.credits 0.2.0 → 0.2.2
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 +9 -0
- package/src/modules/view.ts +1 -7
- 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 +2 -7
- package/src/view/index.tsx +1 -7
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.2",
|
|
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,9 @@
|
|
|
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<CreditsPluginEvents, CreditsPluginConstants, CreditsPluginSettings, CreditsPluginParams> {
|
|
6
|
+
name = "credits.hide.state";
|
|
7
|
+
|
|
8
|
+
EVENT_HIDE = this.EVENTS.CREDITS.HIDE;
|
|
9
|
+
}
|
package/src/modules/view.ts
CHANGED
|
@@ -4,13 +4,7 @@ import { render } from "../view/index.js";
|
|
|
4
4
|
import type { CreditsPluginConstants, CreditsPluginEvents, CreditsPluginParams, CreditsPluginSettings } from "../types.js";
|
|
5
5
|
import type { CreditsPluginState } from "../utils/credits.js";
|
|
6
6
|
|
|
7
|
-
export class CreditsView extends ModuleView<
|
|
8
|
-
CreditsPluginEvents,
|
|
9
|
-
CreditsPluginConstants,
|
|
10
|
-
CreditsPluginSettings,
|
|
11
|
-
CreditsPluginParams,
|
|
12
|
-
CreditsPluginState
|
|
13
|
-
> {
|
|
7
|
+
export class CreditsView extends ModuleView<CreditsPluginEvents, CreditsPluginConstants, CreditsPluginSettings, CreditsPluginParams, CreditsPluginState> {
|
|
14
8
|
name = "credits.view";
|
|
15
9
|
|
|
16
10
|
animationTime = this.PARAMS.CREDITS.TRANSITION;
|
|
@@ -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
|
@@ -1,11 +1,6 @@
|
|
|
1
1
|
import { CONSTANTS as CONTROLS_CONST, PLUGIN_NAME as CONTROLS, SUBSCRIBE_EVENTS as CONTROLS_EVENTS } from "@vnejs/contracts.controls";
|
|
2
2
|
import { PARAMS, PLUGIN_NAME, SUBSCRIBE_EVENTS } from "@vnejs/contracts.views.screens.credits";
|
|
3
|
-
import {
|
|
4
|
-
createTestModule as baseCreateTestModule,
|
|
5
|
-
registerCoreVne,
|
|
6
|
-
registerVnePlugin,
|
|
7
|
-
stubSilentEvent,
|
|
8
|
-
} from "@vnejs/test-utils";
|
|
3
|
+
import { createTestModule as baseCreateTestModule, registerCoreVne, registerVnePlugin, stubSilentEvent } from "@vnejs/test-utils";
|
|
9
4
|
|
|
10
5
|
export const registerCreditsPluginVne = () => {
|
|
11
6
|
registerCoreVne();
|
|
@@ -32,4 +27,4 @@ export const createCreditsTestModule = <T extends Parameters<typeof baseCreateTe
|
|
|
32
27
|
return result;
|
|
33
28
|
};
|
|
34
29
|
|
|
35
|
-
export { SUBSCRIBE_EVENTS, PARAMS, PLUGIN_NAME };
|
|
30
|
+
export { SUBSCRIBE_EVENTS, PARAMS, PLUGIN_NAME, CONTROLS_EVENTS };
|
package/src/view/index.tsx
CHANGED
|
@@ -5,13 +5,7 @@ import { Flex, Screen, ScrollContent, Text, createRenderFunc, useCallback, useMe
|
|
|
5
5
|
import type { CreditsPluginConstants, CreditsPluginEvents, CreditsPluginParams, CreditsPluginSettings } from "../types.js";
|
|
6
6
|
import type { CreditsPluginState } from "../utils/credits.js";
|
|
7
7
|
|
|
8
|
-
type CreditsComponentProps = ReactComponentProps<
|
|
9
|
-
CreditsPluginEvents,
|
|
10
|
-
CreditsPluginConstants,
|
|
11
|
-
CreditsPluginSettings,
|
|
12
|
-
CreditsPluginParams,
|
|
13
|
-
CreditsPluginState
|
|
14
|
-
>;
|
|
8
|
+
type CreditsComponentProps = ReactComponentProps<CreditsPluginEvents, CreditsPluginConstants, CreditsPluginSettings, CreditsPluginParams, CreditsPluginState>;
|
|
15
9
|
|
|
16
10
|
const renderLine = ({ text, props }: { text: string; props: Record<string, unknown> }, i: number) => (
|
|
17
11
|
<Text
|