Compare commits

...

2 commits

Author SHA1 Message Date
Ethan Lane 581c275adf WIP: Start of rules command tests
All checks were successful
Test / build (push) Successful in 17s
2024-05-18 10:14:57 +01:00
Ethan Lane 3e198308b9 Add poll command tests 2024-05-18 10:07:54 +01:00
3 changed files with 156 additions and 7 deletions

View file

@ -0,0 +1,32 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`Constructor EXPECT properties to be set 1`] = `
{
"default_member_permissions": "8",
"default_permission": undefined,
"description": "Rules-related commands",
"description_localizations": undefined,
"dm_permission": undefined,
"name": "rules",
"name_localizations": undefined,
"nsfw": undefined,
"options": [
{
"description": "Send the rules embeds for this server",
"description_localizations": undefined,
"name": "embeds",
"name_localizations": undefined,
"options": [],
"type": 1,
},
{
"description": "Send the server verification embed button",
"description_localizations": undefined,
"name": "access",
"name_localizations": undefined,
"options": [],
"type": 1,
},
],
}
`;

View file

@ -117,15 +117,126 @@ describe('Execute', () => {
expect(message.react).toHaveBeenCalledWith("5⃣");
});
test.todo("GIVEN title is not supplied, EXPECT nothing to happen");
test("GIVEN option3 is not supplied, EXPECT a 2 option poll to be created", async () => {
let sentEmbed: EmbedBuilder | undefined;
test.todo("GIVEN option1 is not supplied, EXPECT nothing to happen");
// Arrange
const message = {
react: jest.fn(),
} as unknown as Message<boolean>;
test.todo("GIVEN option2 is not supplied, EXPECT nothing to happen");
const response = {
fetch: jest.fn().mockResolvedValue(message),
} as unknown as InteractionResponse<boolean>;
test.todo("GIVEN option3 is not supplied, EXPECT a 2 option poll to be created");
const interaction = {
options: {
get: jest.fn().mockReturnValueOnce({ value: "Title" })
.mockReturnValueOnce({ value: "Option 1" })
.mockReturnValueOnce({ value: "Option 2" }),
},
reply: jest.fn().mockImplementation((options: any) => {
sentEmbed = options.embeds[0];
test.todo("GIVEN option4 is not supplied, EXPECT a 3 option poll to be created");
return response;
}),
user: {
username: "username",
avatarURL: jest.fn().mockReturnValue("https://avatarurl.com/user.png"),
},
} as unknown as CommandInteraction;
test.todo("GIVEN option5 is not supplied, EXPECT a 4 option poll to be created");
// Act
const command = new Command();
await command.execute(interaction);
// Assert
expect(sentEmbed).toBeDefined();
expect(sentEmbed!.data.description).toBe("1⃣ Option 1\n2⃣ Option 2");
expect(message.react).toHaveBeenCalledTimes(2);
});
test("GIVEN option4 is not supplied, EXPECT a 3 option poll to be created", async () => {
let sentEmbed: EmbedBuilder | undefined;
// Arrange
const message = {
react: jest.fn(),
} as unknown as Message<boolean>;
const response = {
fetch: jest.fn().mockResolvedValue(message),
} as unknown as InteractionResponse<boolean>;
const interaction = {
options: {
get: jest.fn().mockReturnValueOnce({ value: "Title" })
.mockReturnValueOnce({ value: "Option 1" })
.mockReturnValueOnce({ value: "Option 2" })
.mockReturnValueOnce({ value: "Option 3" }),
},
reply: jest.fn().mockImplementation((options: any) => {
sentEmbed = options.embeds[0];
return response;
}),
user: {
username: "username",
avatarURL: jest.fn().mockReturnValue("https://avatarurl.com/user.png"),
},
} as unknown as CommandInteraction;
// Act
const command = new Command();
await command.execute(interaction);
// Assert
expect(sentEmbed).toBeDefined();
expect(sentEmbed!.data.description).toBe("1⃣ Option 1\n2⃣ Option 2\n3⃣ Option 3");
expect(message.react).toHaveBeenCalledTimes(3);
});
test("GIVEN option5 is not supplied, EXPECT a 4 option poll to be created", async () => {
let sentEmbed: EmbedBuilder | undefined;
// Arrange
const message = {
react: jest.fn(),
} as unknown as Message<boolean>;
const response = {
fetch: jest.fn().mockResolvedValue(message),
} as unknown as InteractionResponse<boolean>;
const interaction = {
options: {
get: jest.fn().mockReturnValueOnce({ value: "Title" })
.mockReturnValueOnce({ value: "Option 1" })
.mockReturnValueOnce({ value: "Option 2" })
.mockReturnValueOnce({ value: "Option 3" })
.mockReturnValueOnce({ value: "Option 4" }),
},
reply: jest.fn().mockImplementation((options: any) => {
sentEmbed = options.embeds[0];
return response;
}),
user: {
username: "username",
avatarURL: jest.fn().mockReturnValue("https://avatarurl.com/user.png"),
},
} as unknown as CommandInteraction;
// Act
const command = new Command();
await command.execute(interaction);
// Assert
expect(sentEmbed).toBeDefined();
expect(sentEmbed!.data.description).toBe("1⃣ Option 1\n2⃣ Option 2\n3⃣ Option 3\n4⃣ Option 4");
expect(message.react).toHaveBeenCalledTimes(4);
});
});

View file

@ -1,9 +1,15 @@
import Command from "../../src/commands/rules";
beforeEach(() => {
process.env = {};
});
describe('Constructor', () => {
test.todo('EXPECT properties to be set');
test('EXPECT properties to be set', () => {
const command = new Command();
expect(command.CommandBuilder).toMatchSnapshot();
});
});
describe('Execute', () => {