From bfe8d1d904849e4d6db350c9e8d623b51e20e0e4 Mon Sep 17 00:00:00 2001 From: Jacob Nguyen <76754747+jacoobes@users.noreply.github.com> Date: Sun, 12 Jan 2025 21:18:03 -0600 Subject: [PATCH] fix+regress --- src/handlers/event-utils.ts | 4 --- src/handlers/interaction.ts | 9 +++---- src/handlers/message.ts | 1 + src/handlers/presence.ts | 4 +-- src/handlers/ready.ts | 2 +- src/handlers/user-defined-events.ts | 3 +-- test/core/presence.test.ts | 39 +++++++++++++++++++++++++++-- test/setup/setup-tests.ts | 8 ++++++ 8 files changed, 53 insertions(+), 17 deletions(-) diff --git a/src/handlers/event-utils.ts b/src/handlers/event-utils.ts index 969618f..ba7ddb4 100644 --- a/src/handlers/event-utils.ts +++ b/src/handlers/event-utils.ts @@ -38,19 +38,15 @@ export async function callInitPlugins(_module: Module, deps: Dependencies, emit? } export function executeModule(emitter: Emitter, { module, args } : ExecutePayload) { - //do not await. this will block sern const moduleCalled = wrapAsync(async () => { - console.log(module) return module.execute(...args); }) moduleCalled .then(() => { - console.log('success execute') emitter.emit('module.activate', resultPayload('success', module)) }) .catch(err => { - console.log('err', err) if(!emitter.emit('error', resultPayload('failure', module, err))) { console.error(err) } diff --git a/src/handlers/interaction.ts b/src/handlers/interaction.ts index 0db538e..a1f38f4 100644 --- a/src/handlers/interaction.ts +++ b/src/handlers/interaction.ts @@ -30,16 +30,13 @@ export function interactionHandler(deps: UnpackedDependencies, defaultPrefix?: s let payload; if(isAutocomplete(event)) { //@ts-ignore stfu - const option = treeSearch(event, module.options); - //@ts-ignore stfu - const { command } = option; + const { command } = treeSearch(event, module.options); payload= { module: command as Module, //autocomplete is not a true "module" warning cast! args: [event, createSDT(command, deps, params)] }; } else if(isCommand(event)) { - payload={ module, - args: [Context.wrap(event, defaultPrefix), createSDT(module, deps, params)] }; + payload= { module, args: [Context.wrap(event, defaultPrefix), createSDT(module, deps, params)] }; } else if (isModal(event) || isMessageComponent(event)) { - payload={ module, args: [event, createSDT(module, deps, params)] } + payload= { module, args: [event, createSDT(module, deps, params)] } } else { throw Error("Unknown interaction while handling in interactionCreate event " + event) } diff --git a/src/handlers/message.ts b/src/handlers/message.ts index 4d241f6..bb86207 100644 --- a/src/handlers/message.ts +++ b/src/handlers/message.ts @@ -44,6 +44,7 @@ export function messageHandler (deps: UnpackedDependencies, defaultPrefix?: stri emitter.emit('module.activate', resultPayload('failure', module, result.error ?? SernError.PluginFailure)) return } + //@ts-ignore payload.args[1].state = result.value diff --git a/src/handlers/presence.ts b/src/handlers/presence.ts index 5b4ca3c..18f740e 100644 --- a/src/handlers/presence.ts +++ b/src/handlers/presence.ts @@ -80,9 +80,9 @@ const parseConfig = async (conf: Promise, setPresence: SetPrese }); } } - + // No repeat configuration, just return the result - return result; + return setPresence(result); }; export const presenceHandler = async (path: string, setPresence: SetPresence) => { diff --git a/src/handlers/ready.ts b/src/handlers/ready.ts index 662b1bd..4ae4fc4 100644 --- a/src/handlers/ready.ts +++ b/src/handlers/ready.ts @@ -3,7 +3,7 @@ import { once } from 'node:events'; import { resultPayload } from '../core/functions'; import { CommandType } from '../core/structures/enums'; import { Module } from '../types/core-modules'; -import { UnpackedDependencies } from '../types/utility'; +import type { UnpackedDependencies } from '../types/utility'; import { callInitPlugins } from './event-utils'; export default async function(dir: string, deps : UnpackedDependencies) { diff --git a/src/handlers/user-defined-events.ts b/src/handlers/user-defined-events.ts index be31a95..41a4cff 100644 --- a/src/handlers/user-defined-events.ts +++ b/src/handlers/user-defined-events.ts @@ -6,7 +6,7 @@ import type { UnpackedDependencies } from '../types/utility'; import type { Emitter } from '../core/interfaces'; import { inspect } from 'util' import { resultPayload } from '../core/functions'; -import { Wrapper } from '../' +import type { Wrapper } from '../' export default async function(deps: UnpackedDependencies, wrapper: Wrapper) { const eventModules: EventModule[] = []; @@ -52,7 +52,6 @@ export default async function(deps: UnpackedDependencies, wrapper: Wrapper) { logger?.error({ message: inspect(err) }); } } - } source.addListener(String(module.name!), execute) } diff --git a/test/core/presence.test.ts b/test/core/presence.test.ts index f9a590b..19f9d01 100644 --- a/test/core/presence.test.ts +++ b/test/core/presence.test.ts @@ -1,6 +1,7 @@ -import { describe, expect, it, vi } from 'vitest'; +import { beforeEach, describe, expect, it, vi } from 'vitest'; import { Presence } from '../../src'; - +import * as Files from '../../src/core/module-loading' +import { presenceHandler } from '../../src/handlers/presence' // Example test suite for the module function describe('module function', () => { @@ -54,4 +55,38 @@ describe('of function', () => { activities: [{ name: 'Another Test Activity' }], }); }); + + +}) + + +describe('Presence module execution', () => { + const mockExecuteResult = Presence.of({ + status: 'online', + }).once(); + + const mockModule = Presence.module({ + inject: [ '@sern/client'], + execute: vi.fn().mockReturnValue(mockExecuteResult) + }) + beforeEach(() => { + vi.clearAllMocks(); + // Mock Files.importModule + vi.spyOn(Files, 'importModule').mockResolvedValue({ + module: mockModule + }); + + + + }); + it('should set presence once.', async () => { + const setPresenceMock = vi.fn(); + const mockPath = '/path/to/presence/config'; + + await presenceHandler(mockPath, setPresenceMock); + + expect(Files.importModule).toHaveBeenCalledWith(mockPath); + expect(setPresenceMock).toHaveBeenCalledOnce(); + }) + }) diff --git a/test/setup/setup-tests.ts b/test/setup/setup-tests.ts index 7cb8684..877ebb6 100644 --- a/test/setup/setup-tests.ts +++ b/test/setup/setup-tests.ts @@ -1,4 +1,6 @@ import { vi } from 'vitest' +import { makeDependencies } from '../../src'; +import { Client } from 'discord.js'; vi.mock('discord.js', async (importOriginal) => { const mod = await importOriginal() @@ -44,3 +46,9 @@ vi.mock('discord.js', async (importOriginal) => { ChatInputCommandInteraction: vi.fn() }; }); + +await makeDependencies(({ add }) => { + add('@sern/client', { }) +}) + +