add a test case to check for proper message parsing
This commit is contained in:
parent
8f02e11dba
commit
fe45445811
54
tests/discord/votes.test.ts
Normal file
54
tests/discord/votes.test.ts
Normal file
@ -0,0 +1,54 @@
|
||||
import { Emoji } from "../../server/constants"
|
||||
import VoteController, { Vote, VoteMessageInfo } from "../../server/helper/vote.controller"
|
||||
import { JellyfinHandler } from "../../server/jellyfin/handler"
|
||||
import { ExtendedClient } from "../../server/structures/client"
|
||||
import { VoteMessage } from "../../server/helper/messageIdentifiers"
|
||||
test('parse votes from vote message', () => {
|
||||
const testMovies = [
|
||||
'Movie1',
|
||||
'Movie2',
|
||||
'Movie3',
|
||||
'Movie4',
|
||||
'Movie5'
|
||||
]
|
||||
const testEventId = '1234321'
|
||||
const testEventDate = new Date('2023-01-01')
|
||||
const voteController: VoteController = new VoteController(<ExtendedClient>{}, <JellyfinHandler>{})
|
||||
const testMessage = voteController.createVoteMessageText(testEventId, testEventDate, testMovies, "guildid", "requestId")
|
||||
|
||||
|
||||
const expectedResult: VoteMessageInfo = {
|
||||
eventId: testEventId,
|
||||
eventDate: testEventDate,
|
||||
votes: [
|
||||
{ emote: Emoji.one, count: 1, movie: testMovies[0] },
|
||||
{ emote: Emoji.two, count: 2, movie: testMovies[1] },
|
||||
{ emote: Emoji.three, count: 3, movie: testMovies[2] },
|
||||
{ emote: Emoji.four, count: 1, movie: testMovies[3] },
|
||||
{ emote: Emoji.five, count: 1, movie: testMovies[4] },
|
||||
]
|
||||
}
|
||||
|
||||
const msg: VoteMessage = <VoteMessage><unknown>{
|
||||
cleanContent: testMessage,
|
||||
reactions: {
|
||||
cache: {
|
||||
get: jest.fn().mockImplementation((input: any) => {
|
||||
// Abusing duck typing
|
||||
// Message Reaction has a method `count` and the expected votes
|
||||
// have a field `count`
|
||||
// this will evaluate to the same 'result'
|
||||
return expectedResult.votes.find(e => e.emote === input)
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const result = voteController.parseVotesFromVoteMessage(msg, 'requestId')
|
||||
console.log(JSON.stringify(result))
|
||||
expect(Array.isArray(result)).toBe(false)
|
||||
expect(result.eventId).toEqual(testEventId)
|
||||
expect(result.eventDate).toEqual(testEventDate)
|
||||
expect(result.votes.length).toEqual(testMovies.length)
|
||||
expect(result).toEqual(expectedResult)
|
||||
})
|
Loading…
Reference in New Issue
Block a user