@retroachievements/api
Version:
A well-tested library that lets you get achievement, user, and game data from RetroAchievements.
142 lines (124 loc) • 3.09 kB
text/typescript
/* eslint-disable sonarjs/no-duplicate-string */
import { serializeProperties } from "./serializeProperties";
describe("Util: serializeProperties", () => {
it("is defined #sanity", () => {
// ASSERT
expect(serializeProperties).toBeDefined();
});
it("can serialize a simple object", () => {
// ARRANGE
const originalObject = {
ID: 1,
GameID: 100,
AchievementIDs: [1, 2, 3, 4, 5],
RAPoints: 100,
ConsoleName: "PlayStation Portable",
};
// ACT
const sanitizedObject = serializeProperties(originalObject);
// ASSERT
expect(sanitizedObject).toEqual({
id: 1,
gameId: 100,
achievementIds: [1, 2, 3, 4, 5],
raPoints: 100,
consoleName: "PlayStation Portable",
});
});
it("can serialize an array of objects", () => {
// ARRANGE
const originalArray = [
{
ID: 1,
GameID: 100,
AchievementIDs: [1, 2, 3, 4, 5],
RAPoints: 100,
ConsoleName: "PlayStation Portable",
},
];
// ACT
const sanitizedArray = serializeProperties(originalArray);
// ASSERT
expect(sanitizedArray).toEqual([
{
id: 1,
gameId: 100,
achievementIds: [1, 2, 3, 4, 5],
raPoints: 100,
consoleName: "PlayStation Portable",
},
]);
});
it("can serialize an object that contains nested objects", () => {
// ARRANGE
const originalObject = {
ID: 1,
GameID: 100,
AchievementIDs: [1, 2, 3, 4, 5],
RAPoints: 100,
ConsoleName: "PlayStation Portable",
UserMeta: {
Name: "xelnia",
Points: 100,
},
};
// ACT
const sanitizedObject = serializeProperties(originalObject);
// ASSERT
expect(sanitizedObject).toEqual({
id: 1,
gameId: 100,
achievementIds: [1, 2, 3, 4, 5],
raPoints: 100,
consoleName: "PlayStation Portable",
userMeta: {
name: "xelnia",
points: 100,
},
});
});
it("can be instructed to cast values of certain keys to numbers", () => {
// ARRANGE
const originalObject = {
UserName: "xelnia",
Points: "500",
Metadata: {
TitleID: "100",
},
};
// ACT
const sanitizedObject = serializeProperties(originalObject, {
shouldCastToNumbers: ["TitleID", "Points"],
});
// ASSERT
expect(sanitizedObject).toEqual({
userName: "xelnia",
points: 500,
metadata: {
titleId: 100,
},
});
});
it("can be instructed to map values of certain keys to booleans", () => {
// ARRANGE
const originalObject = {
UserName: "xelnia",
HardcoreMode: "0",
Metadata: {
IsCoolGuy: "1",
},
};
// ACT
const sanitizedObject = serializeProperties(originalObject, {
shouldMapToBooleans: ["HardcoreMode", "IsCoolGuy"],
});
// ASSERT
expect(sanitizedObject).toEqual({
userName: "xelnia",
hardcoreMode: false,
metadata: {
isCoolGuy: true,
},
});
});
});