From b4e13f9b0ee65bbf80768c39124a2edc4dfa38e0 Mon Sep 17 00:00:00 2001 From: H01001000 Date: Sun, 25 Dec 2022 12:47:21 +0800 Subject: [PATCH] test: add emoji e2e test --- .../rest/src/helpers/emojis/createEmoji.ts | 28 +--- packages/rest/src/helpers/emojis/editEmoji.ts | 28 +--- packages/rest/src/helpers/emojis/getEmoji.ts | 28 +--- packages/rest/src/helpers/emojis/getEmojis.ts | 28 +--- packages/rest/tests/e2e/emoji.spec.ts | 126 ++++++++++++++++++ 5 files changed, 134 insertions(+), 104 deletions(-) create mode 100644 packages/rest/tests/e2e/emoji.spec.ts diff --git a/packages/rest/src/helpers/emojis/createEmoji.ts b/packages/rest/src/helpers/emojis/createEmoji.ts index f4b64682a..a41103448 100644 --- a/packages/rest/src/helpers/emojis/createEmoji.ts +++ b/packages/rest/src/helpers/emojis/createEmoji.ts @@ -1,4 +1,5 @@ import { routes } from '@discordeno/constant' +import TRANSFORMERS from '@discordeno/transformer' import type { BigString, Camelize, @@ -41,32 +42,7 @@ export async function createEmoji ( } as DiscordCreateGuildEmoji ) - return { - id: result.id, - name: result.name, - roles: result.roles, - user: result.user && { - id: result.user.id, - username: result.user.username, - discriminator: result.user.discriminator, - avatar: result.user.avatar, - bot: result.user.bot, - system: result.user.system, - mfaEnabled: result.user.mfa_enabled, - banner: result.user.banner, - accentColor: result.user.accent_color, - locale: result.user.locale, - verified: result.user.verified, - email: result.user.email, - flags: result.user.flags, - premiumType: result.user.premium_type, - publicFlags: result.user.public_flags - }, - requireColons: result.require_colons, - managed: result.managed, - animated: result.animated, - available: result.animated - } + return TRANSFORMERS.emoji(result) } /** https://discord.com/developers/docs/resources/emoji#create-guild-emoji */ diff --git a/packages/rest/src/helpers/emojis/editEmoji.ts b/packages/rest/src/helpers/emojis/editEmoji.ts index 35e8ef98c..995771a7c 100644 --- a/packages/rest/src/helpers/emojis/editEmoji.ts +++ b/packages/rest/src/helpers/emojis/editEmoji.ts @@ -1,4 +1,5 @@ import { routes } from '@discordeno/constant' +import TRANSFORMERS from '@discordeno/transformer' import type { BigString, Camelize, @@ -43,32 +44,7 @@ export async function editEmoji ( } as DiscordModifyGuildEmoji ) - return { - id: result.id, - name: result.name, - roles: result.roles, - user: result.user && { - id: result.user.id, - username: result.user.username, - discriminator: result.user.discriminator, - avatar: result.user.avatar, - bot: result.user.bot, - system: result.user.system, - mfaEnabled: result.user.mfa_enabled, - banner: result.user.banner, - accentColor: result.user.accent_color, - locale: result.user.locale, - verified: result.user.verified, - email: result.user.email, - flags: result.user.flags, - premiumType: result.user.premium_type, - publicFlags: result.user.public_flags - }, - requireColons: result.require_colons, - managed: result.managed, - animated: result.animated, - available: result.animated - } + return TRANSFORMERS.emoji(result) } /** https://discord.com/developers/docs/resources/emoji#modify-guild-emoji */ diff --git a/packages/rest/src/helpers/emojis/getEmoji.ts b/packages/rest/src/helpers/emojis/getEmoji.ts index d53fe0e50..d9c2bd1b6 100644 --- a/packages/rest/src/helpers/emojis/getEmoji.ts +++ b/packages/rest/src/helpers/emojis/getEmoji.ts @@ -1,4 +1,5 @@ import { routes } from '@discordeno/constant' +import TRANSFORMERS from '@discordeno/transformer' import type { BigString, Camelize, DiscordEmoji } from '@discordeno/types' import type { RestManager } from '../../restManager.js' @@ -22,30 +23,5 @@ export async function getEmoji ( routes.GUILD_EMOJI(guildId, emojiId) ) - return { - id: result.id, - name: result.name, - roles: result.roles, - user: result.user && { - id: result.user.id, - username: result.user.username, - discriminator: result.user.discriminator, - avatar: result.user.avatar, - bot: result.user.bot, - system: result.user.system, - mfaEnabled: result.user.mfa_enabled, - banner: result.user.banner, - accentColor: result.user.accent_color, - locale: result.user.locale, - verified: result.user.verified, - email: result.user.email, - flags: result.user.flags, - premiumType: result.user.premium_type, - publicFlags: result.user.public_flags - }, - requireColons: result.require_colons, - managed: result.managed, - animated: result.animated, - available: result.animated - } + return TRANSFORMERS.emoji(result) } diff --git a/packages/rest/src/helpers/emojis/getEmojis.ts b/packages/rest/src/helpers/emojis/getEmojis.ts index c6c8af272..f396e3427 100644 --- a/packages/rest/src/helpers/emojis/getEmojis.ts +++ b/packages/rest/src/helpers/emojis/getEmojis.ts @@ -1,4 +1,5 @@ import { routes } from '@discordeno/constant' +import TRANSFORMERS from '@discordeno/transformer' import type { BigString, Camelize, DiscordEmoji } from '@discordeno/types' import { Collection } from '@discordeno/utils' import type { RestManager } from '../../restManager.js' @@ -23,32 +24,7 @@ export async function getEmojis ( return new Collection( results.map((result) => { - const emoji: Camelize = { - id: result.id, - name: result.name, - roles: result.roles, - user: result.user && { - id: result.user.id, - username: result.user.username, - discriminator: result.user.discriminator, - avatar: result.user.avatar, - bot: result.user.bot, - system: result.user.system, - mfaEnabled: result.user.mfa_enabled, - banner: result.user.banner, - accentColor: result.user.accent_color, - locale: result.user.locale, - verified: result.user.verified, - email: result.user.email, - flags: result.user.flags, - premiumType: result.user.premium_type, - publicFlags: result.user.public_flags - }, - requireColons: result.require_colons, - managed: result.managed, - animated: result.animated, - available: result.animated - } + const emoji = TRANSFORMERS.emoji(result) return [emoji.id!, emoji] }) ) diff --git a/packages/rest/tests/e2e/emoji.spec.ts b/packages/rest/tests/e2e/emoji.spec.ts new file mode 100644 index 000000000..3e0238623 --- /dev/null +++ b/packages/rest/tests/e2e/emoji.spec.ts @@ -0,0 +1,126 @@ +import type { Camelize, DiscordEmoji, DiscordGuild } from '@discordeno/types' +import chai, { expect } from 'chai' +import chaiAsPromised from 'chai-as-promised' +import { afterEach, beforeEach, describe, it } from 'mocha' +import { rest } from './utils.js' +chai.use(chaiAsPromised) + +describe('Emoji helpers', () => { + let guild: Camelize + + beforeEach(async () => { + guild = await rest.createGuild({ + name: 'Discordeno-test' + }) + }) + + afterEach(async () => { + await rest.deleteGuild(guild.id) + }) + + describe('Create and delete', () => { + it('create an emoji', async () => { + const emoji = await rest.createEmoji(guild.id, { + name: 'blamewolf', + image: 'https://cdn.discordapp.com/emojis/814955268123000832.png', + roles: [] + }) + + // Assertions + expect(emoji.id).to.be.exist + await rest.deleteEmoji(guild.id, emoji.id!) + }) + + // delete an emoji without a reason + it('delete an emoji without a reason', async () => { + const emoji = await rest.createEmoji(guild.id, { + name: 'blamewolf', + image: 'https://cdn.discordapp.com/emojis/814955268123000832.png', + roles: [] + }) + + // Assertions + expect(emoji.id).to.be.exist + + await rest.deleteEmoji(guild.id, emoji.id!) + + await expect(rest.getEmoji(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(guild.id, { + name: 'blamewolf', + image: 'https://cdn.discordapp.com/emojis/814955268123000832.png', + roles: [] + }) + + // Assertions + expect(emoji.id).to.be.exist + + await rest.deleteEmoji(guild.id, emoji.id!, 'with a reason') + + await expect(rest.getEmoji(guild.id, emoji.id!)).to.eventually.rejected + }) + }) + + describe('edit and get', () => { + let emoji: Camelize & { id: string } + + beforeEach(async () => { + emoji = (await rest.createEmoji(guild.id, { + name: 'blamewolf', + image: 'https://cdn.discordapp.com/emojis/814955268123000832.png', + roles: [] + })) as Camelize & { id: string } + }) + + afterEach(async () => { + /** No extra delete emoji is needed because we delete the guild contain emoji after each test */ + // await rest.deleteEmoji(guild.id, emoji.id) + }) + + // edit an emoji name + it('Edit an emoji name', async () => { + await rest.editEmoji(guild.id, emoji.id, { + name: 'edited' + }) + + const edited = await rest.getEmoji(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(guild.id, { + name: 'dd-test-emoji' + }) + await rest.editEmoji(guild.id, emoji.id, { + roles: [role.id] + }) + + const edited = await rest.getEmoji(guild.id, emoji.id) + + expect(edited.roles?.length).to.equal(1) + }) + + // get an emoji + it('get an emoji', async () => { + const exists = await rest.getEmoji(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(guild.id, { + name: 'blamewolf2', + image: 'https://cdn.discordapp.com/emojis/814955268123000832.png', + roles: [] + }) + + const exists = await rest.getEmojis(guild.id) + expect(exists.size).to.greaterThan(1) + }) + }) +})