test: add emoji e2e test

This commit is contained in:
H01001000
2022-12-25 12:47:21 +08:00
parent 6f4e2078b8
commit b4e13f9b0e
5 changed files with 134 additions and 104 deletions

View File

@@ -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 */

View File

@@ -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 */

View File

@@ -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)
}

View File

@@ -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<DiscordEmoji> = {
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]
})
)

View File

@@ -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<DiscordGuild>
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<DiscordEmoji> & { id: string }
beforeEach(async () => {
emoji = (await rest.createEmoji(guild.id, {
name: 'blamewolf',
image: 'https://cdn.discordapp.com/emojis/814955268123000832.png',
roles: []
})) as Camelize<DiscordEmoji> & { 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)
})
})
})