chore: Code changes & formatting and linting (#3552)

* Do some code changes & run prettier and eslint

* Fix test:test-type script

* Apply code review suggestions

* update heartbeat interval & add a reason for the specific value

* Fix husky error

* Update to TS 5.5

And use ${configDir}

* Fix test.json tsconfig base

---------

Co-authored-by: Skillz4Killz <23035000+Skillz4Killz@users.noreply.github.com>
This commit is contained in:
Fleny
2024-07-08 15:11:41 -05:00
committed by GitHub
co-authored by Skillz4Killz
parent 2f89d4da30
commit 97a8016041
83 changed files with 370 additions and 526 deletions
-8
View File
@@ -1,8 +0,0 @@
{
"extends": "tsconfig/base.json",
"compilerOptions": {
"outDir": "./dist"
},
"include": ["./src/**/*.ts", "./src/**/*.tsx"],
"exclude": ["node_modules", "dist", "test", "tests"]
}
@@ -22,4 +22,4 @@
"noInterop": false
},
"sourceMaps": "inline"
}
}
@@ -1,10 +1,9 @@
{
"name": "benchmark",
"name": "benchmarks",
"version": "0.0.0",
"main": "./dist/esm/index.js",
"main": "./dist/index.js",
"exports": {
"import": "./dist/esm/index.js",
"require": "./dist/cjs/index.cjs",
"import": "./dist/index.js",
"types": "./dist/types/index.d.ts"
},
"types": "./dist/types/index.d.ts",
@@ -29,19 +28,17 @@
"@discordeno/rest": "19.0.0-alpha.1",
"@discordeno/types": "19.0.0-beta.1",
"@discordeno/utils": "19.0.0-beta.1",
"benchmark": "^2.1.4",
"microtime": "^3.1.1",
"node-fetch": "^3.3.2"
"benchmark": "^2.1.4"
},
"devDependencies": {
"@swc/cli": "^0.3.9",
"@swc/core": "^1.4.2",
"@types/benchmark": "^2.1.5",
"@types/node": "^20.11.25",
"@types/node": "^20.14.7",
"eslint": "^8.57.0",
"eslint-config-discordeno": "*",
"ts-node": "^10.9.2",
"tsconfig": "*",
"typescript": "5.4.5"
"typescript": "^5.5.2"
}
}
@@ -9,7 +9,7 @@ events.forEach((event) => {
})
suite.add(`Camelize 1 event`, () => {
snakelize(events[1])
camelize(events[1])
})
suite.add(`Snakelize 1 event`, () => {
@@ -1,4 +1,4 @@
import { createBot, type Bot } from '@discordeno/bot'
import { createBot, snakeToCamelCase, type Bot } from '@discordeno/bot'
import { events as dbEvents } from '../utils/db.js'
import { memoryBenchmark } from '../utils/memoryBenchmark.js'
@@ -27,12 +27,8 @@ await memoryBenchmark(
}),
),
(bot, event) => {
// @ts-expect-error it works
bot.events[
event.payload.t!.toLowerCase().replace(/_([a-z])/g, (g) => {
return g[1].toUpperCase()
})
]?.(event.payload.d, {})
const eventName = snakeToCamelCase(event.payload.t!)
bot.events[eventName as keyof typeof bot.events]?.(event.payload.d as never, {})
},
dbEvents.filter((event) => event.payload.t),
)
@@ -95,11 +95,11 @@ await memoryBenchmark(
'[transformer] message cache check',
() => ({
cache: [] as any[],
}), // function reutrn a new instance of object wanted to test with
}), // function returns a new instance of object wanted to test with
(object, event: DiscordMessage) => object.cache.push(bot.transformers.message(bot, event)),
// function specify how to add event to the object/ run the object
[...new Array(MESSAGE_SIZE)].map(
(i) =>
() =>
({
activity: {
party_id: 'party_id',
@@ -4,8 +4,6 @@ const benchmarkData = await fetch(`https://raw.githubusercontent.com/discordeno/
.then(async (res) => await res.text())
.then((text) => JSON.parse(text.slice(24)))
// eslint-disable-next-line @typescript-eslint/no-unused-vars, no-unused-vars
// const commitSha = await fs.readFile('./sha', 'utf-8')
const results = JSON.parse(await fs.readFile('./data.json', 'utf-8'))
interface BenchmarksData {
@@ -1,6 +1,5 @@
/* eslint-disable @typescript-eslint/no-unsafe-argument */
import type { DiscordGatewayPayload } from '@discordeno/types'
import fetch from 'node-fetch'
import fs from 'node:fs/promises'
export const events: Array<{
+3
View File
@@ -0,0 +1,3 @@
{
"extends": "tsconfig/base.json"
}
+1 -1
View File
@@ -22,4 +22,4 @@
"noInterop": false
},
"sourceMaps": "inline"
}
}
+2 -2
View File
@@ -26,7 +26,7 @@
"test:e2e": "c8 --r lcov mocha --no-warnings --jobs 1 --t 30000 'tests/e2e/**/*.spec.ts' && node ../../scripts/coveragePathFixing.js rest",
"test:unit:watch": "mocha --no-warnings --watch --parallel 'tests/unit/**/*.spec.ts'",
"test:type": "tsc --noEmit",
"test:test-type": "tsc --project tsconfig.test.json"
"test:test-type": "tsc --project tests/tsconfig.json"
},
"dependencies": {
"@discordeno/gateway": "19.0.0-alpha.1",
@@ -49,6 +49,6 @@
"sinon": "^17.0.1",
"ts-node": "^10.9.2",
"tsconfig": "*",
"typescript": "5.4.5"
"typescript": "^5.5.2"
}
}
+4 -7
View File
@@ -1,5 +1,5 @@
import { Intents } from '@discordeno/types'
import { delay, logger } from '@discordeno/utils'
import { delay, logger, snakeToCamelCase } from '@discordeno/utils'
import { use as chaiUse } from 'chai'
import chaiAsPromised from 'chai-as-promised'
import { describe, it } from 'mocha'
@@ -23,12 +23,9 @@ describe('[Bot] Delete any guild owned guilds', () => {
// RUN DISPATCH CHECK
await bot.events.dispatchRequirements?.(data, shard.id)
bot.events[
data.t.toLowerCase().replace(/_([a-z])/g, function (g) {
return g[1].toUpperCase()
}) as keyof EventHandlers
// @ts-expect-error as any gets removed by linter
]?.(data.d, shard)
const eventName = snakeToCamelCase(data.t)
bot.events[eventName as keyof EventHandlers]?.(data.d as never, shard as never)
},
},
intents: Intents.Guilds,
+3
View File
@@ -0,0 +1,3 @@
{
"extends": "tsconfig/test.json"
}
+1 -6
View File
@@ -1,8 +1,3 @@
{
"extends": "tsconfig/base.json",
"compilerOptions": {
"outDir": "./dist"
},
"include": ["./src/**/*.ts", "./src/**/*.tsx"],
"exclude": ["node_modules", "dist", "test", "tests"]
"extends": "tsconfig/base.json"
}
-5
View File
@@ -1,5 +0,0 @@
{
"extends": "tsconfig/test.json",
"include": ["tests"],
"exclude": ["node_modules", "dist", "src"]
}
+1 -1
View File
@@ -22,4 +22,4 @@
"noInterop": false
},
"sourceMaps": "inline"
}
}
+2 -2
View File
@@ -26,7 +26,7 @@
"test:deno-unit": "swc --strip-leading-paths tests --delete-dir-on-start --out-dir denoTestsDist && node ../../scripts/fixDenoTestExtension.js && deno test -A --import-map ../../denoImportMap.json denoTestsDist",
"test:unit:watch": "mocha --no-warnings --watch --parallel 'tests/**/*.spec.ts'",
"test:type": "tsc --noEmit",
"test:test-type": "tsc --project tsconfig.test.json"
"test:test-type": "tsc --project tests/tsconfig.json"
},
"dependencies": {
"@discordeno/bot": "19.0.0-beta.1",
@@ -51,6 +51,6 @@
"sinon": "^17.0.1",
"ts-node": "^10.9.2",
"tsconfig": "*",
"typescript": "5.4.5"
"typescript": "^5.5.2"
}
}
+3
View File
@@ -0,0 +1,3 @@
{
"extends": "tsconfig/test.json"
}
+1 -6
View File
@@ -1,8 +1,3 @@
{
"extends": "tsconfig/base.json",
"compilerOptions": {
"outDir": "./dist"
},
"include": ["./src/**/*.ts", "./src/**/*.tsx"],
"exclude": ["node_modules", "dist", "test", "tests"]
"extends": "tsconfig/base.json"
}
-5
View File
@@ -1,5 +0,0 @@
{
"extends": "tsconfig/test.json",
"include": ["tests"],
"exclude": ["node_modules", "dist", "src"]
}
@@ -15,7 +15,7 @@
"eslint-plugin-promise": "^6.1.1",
"eslint-plugin-require-extensions": "^0.1.3",
"prettier": "^3.2.5",
"typescript": "5.4.5"
"typescript": "^5.5.2"
},
"publishConfig": {
"access": "public"
+1 -1
View File
@@ -22,4 +22,4 @@
"noInterop": false
},
"sourceMaps": "inline"
}
}
+2 -2
View File
@@ -26,7 +26,7 @@
"test:unit:watch": "mocha --no-warnings --watch --parallel 'tests/unit/**/*.spec.ts'",
"test:integration": "c8 --r lcov mocha --no-warnings 'tests/integration/**/*.spec.ts' && node ../../scripts/coveragePathFixing.js gateway",
"test:type": "tsc --noEmit",
"test:test-type": "tsc --project tsconfig.test.json"
"test:test-type": "tsc --project tests/tsconfig.json"
},
"dependencies": {
"@discordeno/types": "19.0.0-beta.1",
@@ -49,7 +49,7 @@
"sinon": "^17.0.1",
"ts-node": "^10.9.2",
"tsconfig": "*",
"typescript": "5.4.5",
"typescript": "^5.5.2",
"uWebSockets.js": "https://github.com/uNetworking/uWebSockets.js.git#commit=42c9c0d5d31f46ca4115dc75672b0037ec970f28"
}
}
@@ -1,10 +1,17 @@
import { Intents } from '@discordeno/types'
import uWS from 'uWebSockets.js'
import { createGatewayManager, ShardSocketCloseCodes } from '../../src/index.js'
import { ShardSocketCloseCodes, createGatewayManager, type GatewayManager } from '../../src/index.js'
// eslint-disable-next-line @typescript-eslint/explicit-function-return-type
const createGatewayManagerWithPort = (port: number) =>
createGatewayManager({
/**
* This value needs to be AT LEAST `1017`
*
* The reason for this is because the calculation in Shard.calculateSafeRequests will return 0 not allowing any sort of message to the websocket server.
* Discord uses a way higher number for this value, but during this test we lower it since it would be annoying and useless make the test last 40+ seconds to test the heartbeat, but to make this work it needs to be at least 1017 so that calculateSafeRequests return 2 allowing for the shard to send messages.
*/
const heartbeatInterval = 1050
function createGatewayManagerWithPort(port: number): GatewayManager {
return createGatewayManager({
connection: {
url: `ws://localhost:${port}`,
shards: 1,
@@ -20,22 +27,22 @@ const createGatewayManagerWithPort = (port: number) =>
intents: Intents.Guilds,
events: {},
})
}
// eslint-disable-next-line @typescript-eslint/explicit-function-return-type
const createUws = async (options: {
async function createUws(options: {
onOpen?: () => any
onMessage?: (message: any) => any
onClose?: (code: number, message: string) => any
closing?: boolean
}) => {
}): Promise<{ port: number; uwsToken: uWS.us_listen_socket }> {
options.onOpen ??= () => {}
options.onMessage ??= (message: any) => {}
options.onClose ??= (code: number, message: string) => {}
options.closing ??= false
return await new Promise<{ port: number; uwsToken: any }>((resolve, reject) => {
return await new Promise<{ port: number; uwsToken: uWS.us_listen_socket }>((resolve, reject) => {
let port = 0
let uwsToken = 0
uWS
.App()
.ws('/*', {
@@ -51,7 +58,7 @@ const createUws = async (options: {
JSON.stringify({
op: 10,
d: {
heartbeat_interval: 1017,
heartbeat_interval: heartbeatInterval,
},
}),
)
@@ -118,10 +125,13 @@ const createUws = async (options: {
if (!token) {
reject(new Error())
}
// retrieve listening port
uwsToken = token
port = uWS.us_socket_local_port(token)
resolve({ port, uwsToken })
port = uWS.us_socket_local_port(token as uWS.us_listen_socket)
resolve({
port,
uwsToken: token,
})
})
})
}
@@ -146,7 +156,7 @@ describe('gateway', () => {
let resolveHeartbeat: () => void
let resolveConnected: () => void
const connected = new Promise<void>((resolve) => (resolveConnected = resolve))
const Heartbeated = new Promise<void>((resolve) => (resolveHeartbeat = resolve))
const heartbeated = new Promise<void>((resolve) => (resolveHeartbeat = resolve))
const uwsOptions = {
onOpen: resolveConnected!,
onMessage: (message: any) => {
@@ -159,10 +169,12 @@ describe('gateway', () => {
const gateway = createGatewayManagerWithPort(port)
await gateway.spawnShards()
await connected
const timeout = setTimeout(() => {
throw new Error('Not heartbeat in time')
}, 1017)
await Heartbeated
}, heartbeatInterval)
await heartbeated
clearTimeout(timeout)
uwsOptions.closing = true
await gateway.shutdown(ShardSocketCloseCodes.Shutdown, 'User requested bot stop')
+3
View File
@@ -0,0 +1,3 @@
{
"extends": "tsconfig/test.json"
}
@@ -1 +0,0 @@
export {}
+1 -6
View File
@@ -1,8 +1,3 @@
{
"extends": "tsconfig/base.json",
"compilerOptions": {
"outDir": "./dist"
},
"include": ["./src/**/*.ts", "./src/**/*.tsx"],
"exclude": ["node_modules", "dist", "test", "tests"]
"extends": "tsconfig/base.json"
}
-5
View File
@@ -1,5 +0,0 @@
{
"extends": "tsconfig/test.json",
"include": ["tests"],
"exclude": ["node_modules", "dist", "src"]
}
+1 -1
View File
@@ -22,4 +22,4 @@
"noInterop": false
},
"sourceMaps": "inline"
}
}
+4 -5
View File
@@ -27,12 +27,11 @@
"test:e2e": "c8 --r lcov mocha --exit --no-warnings --jobs 1 --t 30000 'tests/e2e/**/*.spec.ts' && node ../../scripts/coveragePathFixing.js rest",
"test:unit:watch": "mocha --no-warnings --watch --parallel 'tests/unit/**/*.spec.ts'",
"test:type": "tsc --noEmit",
"test:test-type": "tsc --project tsconfig.test.json"
"test:test-type": "tsc --project tests/tsconfig.json"
},
"dependencies": {
"@discordeno/types": "19.0.0-beta.1",
"@discordeno/utils": "19.0.0-beta.1",
"dotenv": "^16.4.5"
"@discordeno/utils": "19.0.0-beta.1"
},
"devDependencies": {
"@swc/cli": "^0.3.9",
@@ -45,13 +44,13 @@
"c8": "^9.1.0",
"chai": "^5.1.1",
"chai-as-promised": "^7.1.1",
"dotenv": "^16.4.5",
"eslint": "^8.57.0",
"eslint-config-discordeno": "*",
"mocha": "^10.5.1",
"sinon": "^17.0.1",
"ts-node": "^10.9.2",
"tsconfig": "*",
"typescript": "5.4.5",
"why-is-node-running": "^2.2.2"
"typescript": "^5.5.2"
}
}
+23 -23
View File
@@ -1,26 +1,26 @@
import type { Camelize, DiscordChannel } from '@discordeno/types'
import { AutoModerationActionType, AutoModerationEventTypes, AutoModerationTriggerTypes } from '@discordeno/types'
import { expect } from 'chai'
import { e2ecache, rest } from './utils.js'
import { e2eCache, rest } from './utils.js'
before(async () => {
if (!e2ecache.guild) {
e2ecache.guild = await rest.createGuild({
if (!e2eCache.guild) {
e2eCache.guild = await rest.createGuild({
name: 'Discordeno-test',
})
}
})
after(async () => {
if (e2ecache.guild.id && !e2ecache.deletedGuild) {
e2ecache.deletedGuild = true
await rest.deleteGuild(e2ecache.guild.id)
if (e2eCache.guild.id && !e2eCache.deletedGuild) {
e2eCache.deletedGuild = true
await rest.deleteGuild(e2eCache.guild.id)
}
})
describe('Run automod tests', async () => {
it('Create a MessageSend rule for Keyword with BlockMessage action.', async () => {
const rule = await rest.createAutomodRule(e2ecache.guild.id, {
const rule = await rest.createAutomodRule(e2eCache.guild.id, {
name: 'test',
eventType: AutoModerationEventTypes.MessageSend,
triggerType: AutoModerationTriggerTypes.Keyword,
@@ -36,7 +36,7 @@ describe('Run automod tests', async () => {
expect(rule.id).to.be.exist
const fetchedRule = await rest.getAutomodRule(e2ecache.guild.id, rule.id)
const fetchedRule = await rest.getAutomodRule(e2eCache.guild.id, rule.id)
expect(fetchedRule.id).to.be.exist
expect(fetchedRule.name).to.equal(rule.name)
@@ -47,11 +47,11 @@ describe('Run automod tests', async () => {
expect(fetchedRule.actions[0]).to.be.exist
expect(fetchedRule.actions[0].type).to.equal(AutoModerationActionType.BlockMessage)
await rest.deleteAutomodRule(e2ecache.guild.id, rule.id)
await rest.deleteAutomodRule(e2eCache.guild.id, rule.id)
})
it('Create a MessageSend rule for Keyword with Timeout action.', async () => {
const rule = await rest.createAutomodRule(e2ecache.guild.id, {
const rule = await rest.createAutomodRule(e2eCache.guild.id, {
name: 'test',
eventType: AutoModerationEventTypes.MessageSend,
triggerType: AutoModerationTriggerTypes.Keyword,
@@ -70,7 +70,7 @@ describe('Run automod tests', async () => {
expect(rule.id).to.be.exist
const fetchedRule = await rest.getAutomodRule(e2ecache.guild.id, rule.id)
const fetchedRule = await rest.getAutomodRule(e2eCache.guild.id, rule.id)
expect(fetchedRule.id).to.be.exist
expect(fetchedRule.name).to.equal(rule.name)
@@ -82,11 +82,11 @@ describe('Run automod tests', async () => {
expect(fetchedRule.actions[0].type).to.equal(AutoModerationActionType.Timeout)
expect(fetchedRule.actions[0].metadata?.durationSeconds).to.equal(10)
await rest.deleteAutomodRule(e2ecache.guild.id, rule.id)
await rest.deleteAutomodRule(e2eCache.guild.id, rule.id)
})
it('Create a MessageSend rule for Keyword with BlockMessage & Timeout action.', async () => {
const rule = await rest.createAutomodRule(e2ecache.guild.id, {
const rule = await rest.createAutomodRule(e2eCache.guild.id, {
name: 'test',
eventType: AutoModerationEventTypes.MessageSend,
triggerType: AutoModerationTriggerTypes.Keyword,
@@ -108,14 +108,14 @@ describe('Run automod tests', async () => {
expect(rule.id).to.be.exist
await rest.deleteAutomodRule(e2ecache.guild.id, rule.id)
await rest.deleteAutomodRule(e2eCache.guild.id, rule.id)
})
describe('with a channel', () => {
let channel: Camelize<DiscordChannel>
beforeEach(async () => {
channel = await rest.createChannel(e2ecache.guild.id, {
channel = await rest.createChannel(e2eCache.guild.id, {
name: 'test',
})
})
@@ -125,7 +125,7 @@ describe('Run automod tests', async () => {
})
it('Create a MessageSend rule for Keyword with SendAlertMessage action.', async () => {
const rule = await rest.createAutomodRule(e2ecache.guild.id, {
const rule = await rest.createAutomodRule(e2eCache.guild.id, {
name: 'test',
eventType: AutoModerationEventTypes.MessageSend,
triggerType: AutoModerationTriggerTypes.Keyword,
@@ -144,7 +144,7 @@ describe('Run automod tests', async () => {
expect(rule.id).to.be.exist
const fetchedRule = await rest.getAutomodRule(e2ecache.guild.id, rule.id)
const fetchedRule = await rest.getAutomodRule(e2eCache.guild.id, rule.id)
expect(fetchedRule.id).to.be.exist
expect(fetchedRule.name).to.equal(rule.name)
@@ -156,11 +156,11 @@ describe('Run automod tests', async () => {
expect(fetchedRule.actions[0].type).to.equal(AutoModerationActionType.SendAlertMessage)
expect(fetchedRule.actions[0].metadata?.channelId).to.equal(channel.id)
await rest.deleteAutomodRule(e2ecache.guild.id, rule.id)
await rest.deleteAutomodRule(e2eCache.guild.id, rule.id)
})
it('Create a MessageSend rule for Keyword with SendAlertMessage & Timeout action.', async () => {
const rule = await rest.createAutomodRule(e2ecache.guild.id, {
const rule = await rest.createAutomodRule(e2eCache.guild.id, {
name: 'test',
eventType: AutoModerationEventTypes.MessageSend,
triggerType: AutoModerationTriggerTypes.Keyword,
@@ -185,11 +185,11 @@ describe('Run automod tests', async () => {
expect(rule.id).to.be.exist
await rest.deleteAutomodRule(e2ecache.guild.id, rule.id)
await rest.deleteAutomodRule(e2eCache.guild.id, rule.id)
})
it('Create a MessageSend rule for Keyword with BlockMessage & SendAlertMessage & Timeout action.', async () => {
const rule = await rest.createAutomodRule(e2ecache.guild.id, {
const rule = await rest.createAutomodRule(e2eCache.guild.id, {
name: 'test',
eventType: AutoModerationEventTypes.MessageSend,
triggerType: AutoModerationTriggerTypes.Keyword,
@@ -218,7 +218,7 @@ describe('Run automod tests', async () => {
expect(rule.id).to.be.exist
// Get the rule again to make sure it was created correctly
const fetchedRule = await rest.getAutomodRule(e2ecache.guild.id, rule.id)
const fetchedRule = await rest.getAutomodRule(e2eCache.guild.id, rule.id)
expect(fetchedRule.id).to.be.exist
expect(fetchedRule.name).to.equal(rule.name)
expect(fetchedRule.eventType).to.equal(AutoModerationEventTypes.MessageSend)
@@ -234,7 +234,7 @@ describe('Run automod tests', async () => {
expect(fetchedRule.actions[1].type).to.equal(AutoModerationActionType.SendAlertMessage)
expect(fetchedRule.actions[2].type).to.equal(AutoModerationActionType.Timeout)
await rest.deleteAutomodRule(e2ecache.guild.id, rule.id)
await rest.deleteAutomodRule(e2eCache.guild.id, rule.id)
})
})
})
+24 -24
View File
@@ -3,28 +3,28 @@ import { urlToBase64 } from '@discordeno/utils'
import { use as chaiUse, expect } from 'chai'
import chaiAsPromised from 'chai-as-promised'
import { after, afterEach, before, beforeEach, describe, it } from 'mocha'
import { e2ecache, rest } from './utils.js'
import { e2eCache, rest } from './utils.js'
chaiUse(chaiAsPromised)
before(async () => {
if (!e2ecache.guild) {
e2ecache.guild = await rest.createGuild({
if (!e2eCache.guild) {
e2eCache.guild = await rest.createGuild({
name: 'Discordeno-test',
})
}
})
after(async () => {
if (e2ecache.guild.id && !e2ecache.deletedGuild) {
e2ecache.deletedGuild = true
await rest.deleteGuild(e2ecache.guild.id)
if (e2eCache.guild.id && !e2eCache.deletedGuild) {
e2eCache.deletedGuild = true
await rest.deleteGuild(e2eCache.guild.id)
}
})
describe('Create and delete emojis', () => {
it('create an emoji', async () => {
const emoji = await rest.createEmoji(e2ecache.guild.id, {
const emoji = await rest.createEmoji(e2eCache.guild.id, {
name: 'blamewolf',
image: await urlToBase64('https://cdn.discordapp.com/emojis/814955268123000832.png'),
roles: [],
@@ -32,12 +32,12 @@ describe('Create and delete emojis', () => {
// Assertions
expect(emoji.id).to.be.exist
await rest.deleteEmoji(e2ecache.guild.id, emoji.id!)
await rest.deleteEmoji(e2eCache.guild.id, emoji.id!)
})
// delete an emoji without a reason
it('delete an emoji without a reason', async () => {
const emoji = await rest.createEmoji(e2ecache.guild.id, {
const emoji = await rest.createEmoji(e2eCache.guild.id, {
name: 'blamewolf',
image: await urlToBase64('https://cdn.discordapp.com/emojis/814955268123000832.png'),
roles: [],
@@ -46,14 +46,14 @@ describe('Create and delete emojis', () => {
// Assertions
expect(emoji.id).to.be.exist
await rest.deleteEmoji(e2ecache.guild.id, emoji.id!)
await rest.deleteEmoji(e2eCache.guild.id, emoji.id!)
await expect(rest.getEmoji(e2ecache.guild.id, emoji.id!)).to.eventually.rejected
await expect(rest.getEmoji(e2eCache.guild.id, emoji.id!)).to.eventually.rejected
})
// delete an emoji with a reason
it('delete an emoji with a reason', async () => {
const emoji = await rest.createEmoji(e2ecache.guild.id, {
const emoji = await rest.createEmoji(e2eCache.guild.id, {
name: 'blamewolf',
image: await urlToBase64('https://cdn.discordapp.com/emojis/814955268123000832.png'),
roles: [],
@@ -62,9 +62,9 @@ describe('Create and delete emojis', () => {
// Assertions
expect(emoji.id).to.be.exist
await rest.deleteEmoji(e2ecache.guild.id, emoji.id!, 'with a reason')
await rest.deleteEmoji(e2eCache.guild.id, emoji.id!, 'with a reason')
await expect(rest.getEmoji(e2ecache.guild.id, emoji.id!)).to.eventually.rejected
await expect(rest.getEmoji(e2eCache.guild.id, emoji.id!)).to.eventually.rejected
})
})
@@ -72,7 +72,7 @@ describe('Edit and get emojis', () => {
let emoji: Camelize<DiscordEmoji> & { id: string }
beforeEach(async () => {
emoji = (await rest.createEmoji(e2ecache.guild.id, {
emoji = (await rest.createEmoji(e2eCache.guild.id, {
name: 'blamewolf',
image: await urlToBase64('https://cdn.discordapp.com/emojis/814955268123000832.png'),
roles: [],
@@ -80,49 +80,49 @@ describe('Edit and get emojis', () => {
})
afterEach(async () => {
await rest.deleteEmoji(e2ecache.guild.id, emoji.id)
await rest.deleteEmoji(e2eCache.guild.id, emoji.id)
})
// edit an emoji name
it('Edit an emoji name', async () => {
await rest.editEmoji(e2ecache.guild.id, emoji.id, {
await rest.editEmoji(e2eCache.guild.id, emoji.id, {
name: 'edited',
})
const edited = await rest.getEmoji(e2ecache.guild.id, emoji.id)
const edited = await rest.getEmoji(e2eCache.guild.id, emoji.id)
expect(edited.name).to.equal('edited')
})
// edit an emoji roles
it("Edit an emoji's roles", async () => {
const role = await rest.createRole(e2ecache.guild.id, {
const role = await rest.createRole(e2eCache.guild.id, {
name: 'dd-test-emoji',
})
await rest.editEmoji(e2ecache.guild.id, emoji.id, {
await rest.editEmoji(e2eCache.guild.id, emoji.id, {
roles: [role.id],
})
const edited = await rest.getEmoji(e2ecache.guild.id, emoji.id)
const edited = await rest.getEmoji(e2eCache.guild.id, emoji.id)
expect(edited.roles?.length).to.equal(1)
})
// get an emoji
it('get an emoji', async () => {
const exists = await rest.getEmoji(e2ecache.guild.id, emoji.id)
const exists = await rest.getEmoji(e2eCache.guild.id, emoji.id)
expect(exists.id).to.be.exist
expect(emoji.id).to.equal(exists.id)
})
it('get all guild emojis', async () => {
await rest.createEmoji(e2ecache.guild.id, {
await rest.createEmoji(e2eCache.guild.id, {
name: 'blamewolf2',
image: await urlToBase64('https://cdn.discordapp.com/emojis/814955268123000832.png'),
roles: [],
})
const exists = await rest.getEmojis(e2ecache.guild.id)
const exists = await rest.getEmojis(e2eCache.guild.id)
expect(exists.length).to.greaterThan(1)
})
})
+23 -23
View File
@@ -2,21 +2,21 @@ import { ChannelTypes } from '@discordeno/types'
import { use as chaiUse, expect } from 'chai'
import chaiAsPromised from 'chai-as-promised'
import { describe, it } from 'mocha'
import { e2ecache, rest } from './utils.js'
import { e2eCache, rest } from './utils.js'
chaiUse(chaiAsPromised)
before(async () => {
if (!e2ecache.guild) {
e2ecache.guild = await rest.createGuild({
if (!e2eCache.guild) {
e2eCache.guild = await rest.createGuild({
name: 'Discordeno-test',
})
}
})
after(async () => {
if (e2ecache.guild.id && !e2ecache.deletedGuild) {
e2ecache.deletedGuild = true
await rest.deleteGuild(e2ecache.guild.id)
if (e2eCache.guild.id && !e2eCache.deletedGuild) {
e2eCache.deletedGuild = true
await rest.deleteGuild(e2eCache.guild.id)
}
})
@@ -25,7 +25,7 @@ describe('Manage Guilds', async () => {
const guild = await rest.createGuild({
name: 'Discordeno-test',
})
expect(e2ecache.guild.id).to.be.exist
expect(e2eCache.guild.id).to.be.exist
await rest.deleteGuild(guild.id)
// Make sure the guild was deleted
const deleted = await rest.getGuild(guild.id).catch(() => undefined)
@@ -33,31 +33,31 @@ describe('Manage Guilds', async () => {
})
it('Get a guild', async () => {
const exists = await rest.getGuild(e2ecache.guild.id)
const exists = await rest.getGuild(e2eCache.guild.id)
expect(exists).to.be.exist
expect(exists.id).to.be.exist
expect(exists.name).to.equal(e2ecache.guild.name)
expect(exists.name).to.equal(e2eCache.guild.name)
})
it('AFK channel', async () => {
const voiceChannel = await rest.createChannel(e2ecache.guild.id, {
const voiceChannel = await rest.createChannel(e2eCache.guild.id, {
name: 'edit-guild-test',
type: ChannelTypes.GuildVoice,
})
expect(voiceChannel.id).to.be.exist
const edited = await rest.editGuild(e2ecache.guild.id, {
const edited = await rest.editGuild(e2eCache.guild.id, {
name: 'Discordeno-test-edited',
afkChannelId: voiceChannel.id,
// afkTimeout: 5,
})
expect(edited.name).to.equal('Discordeno-test-edited')
expect(e2ecache.guild.afkChannelId).to.not.equal(voiceChannel.id)
expect(e2eCache.guild.afkChannelId).to.not.equal(voiceChannel.id)
expect(edited.afkChannelId).to.equal(voiceChannel.id)
// expect(guild.afkTimeout).to.equal(0);
// expect(edited.afkTimeout).to.equal(5);
const edited2 = await rest.editGuild(e2ecache.guild.id, { afkChannelId: null })
const edited2 = await rest.editGuild(e2eCache.guild.id, { afkChannelId: null })
expect(edited.afkChannelId).to.not.equal(edited2.afkChannelId)
// Use boolean to check both undefined or null
expect(!!edited2.afkChannelId).to.equal(false)
@@ -70,48 +70,48 @@ describe('Manage Guilds', async () => {
// });
it('Get audit logs', async () => {
const auditLogs = await rest.getAuditLog(e2ecache.guild.id, { limit: 1 })
const auditLogs = await rest.getAuditLog(e2eCache.guild.id, { limit: 1 })
expect(auditLogs.auditLogEntries.length).to.be.exist
})
// Get available voice regions
it('Get available voice regions', async () => {
const regions = await rest.getVoiceRegions(e2ecache.guild.id)
const regions = await rest.getVoiceRegions(e2eCache.guild.id)
expect(regions.length).to.be.exist
})
it('Banning members', async () => {
await rest.banMember(
e2ecache.guild.id,
e2eCache.guild.id,
'379643682984296448',
{
deleteMessageSeconds: 604800,
},
'Blame Wolf',
)
const fetchedBan = await rest.getBan(e2ecache.guild.id, '379643682984296448')
const fetchedBan = await rest.getBan(e2eCache.guild.id, '379643682984296448')
// Assertions
expect(fetchedBan).to.be.exist
expect(fetchedBan.user.id).to.equal('379643682984296448')
await rest.banMember(e2ecache.guild.id, '416477607966670869')
const fetchedBans = await rest.getBans(e2ecache.guild.id)
await rest.banMember(e2eCache.guild.id, '416477607966670869')
const fetchedBans = await rest.getBans(e2eCache.guild.id)
// Assertions
expect(fetchedBans).to.be.exist
expect(fetchedBans.length).to.greaterThanOrEqual(2)
await rest.unbanMember(e2ecache.guild.id, '416477607966670869')
await rest.unbanMember(e2ecache.guild.id, '379643682984296448')
await rest.unbanMember(e2eCache.guild.id, '416477607966670869')
await rest.unbanMember(e2eCache.guild.id, '379643682984296448')
const unbanned = await rest.getBans(e2ecache.guild.id)
const unbanned = await rest.getBans(e2eCache.guild.id)
expect(unbanned.length).to.equal(0)
})
// Get vanity URL
it('Get vanity URL', async () => {
await expect(rest.getVanityUrl(e2ecache.guild.id)).to.eventually.rejected
await expect(rest.getVanityUrl(e2eCache.guild.id)).to.eventually.rejected
})
// Get a welcome screen
+11 -11
View File
@@ -1,33 +1,33 @@
import { use as chaiUse, expect } from 'chai'
import chaiAsPromised from 'chai-as-promised'
import { describe, it } from 'mocha'
import { e2ecache, rest } from './utils.js'
import { e2eCache, rest } from './utils.js'
chaiUse(chaiAsPromised)
before(async () => {
if (!e2ecache.guild) {
e2ecache.guild = await rest.createGuild({
if (!e2eCache.guild) {
e2eCache.guild = await rest.createGuild({
name: 'Discordeno-test',
})
}
})
after(async () => {
if (e2ecache.guild.id && !e2ecache.deletedGuild) {
e2ecache.deletedGuild = true
await rest.deleteGuild(e2ecache.guild.id)
if (e2eCache.guild.id && !e2eCache.deletedGuild) {
e2eCache.deletedGuild = true
await rest.deleteGuild(e2eCache.guild.id)
}
})
describe('Member tests', () => {
it("Fetches the bot and compares the bot's id with the fetched member's id", async () => {
const member = await rest.getMember(e2ecache.communityGuildId, rest.applicationId)
const member = await rest.getMember(e2eCache.communityGuildId, rest.applicationId)
expect(member?.user.id).to.exist
expect(member?.user.id).to.equal(rest.applicationId.toString())
})
it('Gets a member list and checks if the bot is in the member list', async () => {
const members = await rest.getMembers(e2ecache.communityGuildId, {
const members = await rest.getMembers(e2eCache.communityGuildId, {
limit: 10,
})
expect(members.some((m) => m.user.id === rest.applicationId.toString())).to.equal(true)
@@ -35,20 +35,20 @@ describe('Member tests', () => {
// fetch a single member by id
it('Fetch a single member by id', async () => {
const member = await rest.getMember(e2ecache.communityGuildId, rest.applicationId)
const member = await rest.getMember(e2eCache.communityGuildId, rest.applicationId)
expect(member?.user.id).to.exist
})
it("Edit a bot's nickname", async () => {
const nick = 'lts20050703'
const member = await rest.editBotMember(e2ecache.communityGuildId, {
const member = await rest.editBotMember(e2eCache.communityGuildId, {
nick,
})
expect(member.nick).to.equal(nick)
// Change nickname back
const member2 = await rest.editBotMember(e2ecache.communityGuildId, {
const member2 = await rest.editBotMember(e2eCache.communityGuildId, {
nick: null,
})
expect(member2.nick).to.null
+20 -20
View File
@@ -1,26 +1,26 @@
import { processReactionString, urlToBase64 } from '@discordeno/utils'
import { expect } from 'chai'
import { describe, it } from 'mocha'
import { e2ecache, rest } from './utils.js'
import { e2eCache, rest } from './utils.js'
before(async () => {
if (!e2ecache.guild) {
e2ecache.guild = await rest.createGuild({
if (!e2eCache.guild) {
e2eCache.guild = await rest.createGuild({
name: 'Discordeno-test',
})
}
})
after(async () => {
if (e2ecache.guild.id && !e2ecache.deletedGuild) {
e2ecache.deletedGuild = true
await rest.deleteGuild(e2ecache.guild.id)
if (e2eCache.guild.id && !e2eCache.deletedGuild) {
e2eCache.deletedGuild = true
await rest.deleteGuild(e2eCache.guild.id)
}
})
describe('Send a message', () => {
it('With content', async () => {
const message = await rest.sendMessage(e2ecache.channel.id, { content: 'testing rate limit manager' })
const message = await rest.sendMessage(e2eCache.channel.id, { content: 'testing rate limit manager' })
expect(message.content).to.be.equal('testing rate limit manager')
const edited = await rest.editMessage(message.channelId, message.id, { content: 'testing rate limit manager edited' })
@@ -36,7 +36,7 @@ describe('Send a message', () => {
expect(image).to.not.be.undefined
if (!image) throw new Error('Was not able to fetch the image.')
const message = await rest.sendMessage(e2ecache.channel.id, { files: [{ blob: image, name: 'gamer' }] })
const message = await rest.sendMessage(e2eCache.channel.id, { files: [{ blob: image, name: 'gamer' }] })
expect(message.attachments.length).to.be.greaterThan(0)
const [attachment] = message.attachments
@@ -46,7 +46,7 @@ describe('Send a message', () => {
it('With a file attachment', async () => {
const txtFile = new Blob(['hello world'], { type: 'text/plain' })
const fileMsg = await rest.sendMessage(e2ecache.channel.id, {
const fileMsg = await rest.sendMessage(e2eCache.channel.id, {
content: '222',
files: [
{
@@ -64,7 +64,7 @@ describe('Send a message', () => {
const txtFile2 = new Blob(['hello world edit'], { type: 'text/plain' })
const edited = await rest.editMessage(e2ecache.channel.id, fileMsg.id, {
const edited = await rest.editMessage(e2eCache.channel.id, fileMsg.id, {
content: '222 edit',
files: [
{
@@ -84,7 +84,7 @@ describe('Send a message', () => {
describe('Manage reactions', async () => {
it('Add and delete a unicode reaction', async () => {
const reactionChannel = await rest.createChannel(e2ecache.guild.id, { name: 'reactions' })
const reactionChannel = await rest.createChannel(e2eCache.guild.id, { name: 'reactions' })
const message = await rest.sendMessage(reactionChannel.id, { content: 'add reaction test' })
await rest.addReaction(message.channelId, message.id, '📙')
@@ -98,13 +98,13 @@ describe('Manage reactions', async () => {
})
it('Add and delete a custom reaction', async () => {
const emoji = await rest.createEmoji(e2ecache.guild.id, {
const emoji = await rest.createEmoji(e2eCache.guild.id, {
name: 'discordeno',
image: await urlToBase64('https://cdn.discordapp.com/emojis/785403373817823272.webp?size=96'),
})
const emojiCode = `<:${emoji.name!}:${emoji.id!}>`
const reactionChannel = await rest.createChannel(e2ecache.guild.id, { name: 'reactions' })
const reactionChannel = await rest.createChannel(e2eCache.guild.id, { name: 'reactions' })
const message = await rest.sendMessage(reactionChannel.id, { content: 'add reaction test' })
await rest.addReaction(message.channelId, message.id, emojiCode)
@@ -121,13 +121,13 @@ describe('Manage reactions', async () => {
})
it('Add several reactions with random order and delete all of them', async () => {
const emoji = await rest.createEmoji(e2ecache.guild.id, {
const emoji = await rest.createEmoji(e2eCache.guild.id, {
name: 'discordeno',
image: await urlToBase64('https://cdn.discordapp.com/emojis/785403373817823272.webp?size=96'),
})
const emojiCode = `<:${emoji.name!}:${emoji.id!}>`
const reactionChannel = await rest.createChannel(e2ecache.guild.id, { name: 'reactions' })
const reactionChannel = await rest.createChannel(e2eCache.guild.id, { name: 'reactions' })
const message = await rest.sendMessage(reactionChannel.id, { content: 'add reaction test' })
await rest.addReactions(message.channelId, message.id, [emojiCode, '📙'])
@@ -141,13 +141,13 @@ describe('Manage reactions', async () => {
})
it('Add several reactions in an order and delete emoji reaction', async () => {
const emoji = await rest.createEmoji(e2ecache.guild.id, {
const emoji = await rest.createEmoji(e2eCache.guild.id, {
name: 'discordeno',
image: await urlToBase64('https://cdn.discordapp.com/emojis/785403373817823272.webp?size=96'),
})
const emojiCode = `<:${emoji.name!}:${emoji.id!}>`
const reactionChannel = await rest.createChannel(e2ecache.guild.id, { name: 'reactions' })
const reactionChannel = await rest.createChannel(e2eCache.guild.id, { name: 'reactions' })
const message = await rest.sendMessage(reactionChannel.id, { content: 'add reaction test' })
await rest.addReactions(message.channelId, message.id, [emojiCode, '📙'], true)
@@ -167,7 +167,7 @@ describe('Manage reactions', async () => {
describe('Manage pins', () => {
it('Pin, get, and unpin messages', async () => {
const channel = await rest.createChannel(e2ecache.guild.id, { name: 'pinning' })
const channel = await rest.createChannel(e2eCache.guild.id, { name: 'pinning' })
const message = await rest.sendMessage(channel.id, { content: 'pin me' })
const message2 = await rest.sendMessage(channel.id, { content: 'pin me 2' })
@@ -188,7 +188,7 @@ describe('Manage pins', () => {
describe('Rate limit manager testing', () => {
it('Send 10 messages to 1 channel', async () => {
const channel = await rest.createChannel(e2ecache.guild.id, { name: 'rate-limit-1' })
const channel = await rest.createChannel(e2eCache.guild.id, { name: 'rate-limit-1' })
await Promise.all(
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9].map(async (i) => {
await rest.sendMessage(channel.id, { content: `10 messages to 1 channel testing rate limit manager ${i}` })
@@ -199,7 +199,7 @@ describe('Rate limit manager testing', () => {
it('Send 10 messages to 10 channels', async () => {
await Promise.all(
[...Array(10).keys()].map(async () => {
const channel = await rest.createChannel(e2ecache.guild.id, { name: 'rate-limit-x' })
const channel = await rest.createChannel(e2eCache.guild.id, { name: 'rate-limit-x' })
await Promise.all(
[...Array(10).keys()].map(async (_, index) => {
+2 -2
View File
@@ -1,9 +1,9 @@
import { describe } from 'mocha'
import { e2ecache, rest } from './utils.js'
import { e2eCache, rest } from './utils.js'
describe('Typings', () => {
it('Trigger Typing Indication', async () => {
const channel = await rest.createChannel(e2ecache.guild.id, { name: 'typing' })
const channel = await rest.createChannel(e2eCache.guild.id, { name: 'typing' })
await rest.triggerTypingIndicator(channel.id)
})
})
+23 -23
View File
@@ -1,19 +1,19 @@
import { calculateBits } from '@discordeno/utils'
import { expect } from 'chai'
import { before, describe, it } from 'mocha'
import { e2ecache, rest } from './utils.js'
import { e2eCache, rest } from './utils.js'
before(async () => {
if (!e2ecache.guild) {
e2ecache.guild = await rest.createGuild({
if (!e2eCache.guild) {
e2eCache.guild = await rest.createGuild({
name: 'Discordeno-test',
})
}
})
after(async () => {
if (e2ecache.guild.id && !e2ecache.deletedGuild) {
await rest.deleteGuild(e2ecache.guild.id)
if (e2eCache.guild.id && !e2eCache.deletedGuild) {
await rest.deleteGuild(e2eCache.guild.id)
}
})
@@ -21,7 +21,7 @@ describe('Role tests', async () => {
// Create a role with a reason
it('Create a role with a reason', async () => {
const role = await rest.createRole(
e2ecache.guild?.id,
e2eCache.guild?.id,
{
name: `test role ${Date.now()}`,
},
@@ -32,7 +32,7 @@ describe('Role tests', async () => {
// Create a role without a reason
it('Create a role without a reason', async () => {
const role = await rest.createRole(e2ecache.guild.id, {
const role = await rest.createRole(e2eCache.guild.id, {
name: `test role ${Date.now()}`,
})
expect(role.id).to.exist
@@ -40,21 +40,21 @@ describe('Role tests', async () => {
// Delete a role
it('Delete a role', async () => {
const role = await rest.createRole(e2ecache.guild.id, {
const role = await rest.createRole(e2eCache.guild.id, {
name: `test role ${Date.now()}`,
})
await rest.deleteRole(e2ecache.guild.id, role.id)
const deletedRoles = await rest.getRoles(e2ecache.guild.id)
await rest.deleteRole(e2eCache.guild.id, role.id)
const deletedRoles = await rest.getRoles(e2eCache.guild.id)
expect(deletedRoles.some((r) => r.id === role.id)).to.equal(false)
})
// Edit a role
it('Edit a role', async () => {
const role = await rest.createRole(e2ecache.guild.id, {
const role = await rest.createRole(e2eCache.guild.id, {
name: `test role ${Date.now()}`,
})
const edited = await rest.editRole(e2ecache.guild.id, role.id, {
const edited = await rest.editRole(e2eCache.guild.id, role.id, {
name: 'test role 4',
color: 0x0000ff,
hoist: true,
@@ -67,11 +67,11 @@ describe('Role tests', async () => {
expect(edited.mentionable).to.equal(true)
expect(edited.permissions.toString()).to.equal(calculateBits(['SEND_MESSAGES', 'VIEW_CHANNEL']))
await rest.editRole(e2ecache.guild.id, role.id, {
await rest.editRole(e2eCache.guild.id, role.id, {
hoist: false,
mentionable: false,
})
const roles = await rest.getRoles(e2ecache.guild.id)
const roles = await rest.getRoles(e2eCache.guild.id)
const unedited = roles.find((r) => r.id === role.id)
expect(unedited?.hoist).to.equal(false)
@@ -79,27 +79,27 @@ describe('Role tests', async () => {
})
it('Add and remove role from user', async () => {
const role = await rest.createRole(e2ecache.guild.id, {
const role = await rest.createRole(e2eCache.guild.id, {
name: `test role ${Date.now()}`,
})
// Assign the role to the user
await rest.addRole(e2ecache.guild.id, rest.applicationId, role.id)
const member = await rest.getMember(e2ecache.guild.id, rest.applicationId)
await rest.addRole(e2eCache.guild.id, rest.applicationId, role.id)
const member = await rest.getMember(e2eCache.guild.id, rest.applicationId)
expect(member?.roles.includes(role.id)).to.equal(true)
await rest.removeRole(e2ecache.guild.id, rest.applicationId, role.id)
const removed = await rest.getMember(e2ecache.guild.id, rest.applicationId)
await rest.removeRole(e2eCache.guild.id, rest.applicationId, role.id)
const removed = await rest.getMember(e2eCache.guild.id, rest.applicationId)
// console.log('member', member.errors.userId.Errors)
expect(removed?.roles.includes(role.id)).to.equal(false)
// With a reason
await rest.addRole(e2ecache.guild.id, rest.applicationId, role.id, 'test reason')
const member2 = await rest.getMember(e2ecache.guild.id, rest.applicationId)
await rest.addRole(e2eCache.guild.id, rest.applicationId, role.id, 'test reason')
const member2 = await rest.getMember(e2eCache.guild.id, rest.applicationId)
expect(member2?.roles.includes(role.id)).to.equal(true)
await rest.removeRole(e2ecache.guild.id, rest.applicationId, role.id, 'test reason')
const member3 = await rest.getMember(e2ecache.guild.id, rest.applicationId)
await rest.removeRole(e2eCache.guild.id, rest.applicationId, role.id, 'test reason')
const member3 = await rest.getMember(e2eCache.guild.id, rest.applicationId)
expect(member3?.roles.includes(role.id)).to.equal(false)
})
})
+14 -14
View File
@@ -2,21 +2,21 @@ import { StickerFormatTypes } from '@discordeno/types'
import { use as chaiUse, expect } from 'chai'
import chaiAsPromised from 'chai-as-promised'
import { describe, it } from 'mocha'
import { e2ecache, rest } from './utils.js'
import { e2eCache, rest } from './utils.js'
chaiUse(chaiAsPromised)
before(async () => {
if (!e2ecache.guild) {
e2ecache.guild = await rest.createGuild({
if (!e2eCache.guild) {
e2eCache.guild = await rest.createGuild({
name: 'Discordeno-test',
})
}
})
after(async () => {
if (e2ecache.guild.id && !e2ecache.deletedGuild) {
e2ecache.deletedGuild = true
await rest.deleteGuild(e2ecache.guild.id)
if (e2eCache.guild.id && !e2eCache.deletedGuild) {
e2eCache.deletedGuild = true
await rest.deleteGuild(e2eCache.guild.id)
}
})
@@ -28,7 +28,7 @@ describe('Sticker tests', async () => {
})
it('Create, edit, get, and delete guild sticker', async () => {
const sticker = await rest.createGuildSticker(e2ecache.guild.id, {
const sticker = await rest.createGuildSticker(e2eCache.guild.id, {
name: 'sticker name',
description: 'sticker description',
tags: 'sticker tags',
@@ -42,7 +42,7 @@ describe('Sticker tests', async () => {
expect(sticker.description).to.equal('sticker description')
expect(sticker.tags).to.equal('sticker tags')
const channel = await rest.createChannel(e2ecache.guild.id, {
const channel = await rest.createChannel(e2eCache.guild.id, {
name: 'test',
})
const message = await rest.sendMessage(channel.id, {
@@ -53,13 +53,13 @@ describe('Sticker tests', async () => {
expect(message.stickerItems?.[0].id).to.equal(sticker.id)
expect(message.stickerItems?.[0].name).to.equal(sticker.name)
const getSticker = await rest.getGuildSticker(e2ecache.guild.id, sticker.id)
const getSticker = await rest.getGuildSticker(e2eCache.guild.id, sticker.id)
expect(getSticker.name).to.equal('sticker name')
expect(getSticker.description).to.equal('sticker description')
expect(getSticker.tags).to.equal('sticker tags')
const editSticker = await rest.editGuildSticker(e2ecache.guild.id, sticker.id, {
const editSticker = await rest.editGuildSticker(e2eCache.guild.id, sticker.id, {
name: 'sticker name',
description: 'sticker description',
tags: 'sticker tags',
@@ -69,7 +69,7 @@ describe('Sticker tests', async () => {
expect(editSticker.description).to.equal('sticker description')
expect(editSticker.tags).to.equal('sticker tags')
await rest.createGuildSticker(e2ecache.guild.id, {
await rest.createGuildSticker(e2eCache.guild.id, {
name: 'sticker 2',
description: 'sticker 2',
tags: 'sticker tags 2',
@@ -78,10 +78,10 @@ describe('Sticker tests', async () => {
name: 'ddlogo.png',
},
})
const stickers = await rest.getGuildStickers(e2ecache.guild.id)
const stickers = await rest.getGuildStickers(e2eCache.guild.id)
expect(stickers.length).to.greaterThan(1)
await rest.deleteGuildSticker(e2ecache.guild.id, sticker.id)
await expect(rest.getGuildSticker(e2ecache.guild.id, sticker.id)).to.eventually.rejected
await rest.deleteGuildSticker(e2eCache.guild.id, sticker.id)
await expect(rest.getGuildSticker(e2eCache.guild.id, sticker.id)).to.eventually.rejected
})
})
+5 -5
View File
@@ -1,20 +1,20 @@
import { use as chaiUse, expect } from 'chai'
import chaiAsPromised from 'chai-as-promised'
import { describe, it } from 'mocha'
import { e2ecache, rest } from './utils.js'
import { e2eCache, rest } from './utils.js'
chaiUse(chaiAsPromised)
before(async () => {
if (!e2ecache.guild) {
e2ecache.guild = await rest.createGuild({
if (!e2eCache.guild) {
e2eCache.guild = await rest.createGuild({
name: 'Discordeno-test',
})
}
})
after(async () => {
if (e2ecache.guild.id && !e2ecache.deletedGuild) {
await rest.deleteGuild(e2ecache.guild.id)
if (e2eCache.guild.id && !e2eCache.deletedGuild) {
await rest.deleteGuild(e2eCache.guild.id)
}
})
+1 -1
View File
@@ -12,7 +12,7 @@ rest.deleteQueueDelay = 10000
const guild = await rest.createGuild({ name: 'ddenotester' })
const channel = await rest.createChannel(guild.id, { name: 'ddenotestchannel' })
export const e2ecache = {
export const e2eCache = {
guild,
channel,
deletedGuild: false,
+8 -8
View File
@@ -1,27 +1,27 @@
import { use as chaiUse, expect } from 'chai'
import chaiAsPromised from 'chai-as-promised'
import { describe, it } from 'mocha'
import { e2ecache, rest } from './utils.js'
import { e2eCache, rest } from './utils.js'
chaiUse(chaiAsPromised)
before(async () => {
if (!e2ecache.guild) {
e2ecache.guild = await rest.createGuild({
if (!e2eCache.guild) {
e2eCache.guild = await rest.createGuild({
name: 'Discordeno-test',
})
}
})
after(async () => {
if (e2ecache.guild.id && !e2ecache.deletedGuild) {
e2ecache.deletedGuild = true
await rest.deleteGuild(e2ecache.guild.id)
if (e2eCache.guild.id && !e2eCache.deletedGuild) {
e2eCache.deletedGuild = true
await rest.deleteGuild(e2eCache.guild.id)
}
})
describe('Webhook helpers', async () => {
it('Manage webhooks', async () => {
const channel = await rest.createChannel(e2ecache.guild.id, {
const channel = await rest.createChannel(e2eCache.guild.id, {
name: 'wbhook',
})
@@ -76,7 +76,7 @@ describe('Webhook helpers', async () => {
})
it('Manage webhook messages', async () => {
const channel = await rest.createChannel(e2ecache.guild.id, {
const channel = await rest.createChannel(e2eCache.guild.id, {
name: 'wbhook',
})
const webhook = await rest.createWebhook(channel.id, {
+3
View File
@@ -0,0 +1,3 @@
{
"extends": "tsconfig/test.json"
}
+1 -6
View File
@@ -1,8 +1,3 @@
{
"extends": "tsconfig/base.json",
"compilerOptions": {
"outDir": "./dist"
},
"include": ["./src/**/*.ts", "./src/**/*.tsx"],
"exclude": ["node_modules", "dist", "test", "tests"]
"extends": "tsconfig/base.json"
}
-5
View File
@@ -1,5 +0,0 @@
{
"extends": "tsconfig/test.json",
"include": ["tests"],
"exclude": ["node_modules", "dist", "src"]
}
+5 -1
View File
@@ -4,6 +4,9 @@
"compilerOptions": {
"target": "es2022",
"module": "es2022",
"rootDir": "${configDir}/src",
"outDir": "${configDir}/dist",
"tsBuildInfoFile": "${configDir}/dist/.tsbuildinfo",
"composite": false,
"declaration": true,
"declarationMap": true,
@@ -16,11 +19,12 @@
"noUnusedParameters": false,
"preserveWatchOutput": true,
"skipLibCheck": true,
"skipDefaultLibCheck": true,
"strict": true,
"incremental": true,
"resolveJsonModule": true
},
"exclude": ["node_modules", "dist", "tests", "test"],
"include": ["${configDir}/src"],
"ts-node": {
"swc": true,
"esm": true
+7 -2
View File
@@ -1,7 +1,12 @@
{
"$schema": "https://json.schemastore.org/tsconfig",
"extends": "./base.json",
"compilerOptions": {
"noEmit": true,
"incremental": false
}
"incremental": false,
"tsBuildInfoFile": null,
"rootDir": null,
"outDir": null,
},
"include": ["${configDir}"],
}
+1 -1
View File
@@ -22,4 +22,4 @@
"noInterop": false
},
"sourceMaps": "inline"
}
}
+1 -4
View File
@@ -29,17 +29,14 @@
"devDependencies": {
"@swc/cli": "^0.3.9",
"@swc/core": "^1.4.2",
"@types/chai": "^4.3.11",
"@types/mocha": "^10.0.7",
"@types/node": "^20.11.25",
"@types/sinon": "^17.0.3",
"c8": "^9.1.0",
"chai": "^5.1.1",
"eslint": "^8.57.0",
"eslint-config-discordeno": "*",
"mocha": "^10.5.1",
"ts-node": "^10.9.2",
"tsconfig": "*",
"typescript": "5.4.5"
"typescript": "^5.5.2"
}
}
+3
View File
@@ -0,0 +1,3 @@
{
"extends": "tsconfig/test.json"
}
+1 -6
View File
@@ -1,8 +1,3 @@
{
"extends": "tsconfig/base.json",
"compilerOptions": {
"outDir": "./dist"
},
"include": ["./src/**/*.ts", "./src/**/*.tsx"],
"exclude": ["node_modules", "dist", "test", "tests"]
"extends": "tsconfig/base.json"
}
-5
View File
@@ -1,5 +0,0 @@
{
"extends": "tsconfig/test.json",
"include": ["tests"],
"exclude": ["node_modules", "dist", "src"]
}
+1 -1
View File
@@ -22,4 +22,4 @@
"noInterop": false
},
"sourceMaps": "inline"
}
}
+3 -4
View File
@@ -26,11 +26,10 @@
"test:bun-unit": "node ../../scripts/fixBunTestExtension.js && bun test bunTestsDist",
"test:unit:watch": "mocha --no-warnings --watch --parallel 'tests/**/*.spec.ts'",
"test:type": "tsc --noEmit",
"test:test-type": "tsc --project tsconfig.test.json"
"test:test-type": "tsc --project tests/tsconfig.json"
},
"dependencies": {
"@discordeno/types": "19.0.0-beta.1",
"tweetnacl": "^1.0.3"
"@discordeno/types": "19.0.0-beta.1"
},
"devDependencies": {
"@swc/cli": "^0.3.9",
@@ -47,6 +46,6 @@
"sinon": "^17.0.1",
"ts-node": "^10.9.2",
"tsconfig": "*",
"typescript": "5.4.5"
"typescript": "^5.5.2"
}
}
+3
View File
@@ -0,0 +1,3 @@
{
"extends": "tsconfig/test.json"
}
+1 -6
View File
@@ -1,8 +1,3 @@
{
"extends": "tsconfig/base.json",
"compilerOptions": {
"outDir": "./dist"
},
"include": ["./src/**/*.ts", "./src/**/*.tsx"],
"exclude": ["node_modules", "dist", "test", "tests"]
"extends": "tsconfig/base.json"
}
-5
View File
@@ -1,5 +0,0 @@
{
"extends": "tsconfig/test.json",
"include": ["tests"],
"exclude": ["node_modules", "dist", "src"]
}