Add friendly name and active effect to user effect list embed #422

Merged
Vylpes merged 5 commits from feature/379-2 into develop 2025-02-03 18:24:27 +00:00
3 changed files with 255 additions and 1 deletions
Showing only changes of commit d9e8fee1a6 - Show all commits

View file

@ -82,7 +82,7 @@ export default class EffectHelper {
let description = "*none*";
if (effects.length > 0) {
description = effects.map(x => `${x.Name} x${x.Unused}`).join("\n");
description = effects.map(x => `${EffectDetails.get(x.Name)?.friendlyName} x${x.Unused}`).join("\n");
}
const embed = new EmbedBuilder()

View file

@ -0,0 +1,85 @@
import EffectHelper from "../../src/helpers/EffectHelper";
import UserEffect from "../../src/database/entities/app/UserEffect";
jest.mock("../../src/database/entities/app/UserEffect");
describe("GenerateEffectEmbed", () => {
test("GIVEN user has an effect, EXPECT detailed embed to be returned", async () => {
// Arrange
(UserEffect.FetchAllByUserIdPaginated as jest.Mock).mockResolvedValue([
[
{
Name: "unclaimed",
Unused: 1,
}
],
1,
])
// Act
const result = await EffectHelper.GenerateEffectEmbed("userId", 1);
// Assert
expect(result).toMatchSnapshot();
});
test("GIVEN user has more than 1 page of effects, EXPECT pagination enabled", async () => {
const effects: any[] = [];
for (let i = 0; i < 15; i++) {
effects.push({
Name: "unclaimed",
Unused: 1,
});
}
// Arrange
(UserEffect.FetchAllByUserIdPaginated as jest.Mock).mockResolvedValue([
effects,
15,
])
// Act
const result = await EffectHelper.GenerateEffectEmbed("userId", 1);
// Assert
expect(result).toMatchSnapshot();
});
test("GIVEN user is on a page other than 1, EXPECT pagination enabled", async () => {
const effects: any[] = [];
for (let i = 0; i < 15; i++) {
effects.push({
Name: "unclaimed",
Unused: 1,
});
}
// Arrange
(UserEffect.FetchAllByUserIdPaginated as jest.Mock).mockResolvedValue([
effects,
15,
])
// Act
const result = await EffectHelper.GenerateEffectEmbed("userId", 2);
// Assert
expect(result).toMatchSnapshot();
});
test("GIVEN user does NOT have an effect, EXPECT empty embed to be returned", async () => {
// Arrange
(UserEffect.FetchAllByUserIdPaginated as jest.Mock).mockResolvedValue([
[],
0,
])
// Act
const result = await EffectHelper.GenerateEffectEmbed("userId", 1);
// Assert
expect(result).toMatchSnapshot();
});
});

View file

@ -0,0 +1,169 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`GenerateEffectEmbed GIVEN user does NOT have an effect, EXPECT empty embed to be returned 1`] = `
{
"embed": {
"color": 3166394,
"description": "*none*",
"footer": {
"icon_url": undefined,
"text": "Page 1 of 1",
},
"title": "Effects",
},
"row": {
"components": [
{
"custom_id": "effects list 0",
"disabled": true,
"emoji": undefined,
"label": "Previous",
"style": 1,
"type": 2,
},
{
"custom_id": "effects list 2",
"disabled": true,
"emoji": undefined,
"label": "Next",
"style": 1,
"type": 2,
},
],
"type": 1,
},
}
`;
exports[`GenerateEffectEmbed GIVEN user has an effect, EXPECT detailed embed to be returned 1`] = `
{
"embed": {
"color": 3166394,
"description": "Unclaimed Chance Up x1",
"footer": {
"icon_url": undefined,
"text": "Page 1 of 1",
},
"title": "Effects",
},
"row": {
"components": [
{
"custom_id": "effects list 0",
"disabled": true,
"emoji": undefined,
"label": "Previous",
"style": 1,
"type": 2,
},
{
"custom_id": "effects list 2",
"disabled": true,
"emoji": undefined,
"label": "Next",
"style": 1,
"type": 2,
},
],
"type": 1,
},
}
`;
exports[`GenerateEffectEmbed GIVEN user has more than 1 page of effects, EXPECT pagination enabled 1`] = `
{
"embed": {
"color": 3166394,
"description": "Unclaimed Chance Up x1
Unclaimed Chance Up x1
Unclaimed Chance Up x1
Unclaimed Chance Up x1
Unclaimed Chance Up x1
Unclaimed Chance Up x1
Unclaimed Chance Up x1
Unclaimed Chance Up x1
Unclaimed Chance Up x1
Unclaimed Chance Up x1
Unclaimed Chance Up x1
Unclaimed Chance Up x1
Unclaimed Chance Up x1
Unclaimed Chance Up x1
Unclaimed Chance Up x1",
"footer": {
"icon_url": undefined,
"text": "Page 1 of 2",
},
"title": "Effects",
},
"row": {
"components": [
{
"custom_id": "effects list 0",
"disabled": true,
"emoji": undefined,
"label": "Previous",
"style": 1,
"type": 2,
},
{
"custom_id": "effects list 2",
"disabled": false,
"emoji": undefined,
"label": "Next",
"style": 1,
"type": 2,
},
],
"type": 1,
},
}
`;
exports[`GenerateEffectEmbed GIVEN user is on a page other than 1, EXPECT pagination enabled 1`] = `
{
"embed": {
"color": 3166394,
"description": "Unclaimed Chance Up x1
Unclaimed Chance Up x1
Unclaimed Chance Up x1
Unclaimed Chance Up x1
Unclaimed Chance Up x1
Unclaimed Chance Up x1
Unclaimed Chance Up x1
Unclaimed Chance Up x1
Unclaimed Chance Up x1
Unclaimed Chance Up x1
Unclaimed Chance Up x1
Unclaimed Chance Up x1
Unclaimed Chance Up x1
Unclaimed Chance Up x1
Unclaimed Chance Up x1",
"footer": {
"icon_url": undefined,
"text": "Page 2 of 2",
},
"title": "Effects",
},
"row": {
"components": [
{
"custom_id": "effects list 1",
"disabled": false,
"emoji": undefined,
"label": "Previous",
"style": 1,
"type": 2,
},
{
"custom_id": "effects list 3",
"disabled": true,
"emoji": undefined,
"label": "Next",
"style": 1,
"type": 2,
},
],
"type": 1,
},
}
`;