mirror of
https://github.com/sern-handler/handler
synced 2026-06-06 01:16:55 +00:00
* step 1 * Refactorings * command modules do not depend on anything but itself * tearing it up * Remove module store, manager, and Intializable type * consolidate interfaces in single file * consolidate default services in single file * TEAR IT UP * fix text compile * the end of sern init?? * Presence namespaced types removed * internal namespace * clean up dependencies * fix test * fix circular dependency * still broken but progress * remove barrel for core/structs * reffactor * refactor allat * more refactoring * prototyping linking static handler * cleanup tests, codegen, and importing handler * some refactor * generify partition * for now copy paste new ioc system * removeiti * fdsfD * ensure container is init'd * fix absPath gen * working on bun compat * refactor and clean up and reenter v3 module loading * dsfsd * refactor, add cron types, reinstante module loader * ready handler revamped so much cleaner * fdssdf * refactor deps list * add more tests, polish up ioc * up to speed with event modules * i think cron works * cron works now, poc * ksdjkldsfld * updating ioc api, experimenting with cron * save b4 thunder and lightning * plugin data reduction & args changes * freeze module after plugins, updateModule, and more * simplify plugin args and prepare for reduction among plugins * add deps to plugin calls and execute * plugin system loking better, tbd type * porg * initplugins inject deps, inconspicuos * fix faiklling test * fix initPlugins not reassigning * parsingParams kinda * proper mapping * dynamic customIds * handling customId params working * testing n shi * inlineinignsd * consolidate fmt * once on eventModules * refact,simplf * readd vitest and Asset fn * fix typings * assets fn complete * more intuitive context.options and Asset typings * add init hooks not firing * -file,-updateModule,publish? * fix: ioc deps not created correctly * documentation, add json for Asset * remove asset * ss * finish ioc transition * nvm, now i did * s * update locals api, docs, tests * fix tests * fix up tests and cleanup * fix * Update src/core/functions.ts Co-authored-by: Evo <85353424+EvolutionX-10@users.noreply.github.com> * better documentation * temp fix * namespace presence types again * revising cron modules and better error messages * scheduler ids * more descriptive errors * refactor to not type leak and job cancellation * refactor n better signatures for task scheduler * documentation * fix swap not accepting functions * change task signature --------- Co-authored-by: Evo <85353424+EvolutionX-10@users.noreply.github.com>
136 lines
4.0 KiB
TypeScript
136 lines
4.0 KiB
TypeScript
//@ts-nocheck
|
|
import { expect, test, vi } from 'vitest'
|
|
import { CommandType } from '../../src/core/structures/enums';
|
|
|
|
import * as Id from '../../src/core/id'
|
|
import { ButtonInteraction, ModalSubmitInteraction } from 'discord.js';
|
|
vi.mock('discord.js', async (importOriginal) => {
|
|
const mod = await importOriginal()
|
|
const ModalSubmitInteraction = class {
|
|
customId;
|
|
type = 5;
|
|
isModalSubmit = vi.fn();
|
|
constructor(customId) {
|
|
this.customId = customId;
|
|
}
|
|
};
|
|
const ButtonInteraction = class {
|
|
customId;
|
|
type = 3;
|
|
componentType = 2;
|
|
isButton = vi.fn();
|
|
constructor(customId) {
|
|
this.customId = customId;
|
|
}
|
|
};
|
|
const AutocompleteInteraction = class {
|
|
type = 4;
|
|
option: string;
|
|
constructor(s: string) {
|
|
this.option = s;
|
|
}
|
|
options = {
|
|
getFocused: vi.fn(),
|
|
getSubcommand: vi.fn(),
|
|
};
|
|
};
|
|
|
|
return {
|
|
Collection: mod.Collection,
|
|
ComponentType: mod.ComponentType,
|
|
InteractionType: mod.InteractionType,
|
|
ApplicationCommandOptionType: mod.ApplicationCommandOptionType,
|
|
ApplicationCommandType: mod.ApplicationCommandType,
|
|
ModalSubmitInteraction,
|
|
ButtonInteraction,
|
|
AutocompleteInteraction,
|
|
};
|
|
});
|
|
test('id -> Text', () => {
|
|
expect(Id.create("ping", CommandType.Text)).toBe("ping_T")
|
|
})
|
|
|
|
test('id -> Both', () => {
|
|
expect(Id.create("ping", CommandType.Both)).toBe("ping_B")
|
|
})
|
|
|
|
test('id -> CtxMsg', () => {
|
|
expect(Id.create("ping", CommandType.CtxMsg)).toBe("ping_A3")
|
|
})
|
|
test('id -> CtxUsr', () => {
|
|
expect(Id.create("ping", CommandType.CtxUser)).toBe("ping_A2")
|
|
})
|
|
test('id -> Modal', () => {
|
|
expect(Id.create("my-modal", CommandType.Modal)).toBe("my-modal_M");
|
|
})
|
|
|
|
test('id -> Button', () => {
|
|
expect(Id.create("my-button", CommandType.Button)).toBe("my-button_C2");
|
|
})
|
|
|
|
test('id -> Slash', () => {
|
|
expect(Id.create("myslash", CommandType.Slash)).toBe("myslash_A1");
|
|
})
|
|
|
|
test('id -> StringSelect', () => {
|
|
expect(Id.create("mystringselect", CommandType.StringSelect)).toBe("mystringselect_C3");
|
|
})
|
|
|
|
test('id -> UserSelect', () => {
|
|
expect(Id.create("myuserselect", CommandType.UserSelect)).toBe("myuserselect_C5");
|
|
})
|
|
|
|
test('id -> RoleSelect', () => {
|
|
expect(Id.create("myroleselect", CommandType.RoleSelect)).toBe("myroleselect_C6");
|
|
})
|
|
|
|
test('id -> MentionSelect', () => {
|
|
expect(Id.create("mymentionselect", CommandType.MentionableSelect)).toBe("mymentionselect_C7");
|
|
})
|
|
|
|
test('id -> ChannelSelect', () => {
|
|
const modal = Id.create("mychannelselect", CommandType.ChannelSelect)
|
|
expect(modal).toBe("mychannelselect_C8");
|
|
})
|
|
|
|
test('id reconstruct button', () => {
|
|
const idload = Id.reconstruct(new ButtonInteraction("btn"))
|
|
expect(idload[0].id).toBe("btn_C2")
|
|
})
|
|
|
|
test('id reconstruct button with params', () => {
|
|
const idload = Id.reconstruct(new ButtonInteraction("btn/asdf"))
|
|
expect(idload[0].id).toBe("btn_C2")
|
|
expect(idload[0].params).toBe("asdf")
|
|
})
|
|
test('id reconstruct modal with params', () => {
|
|
const idload = Id.reconstruct(new ModalSubmitInteraction("btn/asdf"))
|
|
expect(idload[0].id).toBe("btn_M")
|
|
expect(idload[0].params).toBe("asdf")
|
|
})
|
|
test('id reconstruct modal', () => {
|
|
const idload = Id.reconstruct(new ModalSubmitInteraction("btn"))
|
|
expect(idload[0].id).toBe("btn_M")
|
|
expect(idload[0].params).toBe(undefined)
|
|
})
|
|
test('id reconstruct button with empty params', () => {
|
|
const idload = Id.reconstruct(new ButtonInteraction("btn/"))
|
|
expect(idload[0].id).toBe("btn_C2")
|
|
expect(idload[0].params).toBe("")
|
|
})
|
|
test('id reconstruct with multiple slashes', () => {
|
|
const idload = Id.reconstruct(new ButtonInteraction("btn//"))
|
|
expect(idload[0].id).toBe("btn_C2")
|
|
expect(idload[0].params).toBe("/")
|
|
})
|
|
|
|
|
|
test('id reconstruct button', () => {
|
|
const idload = Id.reconstruct(new ButtonInteraction("btn"))
|
|
expect(idload[0].id).toBe("btn_C2")
|
|
expect(idload[0].params).toBe(undefined)
|
|
})
|
|
|
|
|
|
|