From a916344fc2d32ef352f1a018034517402f3cbac2 Mon Sep 17 00:00:00 2001 From: Kath <55346310+Kathund@users.noreply.github.com> Date: Sun, 18 Feb 2024 09:40:14 +0800 Subject: [PATCH] Tests --- src/API/getAPIStatus.js | 2 +- src/utils/Constants.js | 4 +- tests/Client#getAPIStatus.js | 22 + tests/Client#getBoosters.js | 26 + tests/Client#getGameCounts.js | 242 ++++++++ tests/Client#getGuild.js | 750 ++++++++++++++++++++++++ tests/Client#getLeaderboards.js | 29 + tests/Client#getPlayer.js | 857 ++++++++++++++++++++++++++++ tests/Client#getRecentGames.js | 31 + tests/Client#getServerInfo.js | 184 ++++++ tests/Client#getSkyblockMember.js | 50 ++ tests/Client#getSkyblockNews.js | 21 + tests/Client#getSkyblockProfiles.js | 103 ++++ tests/Client#getStatus.js | 28 + tests/Client#getWatchdogStats.js | 20 + tests/Client.js | 4 + tests/test.js | 369 ------------ typings/index.d.ts | 8 +- 18 files changed, 2376 insertions(+), 374 deletions(-) create mode 100644 tests/Client#getAPIStatus.js create mode 100644 tests/Client#getBoosters.js create mode 100644 tests/Client#getGameCounts.js create mode 100644 tests/Client#getGuild.js create mode 100644 tests/Client#getLeaderboards.js create mode 100644 tests/Client#getPlayer.js create mode 100644 tests/Client#getRecentGames.js create mode 100644 tests/Client#getServerInfo.js create mode 100644 tests/Client#getSkyblockMember.js create mode 100644 tests/Client#getSkyblockNews.js create mode 100644 tests/Client#getSkyblockProfiles.js create mode 100644 tests/Client#getStatus.js create mode 100644 tests/Client#getWatchdogStats.js create mode 100644 tests/Client.js delete mode 100644 tests/test.js diff --git a/src/API/getAPIStatus.js b/src/API/getAPIStatus.js index d9bb796a..dacf897b 100644 --- a/src/API/getAPIStatus.js +++ b/src/API/getAPIStatus.js @@ -3,6 +3,6 @@ const Parser = new Rss(); module.exports = async function (options) { const Status = require('../structures/APIStatus.js'); const parsed = await Parser.parseURL('https://status.hypixel.net/history.rss'); - if (options.raw) return parsed; + if (options && options.raw) return parsed; return new Status(parsed); }; diff --git a/src/utils/Constants.js b/src/utils/Constants.js index 61b99ead..57574d0a 100644 --- a/src/utils/Constants.js +++ b/src/utils/Constants.js @@ -756,7 +756,8 @@ module.exports = { IDLE: 'Idle', QUEUE: 'Queue', MAIN_LOBBY: 'Main Lobby', - TOURNAMENT_LOBBY: 'Tournament Lobby' + TOURNAMENT_LOBBY: 'Tournament Lobby', + WOOL_GAMES: 'Wool Wars' }, SkyWarsPrestigeIcons: { default: '⋆', @@ -815,6 +816,7 @@ module.exports = { { name: 'The Pit', code: 'PIT', id: 64 }, { name: 'Replay', code: 'REPLAY', id: 65 }, { name: 'SMP', code: 'SMP', id: 67 }, + { name: 'Wool Wars', code: 'WOOL_GAMES', id: 68 }, { name: 'Limbo', code: 'LIMBO', id: -2 }, { name: 'Queue', code: 'QUEUE', id: -3 }, { name: 'Main Lobby', code: 'MAIN_LOBBY', id: -4 }, diff --git a/tests/Client#getAPIStatus.js b/tests/Client#getAPIStatus.js new file mode 100644 index 00000000..0256f0ff --- /dev/null +++ b/tests/Client#getAPIStatus.js @@ -0,0 +1,22 @@ +/* eslint-disable no-undef */ +const { APIIncident } = require('../src'); +const { client } = require('./Client.js'); +const { expect } = require('chai'); + +describe('Client#getAPIStatus', async () => { + let status; + it('expect not to throw', async () => { + status = await client.getAPIStatus(); + }); + it('should be an object', () => { + expect(status).to.be.an('object'); + }); + it('required keys should exist', () => { + if (status.sourceUrl) expect(status.sourceUrl).to.be.a('string'); + if (status.title) expect(status.title).to.be.a('string'); + if (status.description) expect(status.description).to.be.a('string'); + status.incidents.forEach((incident) => { + expect(incident).instanceOf(APIIncident); + }); + }); +}); \ No newline at end of file diff --git a/tests/Client#getBoosters.js b/tests/Client#getBoosters.js new file mode 100644 index 00000000..d1bfa930 --- /dev/null +++ b/tests/Client#getBoosters.js @@ -0,0 +1,26 @@ +const { client } = require('./Client.js'); +const { expect } = require('chai'); + +describe('Client#getBoosters', async () => { + let boosters; + it('expect not to throw', async () => { + boosters = await client.getBoosters(); + }); + it('should be an array', () => { + expect(boosters).to.be.an('array'); + }); + it('required keys should exist', () => { + boosters.forEach((booster) => { + expect(booster).to.have.property('purchaser').that.is.a('string'); + expect(booster).to.have.property('amount').that.is.a('number'); + expect(booster).to.have.property('originalLength').that.is.a('number'); + expect(booster).to.have.property('remaining').that.is.a('number'); + expect(booster).to.have.property('activatedTimestamp').that.is.a('number'); + expect(booster).to.have.property('activated').that.is.a('Date'); + expect(booster).to.have.property('isActive').that.is.a('boolean'); + expect(booster).to.have.property('type').that.is.oneOf(['QUEUED', 'STACKED', 'ACTIVE']); + expect(booster).to.have.property('stackers').that.is.an('array'); + expect(booster).to.have.property('expired').that.is.a('boolean'); + }); + }); +}); \ No newline at end of file diff --git a/tests/Client#getGameCounts.js b/tests/Client#getGameCounts.js new file mode 100644 index 00000000..cc5d2260 --- /dev/null +++ b/tests/Client#getGameCounts.js @@ -0,0 +1,242 @@ +/* eslint-disable no-undef */ +const { client } = require('./Client.js'); +const { expect } = require('chai'); + +describe('Client#getGameCounts', async () => { + let gameCounts; + it('expect not to throw', async () => { + gameCounts = await client.getGameCounts(); + }); + it('should be an object ', () => { + expect(gameCounts).to.be.an('object'); + }); + it('required keys should exist', () => { + expect(gameCounts.playerCount).to.be.a('number'); + + expect(gameCounts.mainLobby).to.be.a('object'); + expect(gameCounts.mainLobby.players).to.be.a('number'); + + if (gameCounts.tournamentLobby) { + expect(gameCounts.tournamentLobby).to.be.a('object'); + expect(gameCounts.tournamentLobby.players).to.be.a('number'); + } + + if (gameCounts.smp) { + expect(gameCounts.smp).to.be.a('object'); + expect(gameCounts.smp.players).to.be.a('number'); + } + + if (gameCounts.bedwars) { + expect(gameCounts.bedwars).to.be.a('object'); + expect(gameCounts.bedwars.players).to.be.a('number'); + if (gameCounts.bedwars.modes) { + expect(gameCounts.bedwars.modes).to.be.a('object'); + for (const mode in gameCounts.bedwars.modes) { + expect(gameCounts.bedwars.modes[mode]).to.be.a('number'); + } + } + } + + if (gameCounts.thePit) { + expect(gameCounts.thePit).to.be.a('object'); + expect(gameCounts.thePit.players).to.be.a('number'); + if (gameCounts.thePit.modes) { + expect(gameCounts.thePit.modes).to.be.a('object'); + for (const mode in gameCounts.thePit.modes) { + expect(gameCounts.thePit.modes[mode]).to.be.a('number'); + } + } + } + + if (gameCounts.theTntGames) { + expect(gameCounts.theTntGames).to.be.a('object'); + expect(gameCounts.theTntGames.players).to.be.a('number'); + if (gameCounts.theTntGames.modes) { + expect(gameCounts.theTntGames.modes).to.be.a('object'); + for (const mode in gameCounts.theTntGames.modes) { + expect(gameCounts.theTntGames.modes[mode]).to.be.a('number'); + } + } + } + + if (gameCounts.classicGames) { + expect(gameCounts.classicGames).to.be.a('object'); + expect(gameCounts.classicGames.players).to.be.a('number'); + if (gameCounts.classicGames.modes) { + expect(gameCounts.classicGames.modes).to.be.a('object'); + for (const mode in gameCounts.classicGames.modes) { + expect(gameCounts.classicGames.modes[mode]).to.be.a('number'); + } + } + } + + if (gameCounts.warlords) { + expect(gameCounts.warlords).to.be.a('object'); + expect(gameCounts.warlords.players).to.be.a('number'); + } + + if (gameCounts.duels) { + expect(gameCounts.duels).to.be.a('object'); + expect(gameCounts.duels.players).to.be.a('number'); + if (gameCounts.duels.modes) { + expect(gameCounts.duels.modes).to.be.a('object'); + for (const mode in gameCounts.duels.modes) { + expect(gameCounts.duels.modes[mode]).to.be.a('number'); + } + } + } + + if (gameCounts.smashHeroes) { + expect(gameCounts.smashHeroes).to.be.a('object'); + expect(gameCounts.smashHeroes.players).to.be.a('number'); + if (gameCounts.smashHeroes.modes) { + expect(gameCounts.smashHeroes.modes).to.be.a('object'); + for (const mode in gameCounts.smashHeroes.modes) { + expect(gameCounts.smashHeroes.modes[mode]).to.be.a('number'); + } + } + } + + if (gameCounts.skyblock) { + expect(gameCounts.skyblock).to.be.a('object'); + expect(gameCounts.skyblock.players).to.be.a('number'); + if (gameCounts.skyblock.modes) { + expect(gameCounts.skyblock.modes).to.be.a('object'); + for (const mode in gameCounts.skyblock.modes) { + expect(gameCounts.skyblock.modes[mode]).to.be.a('number'); + } + } + } + + if (gameCounts.uhcChampions) { + expect(gameCounts.uhcChampions).to.be.a('object'); + expect(gameCounts.uhcChampions.players).to.be.a('number'); + if (gameCounts.uhcChampions.modes) { + expect(gameCounts.uhcChampions.modes).to.be.a('object'); + for (const mode in gameCounts.uhcChampions.modes) { + expect(gameCounts.uhcChampions.modes[mode]).to.be.a('number'); + } + } + } + + if (gameCounts.blitzSurvivalGames) { + expect(gameCounts.blitzSurvivalGames).to.be.a('object'); + expect(gameCounts.blitzSurvivalGames.players).to.be.a('number'); + if (gameCounts.blitzSurvivalGames.modes) { + expect(gameCounts.blitzSurvivalGames.modes).to.be.a('object'); + for (const mode in gameCounts.blitzSurvivalGames.modes) { + expect(gameCounts.blitzSurvivalGames.modes[mode]).to.be.a('number'); + } + } + } + + if (gameCounts.murderMystery) { + expect(gameCounts.murderMystery).to.be.a('object'); + expect(gameCounts.murderMystery.players).to.be.a('number'); + if (gameCounts.murderMystery.modes) { + expect(gameCounts.murderMystery.modes).to.be.a('object'); + for (const mode in gameCounts.murderMystery.modes) { + expect(gameCounts.murderMystery.modes[mode]).to.be.a('number'); + } + } + } + + if (gameCounts.speedUhc) { + expect(gameCounts.speedUhc).to.be.a('object'); + expect(gameCounts.speedUhc.players).to.be.a('number'); + } + + if (gameCounts.copsAndCrims) { + expect(gameCounts.copsAndCrims).to.be.a('object'); + expect(gameCounts.copsAndCrims.players).to.be.a('number'); + if (gameCounts.copsAndCrims.modes) { + expect(gameCounts.copsAndCrims.modes).to.be.a('object'); + for (const mode in gameCounts.copsAndCrims.modes) { + expect(gameCounts.copsAndCrims.modes[mode]).to.be.a('number'); + } + } + } + + if (gameCounts.skywars) { + expect(gameCounts.skywars).to.be.a('object'); + expect(gameCounts.skywars.players).to.be.a('number'); + if (gameCounts.skywars.modes) { + expect(gameCounts.skywars.modes).to.be.a('object'); + for (const mode in gameCounts.skywars.modes) { + expect(gameCounts.skywars.modes[mode]).to.be.a('number'); + } + } + } + + if (gameCounts.replay) { + expect(gameCounts.replay).to.be.a('object'); + expect(gameCounts.replay.players).to.be.a('number'); + if (gameCounts.replay.modes) { + expect(gameCounts.replay.modes).to.be.a('object'); + for (const mode in gameCounts.replay.modes) { + expect(gameCounts.replay.modes[mode]).to.be.a('number'); + } + } + } + + if (gameCounts.arcade) { + expect(gameCounts.arcade).to.be.a('object'); + expect(gameCounts.arcade.players).to.be.a('number'); + if (gameCounts.arcade.modes) { + expect(gameCounts.arcade.modes).to.be.a('object'); + for (const mode in gameCounts.arcade.modes) { + expect(gameCounts.arcade.modes[mode]).to.be.a('number'); + } + } + } + + if (gameCounts.woolGames) { + expect(gameCounts.woolGames).to.be.a('object'); + expect(gameCounts.woolGames.players).to.be.a('number'); + if (gameCounts.woolGames.modes) { + expect(gameCounts.woolGames.modes).to.be.a('object'); + for (const mode in gameCounts.woolGames.modes) { + expect(gameCounts.woolGames.modes[mode]).to.be.a('number'); + } + } + } + + if (gameCounts.housing) { + expect(gameCounts.housing).to.be.a('object'); + expect(gameCounts.housing.players).to.be.a('number'); + } + + if (gameCounts.megaWalls) { + expect(gameCounts.megaWalls).to.be.a('object'); + expect(gameCounts.megaWalls.players).to.be.a('number'); + expect(gameCounts.megaWalls.modes).to.be.a('object'); + for (const mode in gameCounts.megaWalls.modes) { + expect(gameCounts.megaWalls.modes[mode]).to.be.a('number'); + } + } + + if (gameCounts.buildBattle) { + expect(gameCounts.buildBattle).to.be.a('object'); + expect(gameCounts.buildBattle.players).to.be.a('number'); + expect(gameCounts.buildBattle.modes).to.be.a('object'); + for (const mode in gameCounts.buildBattle.modes) { + expect(gameCounts.buildBattle.modes[mode]).to.be.a('number'); + } + } + + if (gameCounts.limbo) { + expect(gameCounts.limbo).to.be.a('object'); + expect(gameCounts.limbo.players).to.be.a('number'); + } + + if (gameCounts.idle) { + expect(gameCounts.idle).to.be.a('object'); + expect(gameCounts.idle.players).to.be.a('number'); + } + + if (gameCounts.queue) { + expect(gameCounts.queue).to.be.a('object'); + expect(gameCounts.queue.players).to.be.a('number'); + } + }); +}); \ No newline at end of file diff --git a/tests/Client#getGuild.js b/tests/Client#getGuild.js new file mode 100644 index 00000000..7d99148c --- /dev/null +++ b/tests/Client#getGuild.js @@ -0,0 +1,750 @@ +/* eslint-disable no-undef */ +const { Game, Errors } = require('../src'); +const { client } = require('./Client.js'); +const { expect } = require('chai'); + +describe('Client#getGuild', async () => { + let guildName; + let guildId; + let guildPlayer; + describe('Valid', async () => { + describe('Guild 1', async () => { + describe('Guild Name', async () => { + it('expect not to throw', async () => { + guildName = await client.getGuild('name', 'PancakeSquad'); + }); + it('should be an object', () => { + expect(guildName).to.be.an('object'); + }); + it('required keys should exist', () => { + expect(guildName.id).to.be.a('string'); + expect(guildName.name).to.be.a('string'); + expect(guildName.description).to.be.a('string'); + expect(guildName.experience).to.be.a('number'); + expect(guildName.level).to.be.a('number'); + expect(guildName.members).to.be.an('array'); + guildName.members.forEach((member) => { + expect(member).to.be.an('object'); + expect(member.uuid).to.be.a('string'); + expect(member.joinedAtTimestamp).to.be.a('number'); + expect(member.joinedAt).to.be.a('Date'); + expect(member.questParticipation).to.be.a('number'); + expect(member.rank).to.be.a('string'); + expect(member.expHistory).to.be.a('array'); + member.expHistory.forEach((history) => { + expect(history).to.be.a('object'); + expect(history.day).to.be.a('string'); + expect(history.date).to.be.a('date'); + expect(history.exp).to.be.a('number'); + expect(history.totalExp).to.be.a('number'); + }); + expect(member.weeklyExperience).to.be.a('number'); + }); + if (guildName.me) { + expect(guildName.me).to.be.an('object'); + expect(guildName.me.uuid).to.be.a('string'); + expect(guildName.me.joinedAtTimestamp).to.be.a('number'); + expect(guildName.me.joinedAt).to.be.a('Date'); + expect(guildName.me.questParticipation).to.be.a('number'); + expect(guildName.me.rank).to.be.a('string'); + expect(guildName.me.expHistory).to.be.a('array'); + guildName.me.expHistory.forEach((history) => { + expect(history).to.be.a('object'); + expect(history.day).to.be.a('string'); + expect(history.date).to.be.a('date'); + expect(history.exp).to.be.a('number'); + expect(history.totalExp).to.be.a('number'); + }); + expect(guildName.me.weeklyExperience).to.be.a('number'); + } + expect(guildName.ranks).to.be.an('array'); + guildName.ranks.forEach((rank) => { + expect(rank).to.be.an('object'); + expect(rank.name).to.be.a('string'); + expect(rank.default).to.be.a('boolean'); + if (rank.tag) expect(rank.tag).to.be.a('string'); + expect(rank.createdAt).to.be.a('date'); + expect(rank.createdAtTimestamp).to.be.a('number'); + expect(rank.priority).to.be.a('number'); + }); + expect(guildName.totalWeeklyGexp).to.be.a('number'); + expect(guildName.createdAtTimestamp).to.be.a('number'); + expect(guildName.createdAt).to.be.a('date'); + expect(guildName.joinable).to.be.a('boolean'); + expect(guildName.publiclyListed).to.be.a('boolean'); + if (guildName.banner) { + expect(guildName.banner).to.be.a('object'); + expect(guildName.banner['Base']).to.be.a('string'); + expect(guildName.banner['Patterns']).to.be.an('array'); + guildName.banner['Patterns'].forEach((pattern) => { + expect(pattern).to.be.a('object'); + expect(pattern['Pattern']).to.be.a('string'); + expect(pattern['Color']).that.satisfies((value) => typeof value === 'number' || typeof value === 'string'); + }); + } + if (guildName.tag) expect(guildName.tag).to.be.a('string'); + if (guildName.tagColor) { + expect(guildName.tagColor.color).to.be.a('string'); + expect(guildName.tagColor.color).to.be.oneOf([ + 'BLACK', + 'DARK_BLUE', + 'DARK_GREEN', + 'DARK_AQUA', + 'DARK_RED', + 'DARK_PURPLE', + 'GOLD', + 'GRAY', + 'DARK_GRAY', + 'BLUE', + 'GREEN', + 'AQUA', + 'RED', + 'LIGHT_PURPLE', + 'YELLOW', + 'WHITE' + ]); + } + expect(guildName.legacyRank).to.be.a('number'); + expect(guildName.expHistory).to.be.a('array'); + guildName.expHistory.forEach((history) => { + expect(history).to.be.a('object'); + expect(history.day).to.be.a('string'); + expect(history.date).to.be.a('date'); + expect(history.exp).to.be.a('number'); + expect(history.totalExp).to.be.a('number'); + expect(guildName.achievements).to.be.a('object'); + expect(guildName.achievements.winners).to.be.a('number'); + expect(guildName.achievements.experienceKings).to.be.a('number'); + expect(guildName.achievements.onlinePlayers).to.be.a('number'); + expect(guildName.preferredGames).to.be.an('array'); + guildName.preferredGames.forEach((game) => { + expect(game).instanceOf(Game); + }); + }); + }); + }); + describe('Guild Id', async () => { + it('expect not to throw', async () => { + guildId = await client.getGuild('id', '557c75d90cf2ce51d4a92368'); + }); + it('should be an object', () => { + expect(guildId).to.be.an('object'); + }); + + it('required keys should exist', () => { + expect(guildId.id).to.be.a('string'); + expect(guildId.name).to.be.a('string'); + expect(guildId.description).to.be.a('string'); + expect(guildId.experience).to.be.a('number'); + expect(guildId.level).to.be.a('number'); + expect(guildId.members).to.be.an('array'); + guildId.members.forEach((member) => { + expect(member).to.be.an('object'); + expect(member.uuid).to.be.a('string'); + expect(member.joinedAtTimestamp).to.be.a('number'); + expect(member.joinedAt).to.be.a('Date'); + expect(member.questParticipation).to.be.a('number'); + expect(member.rank).to.be.a('string'); + expect(member.expHistory).to.be.a('array'); + member.expHistory.forEach((history) => { + expect(history).to.be.a('object'); + expect(history.day).to.be.a('string'); + expect(history.date).to.be.a('date'); + expect(history.exp).to.be.a('number'); + expect(history.totalExp).to.be.a('number'); + }); + expect(member.weeklyExperience).to.be.a('number'); + }); + if (guildId.me) { + expect(guildId.me).to.be.an('object'); + expect(guildId.me.uuid).to.be.a('string'); + expect(guildId.me.joinedAtTimestamp).to.be.a('number'); + expect(guildId.me.joinedAt).to.be.a('Date'); + expect(guildId.me.questParticipation).to.be.a('number'); + expect(guildId.me.rank).to.be.a('string'); + expect(guildId.me.expHistory).to.be.a('array'); + guildId.me.expHistory.forEach((history) => { + expect(history).to.be.a('object'); + expect(history.day).to.be.a('string'); + expect(history.date).to.be.a('date'); + expect(history.exp).to.be.a('number'); + expect(history.totalExp).to.be.a('number'); + }); + expect(guildId.me.weeklyExperience).to.be.a('number'); + } + expect(guildId.ranks).to.be.an('array'); + guildId.ranks.forEach((rank) => { + expect(rank).to.be.an('object'); + expect(rank.name).to.be.a('string'); + expect(rank.default).to.be.a('boolean'); + if (rank.tag) expect(rank.tag).to.be.a('string'); + expect(rank.createdAt).to.be.a('date'); + expect(rank.createdAtTimestamp).to.be.a('number'); + expect(rank.priority).to.be.a('number'); + }); + expect(guildId.totalWeeklyGexp).to.be.a('number'); + expect(guildId.createdAtTimestamp).to.be.a('number'); + expect(guildId.createdAt).to.be.a('date'); + expect(guildId.joinable).to.be.a('boolean'); + expect(guildId.publiclyListed).to.be.a('boolean'); + if (guildId.banner) { + expect(guildId.banner).to.be.a('object'); + expect(guildId.banner['Base']).to.be.a('string'); + expect(guildId.banner['Patterns']).to.be.an('array'); + guildId.banner['Patterns'].forEach((pattern) => { + expect(pattern).to.be.a('object'); + expect(pattern['Pattern']).to.be.a('string'); + expect(pattern['Color']).that.satisfies((value) => typeof value === 'number' || typeof value === 'string'); + }); + } + if (guildId.tag) expect(guildId.tag).to.be.a('string'); + if (guildId.tagColor) { + expect(guildId.tagColor.color).to.be.a('string'); + expect(guildId.tagColor.color).to.be.oneOf([ + 'BLACK', + 'DARK_BLUE', + 'DARK_GREEN', + 'DARK_AQUA', + 'DARK_RED', + 'DARK_PURPLE', + 'GOLD', + 'GRAY', + 'DARK_GRAY', + 'BLUE', + 'GREEN', + 'AQUA', + 'RED', + 'LIGHT_PURPLE', + 'YELLOW', + 'WHITE' + ]); + } + expect(guildId.legacyRank).to.be.a('number'); + expect(guildId.expHistory).to.be.a('array'); + guildId.expHistory.forEach((history) => { + expect(history).to.be.a('object'); + expect(history.day).to.be.a('string'); + expect(history.date).to.be.a('date'); + expect(history.exp).to.be.a('number'); + expect(history.totalExp).to.be.a('number'); + expect(guildId.achievements).to.be.a('object'); + expect(guildId.achievements.winners).to.be.a('number'); + expect(guildId.achievements.experienceKings).to.be.a('number'); + expect(guildId.achievements.onlinePlayers).to.be.a('number'); + expect(guildId.preferredGames).to.be.an('array'); + guildId.preferredGames.forEach((game) => { + expect(game).instanceOf(Game); + }); + }); + }); + }); + describe('Guild Player', async () => { + it('expect not to throw', async () => { + guildPlayer = await client.getGuild('player', 'f025c1c7f55a4ea0b8d93f47d17dfe0f'); + }); + it('should be an object', () => { + expect(guildPlayer).to.be.an('object'); + }); + it('required keys should exist', () => { + expect(guildPlayer.id).to.be.a('string'); + expect(guildPlayer.name).to.be.a('string'); + expect(guildPlayer.description).to.be.a('string'); + expect(guildPlayer.experience).to.be.a('number'); + expect(guildPlayer.level).to.be.a('number'); + expect(guildPlayer.members).to.be.an('array'); + guildPlayer.members.forEach((member) => { + expect(member).to.be.an('object'); + expect(member.uuid).to.be.a('string'); + expect(member.joinedAtTimestamp).to.be.a('number'); + expect(member.joinedAt).to.be.a('Date'); + expect(member.questParticipation).to.be.a('number'); + expect(member.rank).to.be.a('string'); + expect(member.expHistory).to.be.a('array'); + member.expHistory.forEach((history) => { + expect(history).to.be.a('object'); + expect(history.day).to.be.a('string'); + expect(history.date).to.be.a('date'); + expect(history.exp).to.be.a('number'); + expect(history.totalExp).to.be.a('number'); + }); + expect(member.weeklyExperience).to.be.a('number'); + }); + if (guildPlayer.me) { + expect(guildPlayer.me).to.be.an('object'); + expect(guildPlayer.me.uuid).to.be.a('string'); + expect(guildPlayer.me.joinedAtTimestamp).to.be.a('number'); + expect(guildPlayer.me.joinedAt).to.be.a('Date'); + expect(guildPlayer.me.questParticipation).to.be.a('number'); + expect(guildPlayer.me.rank).to.be.a('string'); + expect(guildPlayer.me.expHistory).to.be.a('array'); + guildPlayer.me.expHistory.forEach((history) => { + expect(history).to.be.a('object'); + expect(history.day).to.be.a('string'); + expect(history.date).to.be.a('date'); + expect(history.exp).to.be.a('number'); + expect(history.totalExp).to.be.a('number'); + }); + expect(guildPlayer.me.weeklyExperience).to.be.a('number'); + } + expect(guildPlayer.ranks).to.be.an('array'); + guildPlayer.ranks.forEach((rank) => { + expect(rank).to.be.an('object'); + expect(rank.name).to.be.a('string'); + expect(rank.default).to.be.a('boolean'); + if (rank.tag) expect(rank.tag).to.be.a('string'); + expect(rank.createdAt).to.be.a('date'); + expect(rank.createdAtTimestamp).to.be.a('number'); + expect(rank.priority).to.be.a('number'); + }); + expect(guildPlayer.totalWeeklyGexp).to.be.a('number'); + expect(guildPlayer.createdAtTimestamp).to.be.a('number'); + expect(guildPlayer.createdAt).to.be.a('date'); + expect(guildPlayer.joinable).to.be.a('boolean'); + expect(guildPlayer.publiclyListed).to.be.a('boolean'); + if (guildPlayer.banner) { + expect(guildPlayer.banner).to.be.a('object'); + expect(guildPlayer.banner['Base']).to.be.a('string'); + expect(guildPlayer.banner['Patterns']).to.be.an('array'); + guildPlayer.banner['Patterns'].forEach((pattern) => { + expect(pattern).to.be.a('object'); + expect(pattern['Pattern']).to.be.a('string'); + expect(pattern['Color']).that.satisfies((value) => typeof value === 'number' || typeof value === 'string'); + }); + } + if (guildPlayer.tag) expect(guildPlayer.tag).to.be.a('string'); + if (guildPlayer.tagColor) { + expect(guildPlayer.tagColor.color).to.be.a('string'); + expect(guildPlayer.tagColor.color).to.be.oneOf([ + 'BLACK', + 'DARK_BLUE', + 'DARK_GREEN', + 'DARK_AQUA', + 'DARK_RED', + 'DARK_PURPLE', + 'GOLD', + 'GRAY', + 'DARK_GRAY', + 'BLUE', + 'GREEN', + 'AQUA', + 'RED', + 'LIGHT_PURPLE', + 'YELLOW', + 'WHITE' + ]); + } + expect(guildPlayer.legacyRank).to.be.a('number'); + expect(guildPlayer.expHistory).to.be.a('array'); + guildPlayer.expHistory.forEach((history) => { + expect(history).to.be.a('object'); + expect(history.day).to.be.a('string'); + expect(history.date).to.be.a('date'); + expect(history.exp).to.be.a('number'); + expect(history.totalExp).to.be.a('number'); + expect(guildPlayer.achievements).to.be.a('object'); + expect(guildPlayer.achievements.winners).to.be.a('number'); + expect(guildPlayer.achievements.experienceKings).to.be.a('number'); + expect(guildPlayer.achievements.onlinePlayers).to.be.a('number'); + expect(guildPlayer.preferredGames).to.be.an('array'); + guildPlayer.preferredGames.forEach((game) => { + expect(game).instanceOf(Game); + }); + }); + }); + }); + }); + describe('Guild 2', async () => { + describe('Guild Name', async () => { + it('expect not to throw', async () => { + guildName = await client.getGuild('name', 'WristSpasm'); + }); + it('should be an object', () => { + expect(guildName).to.be.an('object'); + }); + it('required keys should exist', () => { + expect(guildName.id).to.be.a('string'); + expect(guildName.name).to.be.a('string'); + expect(guildName.description).to.be.a('string'); + expect(guildName.experience).to.be.a('number'); + expect(guildName.level).to.be.a('number'); + expect(guildName.members).to.be.an('array'); + guildName.members.forEach((member) => { + expect(member).to.be.an('object'); + expect(member.uuid).to.be.a('string'); + expect(member.joinedAtTimestamp).to.be.a('number'); + expect(member.joinedAt).to.be.a('Date'); + expect(member.questParticipation).to.be.a('number'); + expect(member.rank).to.be.a('string'); + expect(member.expHistory).to.be.a('array'); + member.expHistory.forEach((history) => { + expect(history).to.be.a('object'); + expect(history.day).to.be.a('string'); + expect(history.date).to.be.a('date'); + expect(history.exp).to.be.a('number'); + expect(history.totalExp).to.be.a('number'); + }); + expect(member.weeklyExperience).to.be.a('number'); + }); + if (guildName.me) { + expect(guildName.me).to.be.an('object'); + expect(guildName.me.uuid).to.be.a('string'); + expect(guildName.me.joinedAtTimestamp).to.be.a('number'); + expect(guildName.me.joinedAt).to.be.a('Date'); + expect(guildName.me.questParticipation).to.be.a('number'); + expect(guildName.me.rank).to.be.a('string'); + expect(guildName.me.expHistory).to.be.a('array'); + guildName.me.expHistory.forEach((history) => { + expect(history).to.be.a('object'); + expect(history.day).to.be.a('string'); + expect(history.date).to.be.a('date'); + expect(history.exp).to.be.a('number'); + expect(history.totalExp).to.be.a('number'); + }); + expect(guildName.me.weeklyExperience).to.be.a('number'); + } + expect(guildName.ranks).to.be.an('array'); + guildName.ranks.forEach((rank) => { + expect(rank).to.be.an('object'); + expect(rank.name).to.be.a('string'); + expect(rank.default).to.be.a('boolean'); + if (rank.tag) expect(rank.tag).to.be.a('string'); + expect(rank.createdAt).to.be.a('date'); + expect(rank.createdAtTimestamp).to.be.a('number'); + expect(rank.priority).to.be.a('number'); + }); + expect(guildName.totalWeeklyGexp).to.be.a('number'); + expect(guildName.createdAtTimestamp).to.be.a('number'); + expect(guildName.createdAt).to.be.a('date'); + expect(guildName.joinable).to.be.a('boolean'); + expect(guildName.publiclyListed).to.be.a('boolean'); + if (guildName.banner) { + expect(guildName.banner).to.be.a('object'); + expect(guildName.banner['Base']).to.be.a('string'); + expect(guildName.banner['Patterns']).to.be.an('array'); + guildName.banner['Patterns'].forEach((pattern) => { + expect(pattern).to.be.a('object'); + expect(pattern['Pattern']).to.be.a('string'); + expect(pattern['Color']).that.satisfies((value) => typeof value === 'number' || typeof value === 'string'); + }); + } + if (guildName.tag) expect(guildName.tag).to.be.a('string'); + if (guildName.tagColor) { + expect(guildName.tagColor.color).to.be.a('string'); + expect(guildName.tagColor.color).to.be.oneOf([ + 'BLACK', + 'DARK_BLUE', + 'DARK_GREEN', + 'DARK_AQUA', + 'DARK_RED', + 'DARK_PURPLE', + 'GOLD', + 'GRAY', + 'DARK_GRAY', + 'BLUE', + 'GREEN', + 'AQUA', + 'RED', + 'LIGHT_PURPLE', + 'YELLOW', + 'WHITE' + ]); + } + expect(guildName.legacyRank).to.be.a('number'); + expect(guildName.expHistory).to.be.a('array'); + guildName.expHistory.forEach((history) => { + expect(history).to.be.a('object'); + expect(history.day).to.be.a('string'); + expect(history.date).to.be.a('date'); + expect(history.exp).to.be.a('number'); + expect(history.totalExp).to.be.a('number'); + expect(guildName.achievements).to.be.a('object'); + expect(guildName.achievements.winners).to.be.a('number'); + expect(guildName.achievements.experienceKings).to.be.a('number'); + expect(guildName.achievements.onlinePlayers).to.be.a('number'); + expect(guildName.preferredGames).to.be.an('array'); + guildName.preferredGames.forEach((game) => { + expect(game).instanceOf(Game); + }); + }); + }); + }); + describe('Guild Id', async () => { + it('expect not to throw', async () => { + guildId = await client.getGuild('id', '5b8dd8cb0cf24573ab84c9ad'); + }); + it('should be an object', () => { + expect(guildId).to.be.an('object'); + }); + + it('required keys should exist', () => { + expect(guildId.id).to.be.a('string'); + expect(guildId.name).to.be.a('string'); + expect(guildId.description).to.be.a('string'); + expect(guildId.experience).to.be.a('number'); + expect(guildId.level).to.be.a('number'); + expect(guildId.members).to.be.an('array'); + guildId.members.forEach((member) => { + expect(member).to.be.an('object'); + expect(member.uuid).to.be.a('string'); + expect(member.joinedAtTimestamp).to.be.a('number'); + expect(member.joinedAt).to.be.a('Date'); + expect(member.questParticipation).to.be.a('number'); + expect(member.rank).to.be.a('string'); + expect(member.expHistory).to.be.a('array'); + member.expHistory.forEach((history) => { + expect(history).to.be.a('object'); + expect(history.day).to.be.a('string'); + expect(history.date).to.be.a('date'); + expect(history.exp).to.be.a('number'); + expect(history.totalExp).to.be.a('number'); + }); + expect(member.weeklyExperience).to.be.a('number'); + }); + if (guildId.me) { + expect(guildId.me).to.be.an('object'); + expect(guildId.me.uuid).to.be.a('string'); + expect(guildId.me.joinedAtTimestamp).to.be.a('number'); + expect(guildId.me.joinedAt).to.be.a('Date'); + expect(guildId.me.questParticipation).to.be.a('number'); + expect(guildId.me.rank).to.be.a('string'); + expect(guildId.me.expHistory).to.be.a('array'); + guildId.me.expHistory.forEach((history) => { + expect(history).to.be.a('object'); + expect(history.day).to.be.a('string'); + expect(history.date).to.be.a('date'); + expect(history.exp).to.be.a('number'); + expect(history.totalExp).to.be.a('number'); + }); + expect(guildId.me.weeklyExperience).to.be.a('number'); + } + expect(guildId.ranks).to.be.an('array'); + guildId.ranks.forEach((rank) => { + expect(rank).to.be.an('object'); + expect(rank.name).to.be.a('string'); + expect(rank.default).to.be.a('boolean'); + if (rank.tag) expect(rank.tag).to.be.a('string'); + expect(rank.createdAt).to.be.a('date'); + expect(rank.createdAtTimestamp).to.be.a('number'); + expect(rank.priority).to.be.a('number'); + }); + expect(guildId.totalWeeklyGexp).to.be.a('number'); + expect(guildId.createdAtTimestamp).to.be.a('number'); + expect(guildId.createdAt).to.be.a('date'); + expect(guildId.joinable).to.be.a('boolean'); + expect(guildId.publiclyListed).to.be.a('boolean'); + if (guildId.banner) { + expect(guildId.banner).to.be.a('object'); + expect(guildId.banner['Base']).to.be.a('string'); + expect(guildId.banner['Patterns']).to.be.an('array'); + guildId.banner['Patterns'].forEach((pattern) => { + expect(pattern).to.be.a('object'); + expect(pattern['Pattern']).to.be.a('string'); + expect(pattern['Color']).that.satisfies((value) => typeof value === 'number' || typeof value === 'string'); + }); + } + if (guildId.tag) expect(guildId.tag).to.be.a('string'); + if (guildId.tagColor) { + expect(guildId.tagColor.color).to.be.a('string'); + expect(guildId.tagColor.color).to.be.oneOf([ + 'BLACK', + 'DARK_BLUE', + 'DARK_GREEN', + 'DARK_AQUA', + 'DARK_RED', + 'DARK_PURPLE', + 'GOLD', + 'GRAY', + 'DARK_GRAY', + 'BLUE', + 'GREEN', + 'AQUA', + 'RED', + 'LIGHT_PURPLE', + 'YELLOW', + 'WHITE' + ]); + } + expect(guildId.legacyRank).to.be.a('number'); + expect(guildId.expHistory).to.be.a('array'); + guildId.expHistory.forEach((history) => { + expect(history).to.be.a('object'); + expect(history.day).to.be.a('string'); + expect(history.date).to.be.a('date'); + expect(history.exp).to.be.a('number'); + expect(history.totalExp).to.be.a('number'); + expect(guildId.achievements).to.be.a('object'); + expect(guildId.achievements.winners).to.be.a('number'); + expect(guildId.achievements.experienceKings).to.be.a('number'); + expect(guildId.achievements.onlinePlayers).to.be.a('number'); + expect(guildId.preferredGames).to.be.an('array'); + guildId.preferredGames.forEach((game) => { + expect(game).instanceOf(Game); + }); + }); + }); + }); + describe('Guild Player', async () => { + it('expect not to throw', async () => { + guildPlayer = await client.getGuild('player', '2700c8b565c74d8e9be5eb7a6ae19295'); + }); + it('should be an object', () => { + expect(guildPlayer).to.be.an('object'); + }); + it('required keys should exist', () => { + expect(guildPlayer.id).to.be.a('string'); + expect(guildPlayer.name).to.be.a('string'); + expect(guildPlayer.description).to.be.a('string'); + expect(guildPlayer.experience).to.be.a('number'); + expect(guildPlayer.level).to.be.a('number'); + expect(guildPlayer.members).to.be.an('array'); + guildPlayer.members.forEach((member) => { + expect(member).to.be.an('object'); + expect(member.uuid).to.be.a('string'); + expect(member.joinedAtTimestamp).to.be.a('number'); + expect(member.joinedAt).to.be.a('Date'); + expect(member.questParticipation).to.be.a('number'); + expect(member.rank).to.be.a('string'); + expect(member.expHistory).to.be.a('array'); + member.expHistory.forEach((history) => { + expect(history).to.be.a('object'); + expect(history.day).to.be.a('string'); + expect(history.date).to.be.a('date'); + expect(history.exp).to.be.a('number'); + expect(history.totalExp).to.be.a('number'); + }); + expect(member.weeklyExperience).to.be.a('number'); + }); + if (guildPlayer.me) { + expect(guildPlayer.me).to.be.an('object'); + expect(guildPlayer.me.uuid).to.be.a('string'); + expect(guildPlayer.me.joinedAtTimestamp).to.be.a('number'); + expect(guildPlayer.me.joinedAt).to.be.a('Date'); + expect(guildPlayer.me.questParticipation).to.be.a('number'); + expect(guildPlayer.me.rank).to.be.a('string'); + expect(guildPlayer.me.expHistory).to.be.a('array'); + guildPlayer.me.expHistory.forEach((history) => { + expect(history).to.be.a('object'); + expect(history.day).to.be.a('string'); + expect(history.date).to.be.a('date'); + expect(history.exp).to.be.a('number'); + expect(history.totalExp).to.be.a('number'); + }); + expect(guildPlayer.me.weeklyExperience).to.be.a('number'); + } + expect(guildPlayer.ranks).to.be.an('array'); + guildPlayer.ranks.forEach((rank) => { + expect(rank).to.be.an('object'); + expect(rank.name).to.be.a('string'); + expect(rank.default).to.be.a('boolean'); + if (rank.tag) expect(rank.tag).to.be.a('string'); + expect(rank.createdAt).to.be.a('date'); + expect(rank.createdAtTimestamp).to.be.a('number'); + expect(rank.priority).to.be.a('number'); + }); + expect(guildPlayer.totalWeeklyGexp).to.be.a('number'); + expect(guildPlayer.createdAtTimestamp).to.be.a('number'); + expect(guildPlayer.createdAt).to.be.a('date'); + expect(guildPlayer.joinable).to.be.a('boolean'); + expect(guildPlayer.publiclyListed).to.be.a('boolean'); + if (guildPlayer.banner) { + expect(guildPlayer.banner).to.be.a('object'); + expect(guildPlayer.banner['Base']).to.be.a('string'); + expect(guildPlayer.banner['Patterns']).to.be.an('array'); + guildPlayer.banner['Patterns'].forEach((pattern) => { + expect(pattern).to.be.a('object'); + expect(pattern['Pattern']).to.be.a('string'); + expect(pattern['Color']).that.satisfies((value) => typeof value === 'number' || typeof value === 'string'); + }); + } + if (guildPlayer.tag) expect(guildPlayer.tag).to.be.a('string'); + if (guildPlayer.tagColor) { + expect(guildPlayer.tagColor.color).to.be.a('string'); + expect(guildPlayer.tagColor.color).to.be.oneOf([ + 'BLACK', + 'DARK_BLUE', + 'DARK_GREEN', + 'DARK_AQUA', + 'DARK_RED', + 'DARK_PURPLE', + 'GOLD', + 'GRAY', + 'DARK_GRAY', + 'BLUE', + 'GREEN', + 'AQUA', + 'RED', + 'LIGHT_PURPLE', + 'YELLOW', + 'WHITE' + ]); + } + expect(guildPlayer.legacyRank).to.be.a('number'); + expect(guildPlayer.expHistory).to.be.a('array'); + guildPlayer.expHistory.forEach((history) => { + expect(history).to.be.a('object'); + expect(history.day).to.be.a('string'); + expect(history.date).to.be.a('date'); + expect(history.exp).to.be.a('number'); + expect(history.totalExp).to.be.a('number'); + expect(guildPlayer.achievements).to.be.a('object'); + expect(guildPlayer.achievements.winners).to.be.a('number'); + expect(guildPlayer.achievements.experienceKings).to.be.a('number'); + expect(guildPlayer.achievements.onlinePlayers).to.be.a('number'); + expect(guildPlayer.preferredGames).to.be.an('array'); + guildPlayer.preferredGames.forEach((game) => { + expect(game).instanceOf(Game); + }); + }); + }); + }); + }); + }); + describe('Invalid', async () => { + describe('Guild Name Test', async () => { + it('expect to throw', async () => { + try { + player = await client.getGuild('name', 'This is not a valid guild name'); + throw new Error('Expected an error to be thrown, but no error was thrown.'); + } catch (error) { + expect(error.message).to.equal(Errors.GUILD_DOES_NOT_EXIST); + } + }).timeout(5000); + }); + describe('Player not in guild', async () => { + it('expect to throw', async () => { + player = await client.getGuild('player', '337a48bf57e944eb8acb83b885936e83'); + expect(player).to.be.null; + }).timeout(5000); + }); + describe('Guild id Test', async () => { + it('expect to throw', async () => { + try { + player = await client.getGuild('id', 'This is not a valid guild id'); + throw new Error('Expected an error to be thrown, but no error was thrown.'); + } catch (error) { + expect(error.message).to.equal(Errors.INVALID_GUILD_ID); + } + }).timeout(5000); + }); + describe('No input Test', async () => { + it('expect to throw', async () => { + try { + player = await client.getGuild(); + throw new Error('Expected an error to be thrown, but no error was thrown.'); + } catch (error) { + expect(error.message).to.equal(Errors.NO_GUILD_QUERY); + } + }).timeout(5000); + }); + describe('Bad guild search', async () => { + it('expect to throw', async () => { + try { + player = await client.getGuild('test', 'no'); + throw new Error('Expected an error to be thrown, but no error was thrown.'); + } catch (error) { + expect(error.message).to.equal(Errors.INVALID_GUILD_SEARCH_PARAMETER); + } + }).timeout(5000); + }); + }); +}); \ No newline at end of file diff --git a/tests/Client#getLeaderboards.js b/tests/Client#getLeaderboards.js new file mode 100644 index 00000000..7f46980c --- /dev/null +++ b/tests/Client#getLeaderboards.js @@ -0,0 +1,29 @@ +/* eslint-disable no-undef */ +const { client } = require('./Client.js'); +const { expect } = require('chai'); + +describe('Client#getLeaderboards', async () => { + let leaderboards; + it('expect not to throw', async () => { + leaderboards = await client.getLeaderboards(); + }); + it('should be an object', () => { + expect(leaderboards).to.be.an('object'); + }); + it('required keys should exist', () => { + for (const minigame in leaderboards) { + const minigameLbs = leaderboards[minigame]; + for (const lb of minigameLbs) { + expect(lb).to.be.an('object'); + expect(lb.leaders).to.be.an('array'); + expect(lb.playerCount).to.be.a('number'); + if (lb.name) { + expect(lb.name).to.be.a('string'); + } + if (lb.title) { + expect(lb.title).to.be.a('string'); + } + } + } + }); +}); \ No newline at end of file diff --git a/tests/Client#getPlayer.js b/tests/Client#getPlayer.js new file mode 100644 index 00000000..22f5a8e8 --- /dev/null +++ b/tests/Client#getPlayer.js @@ -0,0 +1,857 @@ +/* eslint-disable no-undef */ +const { + Game, + SkyWars, + BedWars, + UHC, + SpeedUHC, + MurderMystery, + Duels, + BuildBattle, + MegaWalls, + CopsAndCrims, + TNTGames, + SmashHeroes, + VampireZ, + BlitzSurvivalGames, + ArenaBrawl, + Guild, + PlayerCosmetics, + Pets, + Pet, + Color, + WoolWars, + Errors +} = require('../src'); +const { client } = require('./Client.js'); +const { expect } = require('chai'); + +describe('Client#getPlayer', () => { + let player; + describe('Valid Player', async () => { + describe('UUID Test 1', async () => { + it('expect not to throw', async () => { + player = await client.getPlayer('f025c1c7f55a4ea0b8d93f47d17dfe0f', { guild: true }); + }).timeout(5000); + it('should be an object', () => { + expect(player).to.be.an('object'); + }); + it('required keys should exist', () => { + expect(player.nickname).to.be.a('string'); + expect(player.uuid).to.be.a('string'); + expect(player.rank).to.be.a('string'); + if (player.mcVersion) { + expect(player.mcVersion).to.be.a('string'); + } + if (player.firstLoginTimestamp) { + expect(player.firstLoginTimestamp).to.be.a('number'); + } + if (player.lastLoginTimestamp) { + expect(player.lastLoginTimestamp).to.be.a('number'); + } + if (player.lastLogoutTimestamp) { + expect(player.lastLogoutTimestamp).to.be.a('number'); + } + if (player.recentlyPlayedGame) { + expect(player.recentlyPlayedGame).instanceOf(Game); + } + if (player.plusColor) { + expect(player.plusColor).instanceOf(Color); + } + if (player.guild) { + expect(player.guild).instanceOf(Guild); + } + expect(player.karma).to.be.a('number'); + expect(player.achievementPoints).to.be.a('number'); + expect(player.totalExperience).to.be.a('number'); + expect(player.level).to.be.a('number'); + expect(player.socialMedia).to.be.an('array'); + if (player.giftsSent) { + expect(player.giftsSent).to.be.a('number'); + } + if (player.giftsReceived) { + expect(player.giftsReceived).to.be.a('number'); + } + if (player.lastDailyRewardTimestamp) { + expect(player.lastDailyRewardTimestamp).to.be.a('number'); + } + expect(player.userLanguage).to.be.a('string'); + if (player.claimedLevelingRewards.length) { + expect(player.claimedLevelingRewards) + .to.be.an('array') + .that.satisfies((v) => { + return v.every((i) => typeof i === 'number'); + }); + } + if (player.globalCosmetics) { + expect(player.globalCosmetics).to.be.instanceOf(PlayerCosmetics); + expect(player.globalCosmetics.allCosmetics) + .to.be.an('array') + .that.satisfies((v) => { + return v.every((i) => typeof i === 'string'); + }); + if (player.globalCosmetics.petManager) { + expect(player.globalCosmetics.petManager).to.be.instanceOf(Pets); + expect(player.globalCosmetics.petManager.pets) + .to.be.an('array') + .that.satisfies((v) => { + return v.every((i) => i instanceof Pet); + }); + if (player.globalCosmetics.petManager.lastJourneyTimestamp) { + expect(player.globalCosmetics.petManager.lastJourneyTimestamp).to.be.a('number'); + } + if (player.globalCosmetics.petManager.lastJourneyAt) { + expect(player.globalCosmetics.petManager.lastJourneyAt).to.be.instanceOf(Date); + } + if (player.globalCosmetics.petManager.petConsumables) { + expect(player.globalCosmetics.petManager.petConsumables).to.be.an('object'); + } + } + if (player.globalCosmetics.suits) { + expect(player.globalCosmetics.suits) + .to.be.an('array') + .that.satisfies((v) => { + return v.every((i) => typeof i === 'string'); + }); + } + if (player.globalCosmetics.hats) { + expect(player.globalCosmetics.hats) + .to.be.an('array') + .that.satisfies((v) => { + return v.every((i) => typeof i === 'string'); + }); + } + if (player.globalCosmetics.gadgets) { + expect(player.globalCosmetics.gadgets) + .to.be.an('array') + .that.satisfies((v) => { + return v.every((i) => typeof i === 'string'); + }); + } + if (player.globalCosmetics.morphs) { + expect(player.globalCosmetics.morphs) + .to.be.an('array') + .that.satisfies((v) => { + return v.every((i) => typeof i === 'string'); + }); + } + if (player.globalCosmetics.cloaks) { + expect(player.globalCosmetics.cloaks) + .to.be.an('array') + .that.satisfies((v) => { + return v.every((i) => typeof i === 'string'); + }); + } + if (player.globalCosmetics.rankColors) { + expect(player.globalCosmetics.rankColors) + .to.be.an('array') + .that.satisfies((v) => { + return v.every((i) => typeof i === 'string'); + }); + } + if (player.globalCosmetics.particlePacks) { + expect(player.globalCosmetics.particlePacks) + .to.be.an('array') + .that.satisfies((v) => { + return v.every((i) => typeof i === 'string'); + }); + } + if (player.globalCosmetics.clickEffects) { + expect(player.globalCosmetics.clickEffects) + .to.be.an('array') + .that.satisfies((v) => { + return v.every((i) => typeof i === 'string'); + }); + } + } + if (player.ranksPurchaseTime) { + if (player.ranksPurchaseTime['VIP']) { + expect(player.ranksPurchaseTime['VIP']).to.be.instanceOf(Date); + } + if (player.ranksPurchaseTime['VIP_PLUS']) { + expect(player.ranksPurchaseTime['VIP_PLUS']).to.be.instanceOf(Date); + } + if (player.ranksPurchaseTime['MVP']) { + expect(player.ranksPurchaseTime['MVP']).to.be.instanceOf(Date); + } + if (player.ranksPurchaseTime['MVP_PLUS']) { + expect(player.ranksPurchaseTime['MVP_PLUS']).to.be.instanceOf(Date); + } + } + if (player.stats) { + if (player.stats.skywars) { + expect(player.stats.skywars).instanceOf(SkyWars); + } + if (player.stats.bedwars) { + expect(player.stats.bedwars).instanceOf(BedWars); + } + if (player.stats.uhc) { + expect(player.stats.uhc).instanceOf(UHC); + } + if (player.stats.speeduhc) { + expect(player.stats.speeduhc).instanceOf(SpeedUHC); + } + if (player.stats.murdermystery) { + expect(player.stats.murdermystery).instanceOf(MurderMystery); + } + if (player.stats.duels) { + expect(player.stats.duels).instanceOf(Duels); + } + if (player.stats.buildbattle) { + expect(player.stats.buildbattle).instanceOf(BuildBattle); + } + if (player.stats.megawalls) { + expect(player.stats.megawalls).instanceOf(MegaWalls); + } + if (player.stats.copsandcrims) { + expect(player.stats.copsandcrims).instanceOf(CopsAndCrims); + } + if (player.stats.tntgames) { + expect(player.stats.tntgames).instanceOf(TNTGames); + } + if (player.stats.smashheroes) { + expect(player.stats.smashheroes).instanceOf(SmashHeroes); + } + if (player.stats.vampirez) { + expect(player.stats.vampirez).instanceOf(VampireZ); + } + if (player.stats.blitzsg) { + expect(player.stats.blitzsg).instanceOf(BlitzSurvivalGames); + } + if (player.stats.arena) { + expect(player.stats.arena).instanceOf(ArenaBrawl); + } + if (player.stats.woolwars) { + expect(player.stats.woolwars).instanceOf(WoolWars); + } + } + }); + }); + describe('UUID Test 2', async () => { + it('expect not to throw', async () => { + player = await client.getPlayer('52d9a36f66ce4cdf9a56ad9724ae9fb4', { guild: true }); + }).timeout(5000); + it('should be an object', () => { + expect(player).to.be.an('object'); + }); + it('required keys should exist', () => { + expect(player.nickname).to.be.a('string'); + expect(player.uuid).to.be.a('string'); + expect(player.rank).to.be.a('string'); + if (player.mcVersion) { + expect(player.mcVersion).to.be.a('string'); + } + if (player.firstLoginTimestamp) { + expect(player.firstLoginTimestamp).to.be.a('number'); + } + if (player.lastLoginTimestamp) { + expect(player.lastLoginTimestamp).to.be.a('number'); + } + if (player.lastLogoutTimestamp) { + expect(player.lastLogoutTimestamp).to.be.a('number'); + } + if (player.recentlyPlayedGame) { + expect(player.recentlyPlayedGame).instanceOf(Game); + } + if (player.plusColor) { + expect(player.plusColor).instanceOf(Color); + } + if (player.guild) { + expect(player.guild).instanceOf(Guild); + } + expect(player.karma).to.be.a('number'); + expect(player.achievementPoints).to.be.a('number'); + expect(player.totalExperience).to.be.a('number'); + expect(player.level).to.be.a('number'); + expect(player.socialMedia).to.be.an('array'); + if (player.giftsSent) { + expect(player.giftsSent).to.be.a('number'); + } + if (player.giftsReceived) { + expect(player.giftsReceived).to.be.a('number'); + } + if (player.lastDailyRewardTimestamp) { + expect(player.lastDailyRewardTimestamp).to.be.a('number'); + } + expect(player.userLanguage).to.be.a('string'); + if (player.claimedLevelingRewards.length) { + expect(player.claimedLevelingRewards) + .to.be.an('array') + .that.satisfies((v) => { + return v.every((i) => typeof i === 'number'); + }); + } + if (player.globalCosmetics) { + expect(player.globalCosmetics).to.be.instanceOf(PlayerCosmetics); + expect(player.globalCosmetics.allCosmetics) + .to.be.an('array') + .that.satisfies((v) => { + return v.every((i) => typeof i === 'string'); + }); + if (player.globalCosmetics.petManager) { + expect(player.globalCosmetics.petManager).to.be.instanceOf(Pets); + expect(player.globalCosmetics.petManager.pets) + .to.be.an('array') + .that.satisfies((v) => { + return v.every((i) => i instanceof Pet); + }); + if (player.globalCosmetics.petManager.lastJourneyTimestamp) { + expect(player.globalCosmetics.petManager.lastJourneyTimestamp).to.be.a('number'); + } + if (player.globalCosmetics.petManager.lastJourneyAt) { + expect(player.globalCosmetics.petManager.lastJourneyAt).to.be.instanceOf(Date); + } + if (player.globalCosmetics.petManager.petConsumables) { + expect(player.globalCosmetics.petManager.petConsumables).to.be.an('object'); + } + } + if (player.globalCosmetics.suits) { + expect(player.globalCosmetics.suits) + .to.be.an('array') + .that.satisfies((v) => { + return v.every((i) => typeof i === 'string'); + }); + } + if (player.globalCosmetics.hats) { + expect(player.globalCosmetics.hats) + .to.be.an('array') + .that.satisfies((v) => { + return v.every((i) => typeof i === 'string'); + }); + } + if (player.globalCosmetics.gadgets) { + expect(player.globalCosmetics.gadgets) + .to.be.an('array') + .that.satisfies((v) => { + return v.every((i) => typeof i === 'string'); + }); + } + if (player.globalCosmetics.morphs) { + expect(player.globalCosmetics.morphs) + .to.be.an('array') + .that.satisfies((v) => { + return v.every((i) => typeof i === 'string'); + }); + } + if (player.globalCosmetics.cloaks) { + expect(player.globalCosmetics.cloaks) + .to.be.an('array') + .that.satisfies((v) => { + return v.every((i) => typeof i === 'string'); + }); + } + if (player.globalCosmetics.rankColors) { + expect(player.globalCosmetics.rankColors) + .to.be.an('array') + .that.satisfies((v) => { + return v.every((i) => typeof i === 'string'); + }); + } + if (player.globalCosmetics.particlePacks) { + expect(player.globalCosmetics.particlePacks) + .to.be.an('array') + .that.satisfies((v) => { + return v.every((i) => typeof i === 'string'); + }); + } + if (player.globalCosmetics.clickEffects) { + expect(player.globalCosmetics.clickEffects) + .to.be.an('array') + .that.satisfies((v) => { + return v.every((i) => typeof i === 'string'); + }); + } + } + if (player.ranksPurchaseTime) { + if (player.ranksPurchaseTime['VIP']) { + expect(player.ranksPurchaseTime['VIP']).to.be.instanceOf(Date); + } + if (player.ranksPurchaseTime['VIP_PLUS']) { + expect(player.ranksPurchaseTime['VIP_PLUS']).to.be.instanceOf(Date); + } + if (player.ranksPurchaseTime['MVP']) { + expect(player.ranksPurchaseTime['MVP']).to.be.instanceOf(Date); + } + if (player.ranksPurchaseTime['MVP_PLUS']) { + expect(player.ranksPurchaseTime['MVP_PLUS']).to.be.instanceOf(Date); + } + } + if (player.stats) { + if (player.stats.skywars) { + expect(player.stats.skywars).instanceOf(SkyWars); + } + if (player.stats.bedwars) { + expect(player.stats.bedwars).instanceOf(BedWars); + } + if (player.stats.uhc) { + expect(player.stats.uhc).instanceOf(UHC); + } + if (player.stats.speeduhc) { + expect(player.stats.speeduhc).instanceOf(SpeedUHC); + } + if (player.stats.murdermystery) { + expect(player.stats.murdermystery).instanceOf(MurderMystery); + } + if (player.stats.duels) { + expect(player.stats.duels).instanceOf(Duels); + } + if (player.stats.buildbattle) { + expect(player.stats.buildbattle).instanceOf(BuildBattle); + } + if (player.stats.megawalls) { + expect(player.stats.megawalls).instanceOf(MegaWalls); + } + if (player.stats.copsandcrims) { + expect(player.stats.copsandcrims).instanceOf(CopsAndCrims); + } + if (player.stats.tntgames) { + expect(player.stats.tntgames).instanceOf(TNTGames); + } + if (player.stats.smashheroes) { + expect(player.stats.smashheroes).instanceOf(SmashHeroes); + } + if (player.stats.vampirez) { + expect(player.stats.vampirez).instanceOf(VampireZ); + } + if (player.stats.blitzsg) { + expect(player.stats.blitzsg).instanceOf(BlitzSurvivalGames); + } + if (player.stats.arena) { + expect(player.stats.arena).instanceOf(ArenaBrawl); + } + if (player.stats.woolwars) { + expect(player.stats.woolwars).instanceOf(WoolWars); + } + } + }); + }); + describe('Username Test 1', async () => { + it('expect not to throw', async () => { + player = await client.getPlayer('Plancke', { guild: true }); + }).timeout(5000); + it('should be an object', () => { + expect(player).to.be.an('object'); + }); + it('required keys should exist', () => { + expect(player.nickname).to.be.a('string'); + expect(player.uuid).to.be.a('string'); + expect(player.rank).to.be.a('string'); + if (player.mcVersion) { + expect(player.mcVersion).to.be.a('string'); + } + if (player.firstLoginTimestamp) { + expect(player.firstLoginTimestamp).to.be.a('number'); + } + if (player.lastLoginTimestamp) { + expect(player.lastLoginTimestamp).to.be.a('number'); + } + if (player.lastLogoutTimestamp) { + expect(player.lastLogoutTimestamp).to.be.a('number'); + } + if (player.recentlyPlayedGame) { + expect(player.recentlyPlayedGame).instanceOf(Game); + } + if (player.plusColor) { + expect(player.plusColor).instanceOf(Color); + } + if (player.guild) { + expect(player.guild).instanceOf(Guild); + } + expect(player.karma).to.be.a('number'); + expect(player.achievementPoints).to.be.a('number'); + expect(player.totalExperience).to.be.a('number'); + expect(player.level).to.be.a('number'); + expect(player.socialMedia).to.be.an('array'); + if (player.giftsSent) { + expect(player.giftsSent).to.be.a('number'); + } + if (player.giftsReceived) { + expect(player.giftsReceived).to.be.a('number'); + } + if (player.lastDailyRewardTimestamp) { + expect(player.lastDailyRewardTimestamp).to.be.a('number'); + } + expect(player.userLanguage).to.be.a('string'); + if (player.claimedLevelingRewards.length) { + expect(player.claimedLevelingRewards) + .to.be.an('array') + .that.satisfies((v) => { + return v.every((i) => typeof i === 'number'); + }); + } + if (player.globalCosmetics) { + expect(player.globalCosmetics).to.be.instanceOf(PlayerCosmetics); + expect(player.globalCosmetics.allCosmetics) + .to.be.an('array') + .that.satisfies((v) => { + return v.every((i) => typeof i === 'string'); + }); + if (player.globalCosmetics.petManager) { + expect(player.globalCosmetics.petManager).to.be.instanceOf(Pets); + expect(player.globalCosmetics.petManager.pets) + .to.be.an('array') + .that.satisfies((v) => { + return v.every((i) => i instanceof Pet); + }); + if (player.globalCosmetics.petManager.lastJourneyTimestamp) { + expect(player.globalCosmetics.petManager.lastJourneyTimestamp).to.be.a('number'); + } + if (player.globalCosmetics.petManager.lastJourneyAt) { + expect(player.globalCosmetics.petManager.lastJourneyAt).to.be.instanceOf(Date); + } + if (player.globalCosmetics.petManager.petConsumables) { + expect(player.globalCosmetics.petManager.petConsumables).to.be.an('object'); + } + } + if (player.globalCosmetics.suits) { + expect(player.globalCosmetics.suits) + .to.be.an('array') + .that.satisfies((v) => { + return v.every((i) => typeof i === 'string'); + }); + } + if (player.globalCosmetics.hats) { + expect(player.globalCosmetics.hats) + .to.be.an('array') + .that.satisfies((v) => { + return v.every((i) => typeof i === 'string'); + }); + } + if (player.globalCosmetics.gadgets) { + expect(player.globalCosmetics.gadgets) + .to.be.an('array') + .that.satisfies((v) => { + return v.every((i) => typeof i === 'string'); + }); + } + if (player.globalCosmetics.morphs) { + expect(player.globalCosmetics.morphs) + .to.be.an('array') + .that.satisfies((v) => { + return v.every((i) => typeof i === 'string'); + }); + } + if (player.globalCosmetics.cloaks) { + expect(player.globalCosmetics.cloaks) + .to.be.an('array') + .that.satisfies((v) => { + return v.every((i) => typeof i === 'string'); + }); + } + if (player.globalCosmetics.rankColors) { + expect(player.globalCosmetics.rankColors) + .to.be.an('array') + .that.satisfies((v) => { + return v.every((i) => typeof i === 'string'); + }); + } + if (player.globalCosmetics.particlePacks) { + expect(player.globalCosmetics.particlePacks) + .to.be.an('array') + .that.satisfies((v) => { + return v.every((i) => typeof i === 'string'); + }); + } + if (player.globalCosmetics.clickEffects) { + expect(player.globalCosmetics.clickEffects) + .to.be.an('array') + .that.satisfies((v) => { + return v.every((i) => typeof i === 'string'); + }); + } + } + if (player.ranksPurchaseTime) { + if (player.ranksPurchaseTime['VIP']) { + expect(player.ranksPurchaseTime['VIP']).to.be.instanceOf(Date); + } + if (player.ranksPurchaseTime['VIP_PLUS']) { + expect(player.ranksPurchaseTime['VIP_PLUS']).to.be.instanceOf(Date); + } + if (player.ranksPurchaseTime['MVP']) { + expect(player.ranksPurchaseTime['MVP']).to.be.instanceOf(Date); + } + if (player.ranksPurchaseTime['MVP_PLUS']) { + expect(player.ranksPurchaseTime['MVP_PLUS']).to.be.instanceOf(Date); + } + } + if (player.stats) { + if (player.stats.skywars) { + expect(player.stats.skywars).instanceOf(SkyWars); + } + if (player.stats.bedwars) { + expect(player.stats.bedwars).instanceOf(BedWars); + } + if (player.stats.uhc) { + expect(player.stats.uhc).instanceOf(UHC); + } + if (player.stats.speeduhc) { + expect(player.stats.speeduhc).instanceOf(SpeedUHC); + } + if (player.stats.murdermystery) { + expect(player.stats.murdermystery).instanceOf(MurderMystery); + } + if (player.stats.duels) { + expect(player.stats.duels).instanceOf(Duels); + } + if (player.stats.buildbattle) { + expect(player.stats.buildbattle).instanceOf(BuildBattle); + } + if (player.stats.megawalls) { + expect(player.stats.megawalls).instanceOf(MegaWalls); + } + if (player.stats.copsandcrims) { + expect(player.stats.copsandcrims).instanceOf(CopsAndCrims); + } + if (player.stats.tntgames) { + expect(player.stats.tntgames).instanceOf(TNTGames); + } + if (player.stats.smashheroes) { + expect(player.stats.smashheroes).instanceOf(SmashHeroes); + } + if (player.stats.vampirez) { + expect(player.stats.vampirez).instanceOf(VampireZ); + } + if (player.stats.blitzsg) { + expect(player.stats.blitzsg).instanceOf(BlitzSurvivalGames); + } + if (player.stats.arena) { + expect(player.stats.arena).instanceOf(ArenaBrawl); + } + if (player.stats.woolwars) { + expect(player.stats.woolwars).instanceOf(WoolWars); + } + } + }); + }); + describe('Username Test 2', async () => { + it('expect not to throw', async () => { + player = await client.getPlayer('stavzdev', { guild: true }); + }).timeout(5000); + it('should be an object', () => { + expect(player).to.be.an('object'); + }); + it('required keys should exist', () => { + expect(player.nickname).to.be.a('string'); + expect(player.uuid).to.be.a('string'); + expect(player.rank).to.be.a('string'); + if (player.mcVersion) { + expect(player.mcVersion).to.be.a('string'); + } + if (player.firstLoginTimestamp) { + expect(player.firstLoginTimestamp).to.be.a('number'); + } + if (player.lastLoginTimestamp) { + expect(player.lastLoginTimestamp).to.be.a('number'); + } + if (player.lastLogoutTimestamp) { + expect(player.lastLogoutTimestamp).to.be.a('number'); + } + if (player.recentlyPlayedGame) { + expect(player.recentlyPlayedGame).instanceOf(Game); + } + if (player.plusColor) { + expect(player.plusColor).instanceOf(Color); + } + if (player.guild) { + expect(player.guild).instanceOf(Guild); + } + expect(player.karma).to.be.a('number'); + expect(player.achievementPoints).to.be.a('number'); + expect(player.totalExperience).to.be.a('number'); + expect(player.level).to.be.a('number'); + expect(player.socialMedia).to.be.an('array'); + if (player.giftsSent) { + expect(player.giftsSent).to.be.a('number'); + } + if (player.giftsReceived) { + expect(player.giftsReceived).to.be.a('number'); + } + if (player.lastDailyRewardTimestamp) { + expect(player.lastDailyRewardTimestamp).to.be.a('number'); + } + expect(player.userLanguage).to.be.a('string'); + if (player.claimedLevelingRewards.length) { + expect(player.claimedLevelingRewards) + .to.be.an('array') + .that.satisfies((v) => { + return v.every((i) => typeof i === 'number'); + }); + } + if (player.globalCosmetics) { + expect(player.globalCosmetics).to.be.instanceOf(PlayerCosmetics); + expect(player.globalCosmetics.allCosmetics) + .to.be.an('array') + .that.satisfies((v) => { + return v.every((i) => typeof i === 'string'); + }); + if (player.globalCosmetics.petManager) { + expect(player.globalCosmetics.petManager).to.be.instanceOf(Pets); + expect(player.globalCosmetics.petManager.pets) + .to.be.an('array') + .that.satisfies((v) => { + return v.every((i) => i instanceof Pet); + }); + if (player.globalCosmetics.petManager.lastJourneyTimestamp) { + expect(player.globalCosmetics.petManager.lastJourneyTimestamp).to.be.a('number'); + } + if (player.globalCosmetics.petManager.lastJourneyAt) { + expect(player.globalCosmetics.petManager.lastJourneyAt).to.be.instanceOf(Date); + } + if (player.globalCosmetics.petManager.petConsumables) { + expect(player.globalCosmetics.petManager.petConsumables).to.be.an('object'); + } + } + if (player.globalCosmetics.suits) { + expect(player.globalCosmetics.suits) + .to.be.an('array') + .that.satisfies((v) => { + return v.every((i) => typeof i === 'string'); + }); + } + if (player.globalCosmetics.hats) { + expect(player.globalCosmetics.hats) + .to.be.an('array') + .that.satisfies((v) => { + return v.every((i) => typeof i === 'string'); + }); + } + if (player.globalCosmetics.gadgets) { + expect(player.globalCosmetics.gadgets) + .to.be.an('array') + .that.satisfies((v) => { + return v.every((i) => typeof i === 'string'); + }); + } + if (player.globalCosmetics.morphs) { + expect(player.globalCosmetics.morphs) + .to.be.an('array') + .that.satisfies((v) => { + return v.every((i) => typeof i === 'string'); + }); + } + if (player.globalCosmetics.cloaks) { + expect(player.globalCosmetics.cloaks) + .to.be.an('array') + .that.satisfies((v) => { + return v.every((i) => typeof i === 'string'); + }); + } + if (player.globalCosmetics.rankColors) { + expect(player.globalCosmetics.rankColors) + .to.be.an('array') + .that.satisfies((v) => { + return v.every((i) => typeof i === 'string'); + }); + } + if (player.globalCosmetics.particlePacks) { + expect(player.globalCosmetics.particlePacks) + .to.be.an('array') + .that.satisfies((v) => { + return v.every((i) => typeof i === 'string'); + }); + } + if (player.globalCosmetics.clickEffects) { + expect(player.globalCosmetics.clickEffects) + .to.be.an('array') + .that.satisfies((v) => { + return v.every((i) => typeof i === 'string'); + }); + } + } + if (player.ranksPurchaseTime) { + if (player.ranksPurchaseTime['VIP']) { + expect(player.ranksPurchaseTime['VIP']).to.be.instanceOf(Date); + } + if (player.ranksPurchaseTime['VIP_PLUS']) { + expect(player.ranksPurchaseTime['VIP_PLUS']).to.be.instanceOf(Date); + } + if (player.ranksPurchaseTime['MVP']) { + expect(player.ranksPurchaseTime['MVP']).to.be.instanceOf(Date); + } + if (player.ranksPurchaseTime['MVP_PLUS']) { + expect(player.ranksPurchaseTime['MVP_PLUS']).to.be.instanceOf(Date); + } + } + if (player.stats) { + if (player.stats.skywars) { + expect(player.stats.skywars).instanceOf(SkyWars); + } + if (player.stats.bedwars) { + expect(player.stats.bedwars).instanceOf(BedWars); + } + if (player.stats.uhc) { + expect(player.stats.uhc).instanceOf(UHC); + } + if (player.stats.speeduhc) { + expect(player.stats.speeduhc).instanceOf(SpeedUHC); + } + if (player.stats.murdermystery) { + expect(player.stats.murdermystery).instanceOf(MurderMystery); + } + if (player.stats.duels) { + expect(player.stats.duels).instanceOf(Duels); + } + if (player.stats.buildbattle) { + expect(player.stats.buildbattle).instanceOf(BuildBattle); + } + if (player.stats.megawalls) { + expect(player.stats.megawalls).instanceOf(MegaWalls); + } + if (player.stats.copsandcrims) { + expect(player.stats.copsandcrims).instanceOf(CopsAndCrims); + } + if (player.stats.tntgames) { + expect(player.stats.tntgames).instanceOf(TNTGames); + } + if (player.stats.smashheroes) { + expect(player.stats.smashheroes).instanceOf(SmashHeroes); + } + if (player.stats.vampirez) { + expect(player.stats.vampirez).instanceOf(VampireZ); + } + if (player.stats.blitzsg) { + expect(player.stats.blitzsg).instanceOf(BlitzSurvivalGames); + } + if (player.stats.arena) { + expect(player.stats.arena).instanceOf(ArenaBrawl); + } + if (player.stats.woolwars) { + expect(player.stats.woolwars).instanceOf(WoolWars); + } + } + }); + }); + }); + describe('Invalid Player', async () => { + describe('Invalid Username Test', async () => { + it('expect to throw', async () => { + try { + player = await client.getPlayer('ThisUsernameIsInvalid', { guild: true }); + throw new Error('Expected an error to be thrown, but no error was thrown.'); + } catch (error) { + expect(error.message).to.equal(Errors.PLAYER_DOES_NOT_EXIST); + } + }).timeout(5000); + }); + describe('Invalid UUID Test', async () => { + it('expect to throw', async () => { + try { + player = await client.getPlayer('this-is-not-a-valid-uuid', { guild: true }); + throw new Error('Expected an error to be thrown, but no error was thrown.'); + } catch (error) { + expect(error.message).to.equal(Errors.PLAYER_DOES_NOT_EXIST); + } + }).timeout(5000); + }); + describe('No input Test', async () => { + it('expect to throw', async () => { + try { + player = await client.getPlayer(); + throw new Error('Expected an error to be thrown, but no error was thrown.'); + } catch (error) { + expect(error.message).to.equal(Errors.NO_NICKNAME_UUID); + } + }).timeout(5000); + }); + }); +}); diff --git a/tests/Client#getRecentGames.js b/tests/Client#getRecentGames.js new file mode 100644 index 00000000..39e152d1 --- /dev/null +++ b/tests/Client#getRecentGames.js @@ -0,0 +1,31 @@ +/* eslint-disable no-undef */ +const { client } = require('./Client.js'); +const { expect } = require('chai'); + +describe('Client#getRecentGames', async () => { + let recentGames; + it('expect not to throw', async () => { + recentGames = await client.getRecentGames('f025c1c7f55a4ea0b8d93f47d17dfe0f'); + }); + it('should be an array', () => { + expect(recentGames).to.be.an('array'); + }); + it('required keys should exist', () => { + if (recentGames.length === 0) return; + recentGames.forEach((game) => { + expect(game).to.have.keys(['game', 'id', 'code', 'name', 'found', 'dateTimestamp', 'date', 'mode', 'map', 'ongoing', 'endedAt', 'endedTimestamp']); + expect(game.game).to.be.a('string'); + expect(game.id).to.be.a('number'); + expect(game.code).to.be.a('string'); + expect(game.name).to.be.a('string'); + expect(game.found).to.be.a('boolean'); + expect(game.dateTimestamp).to.be.a('number'); + expect(game.date).to.be.a('date'); + expect(game.mode).to.be.a('string'); + expect(game.map).to.be.a('string'); + expect(game.ongoing).to.be.a('boolean'); + expect(game.endedAt).to.be.a('date'); + expect(game.endedTimestamp).to.be.a('number'); + }); + }); +}); \ No newline at end of file diff --git a/tests/Client#getServerInfo.js b/tests/Client#getServerInfo.js new file mode 100644 index 00000000..f7e430b4 --- /dev/null +++ b/tests/Client#getServerInfo.js @@ -0,0 +1,184 @@ +/* eslint-disable no-undef */ +const { client } = require('./Client.js'); +const { expect } = require('chai'); + +describe('Client#getServerInfo', async () => { + let server; + describe('No amount input test', async () => { + it('expect not to throw', async () => { + server = await client.getServerInfo(); + }); + it('should be an object', () => { + expect(server).to.be.an('object'); + }); + it('required keys should exist', () => { + expect(server.protocolUsed).to.be.a('number'); + expect(server.versionInfo).to.be.a('string'); + expect(server.players).to.be.an('object'); + expect(server.players.max).to.be.a('number'); + expect(server.players.online).to.be.a('number'); + expect(server.players.players).to.be.an('array'); + if (server.rawMOTD) { + expect(server.rawMOTD).to.be.a('string'); + } + if (server.cleanMOTD) { + expect(server.cleanMOTD).to.be.a('string'); + } + if (server.textMOTD) { + expect(server.textMOTD).to.be.a('string'); + } + if (server.faviconB64) { + expect(server.faviconB64).to.be.a('string'); + } + if (server.favicon) { + expect(server.favicon).to.be.instanceOf(Buffer); + } + if (server.ping) { + expect(server.ping).to.be.a('number'); + } + }); + }); + server; + describe('Number', async () => { + describe('Valid amount test', async () => { + it('expect not to throw', async () => { + server = await client.getServerInfo(2); + }); + it('should be an object', () => { + expect(server).to.be.an('object'); + }); + it('required keys should exist', () => { + expect(server.protocolUsed).to.be.a('number'); + expect(server.versionInfo).to.be.a('string'); + expect(server.players).to.be.an('object'); + expect(server.players.max).to.be.a('number'); + expect(server.players.online).to.be.a('number'); + expect(server.players.players).to.be.an('array'); + if (server.rawMOTD) { + expect(server.rawMOTD).to.be.a('string'); + } + if (server.cleanMOTD) { + expect(server.cleanMOTD).to.be.a('string'); + } + if (server.textMOTD) { + expect(server.textMOTD).to.be.a('string'); + } + if (server.faviconB64) { + expect(server.faviconB64).to.be.a('string'); + } + if (server.favicon) { + expect(server.favicon).to.be.instanceOf(Buffer); + } + if (server.ping) { + expect(server.ping).to.be.a('number'); + } + }); + }); + server; + describe('Invalid input test', async () => { + it('expect not to throw', async () => { + server = await client.getServerInfo(-1); + }); + it('should be an object', () => { + expect(server).to.be.an('object'); + }); + it('required keys should exist', () => { + expect(server.protocolUsed).to.be.a('number'); + expect(server.versionInfo).to.be.a('string'); + expect(server.players).to.be.an('object'); + expect(server.players.max).to.be.a('number'); + expect(server.players.online).to.be.a('number'); + expect(server.players.players).to.be.an('array'); + if (server.rawMOTD) { + expect(server.rawMOTD).to.be.a('string'); + } + if (server.cleanMOTD) { + expect(server.cleanMOTD).to.be.a('string'); + } + if (server.textMOTD) { + expect(server.textMOTD).to.be.a('string'); + } + if (server.faviconB64) { + expect(server.faviconB64).to.be.a('string'); + } + if (server.favicon) { + expect(server.favicon).to.be.instanceOf(Buffer); + } + if (server.ping) { + expect(server.ping).to.be.a('number'); + } + }); + }); + }); + describe('String', async () => { + describe('Valid amount test', async () => { + it('expect not to throw', async () => { + server = await client.getServerInfo('2'); + }); + it('should be an object', () => { + expect(server).to.be.an('object'); + }); + it('required keys should exist', () => { + expect(server.protocolUsed).to.be.a('number'); + expect(server.versionInfo).to.be.a('string'); + expect(server.players).to.be.an('object'); + expect(server.players.max).to.be.a('number'); + expect(server.players.online).to.be.a('number'); + expect(server.players.players).to.be.an('array'); + if (server.rawMOTD) { + expect(server.rawMOTD).to.be.a('string'); + } + if (server.cleanMOTD) { + expect(server.cleanMOTD).to.be.a('string'); + } + if (server.textMOTD) { + expect(server.textMOTD).to.be.a('string'); + } + if (server.faviconB64) { + expect(server.faviconB64).to.be.a('string'); + } + if (server.favicon) { + expect(server.favicon).to.be.instanceOf(Buffer); + } + if (server.ping) { + expect(server.ping).to.be.a('number'); + } + }); + }); + server; + describe('Invalid input test', async () => { + it('expect not to throw', async () => { + server = await client.getServerInfo('HI if u see this'); + }); + it('should be an object', () => { + expect(server).to.be.an('object'); + }); + it('required keys should exist', () => { + expect(server.protocolUsed).to.be.a('number'); + expect(server.versionInfo).to.be.a('string'); + expect(server.players).to.be.an('object'); + expect(server.players.max).to.be.a('number'); + expect(server.players.online).to.be.a('number'); + expect(server.players.players).to.be.an('array'); + if (server.rawMOTD) { + expect(server.rawMOTD).to.be.a('string'); + } + if (server.cleanMOTD) { + expect(server.cleanMOTD).to.be.a('string'); + } + if (server.textMOTD) { + expect(server.textMOTD).to.be.a('string'); + } + if (server.faviconB64) { + expect(server.faviconB64).to.be.a('string'); + } + if (server.favicon) { + expect(server.favicon).to.be.instanceOf(Buffer); + } + if (server.ping) { + expect(server.ping).to.be.a('number'); + } + }); + }); + }); +}); \ No newline at end of file diff --git a/tests/Client#getSkyblockMember.js b/tests/Client#getSkyblockMember.js new file mode 100644 index 00000000..f64adbd1 --- /dev/null +++ b/tests/Client#getSkyblockMember.js @@ -0,0 +1,50 @@ +/* eslint-disable no-undef */ +const { SkyblockMember } = require('../src'); +const { client } = require('./Client.js'); +const { expect } = require('chai'); + +describe('Client#getSkyblockMember', async () => { + let member; + + describe('Valid', async () => { + describe('Random (1)', async () => { + it('expect not to throw', async () => { + member = await client.getSkyblockMember('f025c1c7f55a4ea0b8d93f47d17dfe0f'); + }); + it('should be an map', () => { + expect(member).to.be.an('map'); + }); + it('required keys should exist', () => { + member.forEach((profile) => { + expect(profile).instanceOf(SkyblockMember); + }); + }); + }); + describe('Max (2)', async () => { + it('expect not to throw', async () => { + member = await client.getSkyblockMember('fb3d96498a5b4d5b91b763db14b195ad'); + }); + it('should be an map', () => { + expect(member).to.be.an('map'); + }); + it('required keys should exist', () => { + member.forEach((profile) => { + expect(profile).instanceOf(SkyblockMember); + }); + }); + }); + }); + describe('Invalid', async () => { + describe('Never Played skyblock', async () => { + it('expect not to throw', async () => { + member = await client.getSkyblockMember('b45add7b081443909fb00aa9a3e15eb0'); + }); + it('should be an map', () => { + expect(member).to.be.an('map'); + }); + it('map should be empty', () => { + expect(member.size).to.be.equal(0); + }); + }); + }); +}); \ No newline at end of file diff --git a/tests/Client#getSkyblockNews.js b/tests/Client#getSkyblockNews.js new file mode 100644 index 00000000..d03b78f7 --- /dev/null +++ b/tests/Client#getSkyblockNews.js @@ -0,0 +1,21 @@ +/* eslint-disable no-undef */ +const { client } = require('./Client.js'); +const { expect } = require('chai'); + +describe('Client#getSkyblockNews', async () => { + let news; + it('expect not to throw', async () => { + news = await client.getSkyblockNews(); + }); + it('Should be an array', () => { + expect(news).to.be.an('array'); + }); + it('required keys should exist', () => { + for (const record of news) { + expect(record.title).to.be.a('string'); + expect(record.link).to.be.a('string'); + expect(record.date).instanceOf(Date); + expect(record.rawDate).to.be.a('string'); + } + }); +}); \ No newline at end of file diff --git a/tests/Client#getSkyblockProfiles.js b/tests/Client#getSkyblockProfiles.js new file mode 100644 index 00000000..df6bcdbe --- /dev/null +++ b/tests/Client#getSkyblockProfiles.js @@ -0,0 +1,103 @@ +/* eslint-disable no-undef */ +const { SkyblockMember } = require('../src'); +const { client } = require('./Client.js'); +const { expect } = require('chai'); + +describe('Client#getSkyblockProfiles', async () => { + let profiles; + describe('Valid', async () => { + describe('Random (1)', async () => { + it('expect not to throw', async () => { + profiles = await client.getSkyblockProfiles('f025c1c7f55a4ea0b8d93f47d17dfe0f'); + }); + it('should be an array', () => { + expect(profiles).to.be.an('array'); + }); + it('required keys should exist', () => { + profiles.forEach((profile) => { + expect(profile.profileId).to.be.a('string'); + expect(profile.profileName).to.be.oneOf([ + 'Apple', + 'Banana', + 'Blueberry', + 'Coconut', + 'Cucumber', + 'Grapes', + 'Kiwi', + 'Lemon', + 'Lime', + 'Mango', + 'Orange', + 'Papaya', + 'Pear', + 'Peach', + 'Pineapple', + 'Pomegranate', + 'Raspberry', + 'Strawberry', + 'Tomato', + 'Watermelon', + 'Zucchini' + ]); + profile.members.forEach((profile) => { + expect(profile).instanceOf(SkyblockMember); + }); + expect(profile.me).instanceOf(SkyblockMember); + }); + }); + }); + describe('Max (2)', async () => { + it('expect not to throw', async () => { + profiles = await client.getSkyblockProfiles('fb3d96498a5b4d5b91b763db14b195ad'); + }); + it('should be an array', () => { + expect(profiles).to.be.an('array'); + }); + it('required keys should exist', () => { + profiles.forEach((profile) => { + expect(profile.profileId).to.be.a('string'); + expect(profile.profileName).to.be.oneOf([ + 'Apple', + 'Banana', + 'Blueberry', + 'Coconut', + 'Cucumber', + 'Grapes', + 'Kiwi', + 'Lemon', + 'Lime', + 'Mango', + 'Orange', + 'Papaya', + 'Pear', + 'Peach', + 'Pineapple', + 'Pomegranate', + 'Raspberry', + 'Strawberry', + 'Tomato', + 'Watermelon', + 'Zucchini' + ]); + profile.members.forEach((profile) => { + expect(profile).instanceOf(SkyblockMember); + }); + expect(profile.me).instanceOf(SkyblockMember); + }); + }); + }); + }); + describe('Invalid', async () => { + describe('Never played skyblock', async () => { + it('expect not to throw', async () => { + profiles = await client.getSkyblockProfiles('b45add7b081443909fb00aa9a3e15eb0'); + }); + it('should be an array', () => { + expect(profiles).to.be.an('array'); + }); + it('array should be empty', () => { + expect(profiles).to.be.empty; + }); + }); + }); +}); \ No newline at end of file diff --git a/tests/Client#getStatus.js b/tests/Client#getStatus.js new file mode 100644 index 00000000..8198f8ee --- /dev/null +++ b/tests/Client#getStatus.js @@ -0,0 +1,28 @@ +/* eslint-disable no-undef */ +const { client } = require('./Client.js'); +const { Game } = require('../src'); +const { expect } = require('chai'); + +describe('Client#getStatus', () => { + let status; + it('expect not to throw', async () => { + status = await client.getStatus('f025c1c7f55a4ea0b8d93f47d17dfe0f'); + }); + it('should be an object', () => { + expect(status).to.be.an('object'); + }); + it('required keys should exist', () => { + if (status.online) { + expect(status.online).to.be.a('boolean'); + } + if (status.game) { + expect(status.game).instanceOf(Game); + } + if (status.map) { + expect(status.map).to.be.a('string'); + } + if (status.mode) { + expect(status.mode).to.be.a('string'); + } + }); +}); \ No newline at end of file diff --git a/tests/Client#getWatchdogStats.js b/tests/Client#getWatchdogStats.js new file mode 100644 index 00000000..75cc5f0e --- /dev/null +++ b/tests/Client#getWatchdogStats.js @@ -0,0 +1,20 @@ +/* eslint-disable no-undef */ +const { client } = require('./Client.js'); +const { expect } = require('chai'); + +describe('Client#getWatchdogStats', () => { + let watchdog; + it('expect not to throw', async () => { + watchdog = await client.getWatchdogStats(); + }); + it('should be an object', () => { + expect(watchdog).to.be.an('object'); + }); + it('required keys should exist', () => { + expect(watchdog.byStaffRollingDay).to.be.a('number'); + expect(watchdog.byStaffTotal).to.be.a('number'); + expect(watchdog.byWatchdogLastMinute).to.be.a('number'); + expect(watchdog.byWatchdogRollingDay).to.be.a('number'); + expect(watchdog.byWatchdogTotal).to.be.a('number'); + }); +}); \ No newline at end of file diff --git a/tests/Client.js b/tests/Client.js new file mode 100644 index 00000000..9797b4f0 --- /dev/null +++ b/tests/Client.js @@ -0,0 +1,4 @@ +const { Client } = require('../src'); +module.exports = { + client: new Client(process.env.HYPIXEL_KEY, { cache: false }) +}; \ No newline at end of file diff --git a/tests/test.js b/tests/test.js deleted file mode 100644 index 32c3561f..00000000 --- a/tests/test.js +++ /dev/null @@ -1,369 +0,0 @@ -/* eslint-disable no-undef */ -const { - Client, - Game, - SkyWars, - BedWars, - UHC, - SpeedUHC, - MurderMystery, - Duels, - BuildBattle, - MegaWalls, - CopsAndCrims, - TNTGames, - SmashHeroes, - VampireZ, - BlitzSurvivalGames, - ArenaBrawl, - Guild, - PlayerCosmetics, - Pets, - Pet, - Color, - WoolWars, - SkyblockMember -} = require('../src'); -const client = new Client(process.env.HYPIXEL_KEY, { cache: true }); -const { expect } = require('chai'); -describe('Client#getPlayer', () => { - let player; - it('expect not to throw', async () => { - player = await client.getPlayer('f025c1c7f55a4ea0b8d93f47d17dfe0f', { guild: true }); - }).timeout(5000); - it('required keys should exist', () => { - expect(player.nickname).to.be.a('string'); - expect(player.uuid).to.be.a('string'); - expect(player.rank).to.be.a('string'); - if (player.mcVersion) { - expect(player.mcVersion).to.be.a('string'); - } - if (player.firstLoginTimestamp) { - expect(player.firstLoginTimestamp).to.be.a('number'); - } - if (player.lastLoginTimestamp) { - expect(player.lastLoginTimestamp).to.be.a('number'); - } - if (player.lastLogoutTimestamp) { - expect(player.lastLogoutTimestamp).to.be.a('number'); - } - if (player.recentlyPlayedGame) { - expect(player.recentlyPlayedGame).instanceOf(Game); - } - if (player.plusColor) { - expect(player.plusColor).instanceOf(Color); - } - if (player.guild) { - expect(player.guild).instanceOf(Guild); - } - expect(player.karma).to.be.a('number'); - expect(player.achievementPoints).to.be.a('number'); - expect(player.totalExperience).to.be.a('number'); - expect(player.level).to.be.a('number'); - expect(player.socialMedia).to.be.an('array'); - if (player.giftsSent) { - expect(player.giftsSent).to.be.a('number'); - } - if (player.giftsReceived) { - expect(player.giftsReceived).to.be.a('number'); - } - if (player.lastDailyRewardTimestamp) { - expect(player.lastDailyRewardTimestamp).to.be.a('number'); - } - expect(player.userLanguage).to.be.a('string'); - if (player.claimedLevelingRewards.length) { - expect(player.claimedLevelingRewards) - .to.be.an('array') - .that.satisfies((v) => { - return v.every((i) => typeof i === 'number'); - }); - } - if (player.globalCosmetics) { - expect(player.globalCosmetics).to.be.instanceOf(PlayerCosmetics); - expect(player.globalCosmetics.allCosmetics) - .to.be.an('array') - .that.satisfies((v) => { - return v.every((i) => typeof i === 'string'); - }); - if (player.globalCosmetics.petManager) { - expect(player.globalCosmetics.petManager).to.be.instanceOf(Pets); - expect(player.globalCosmetics.petManager.pets) - .to.be.an('array') - .that.satisfies((v) => { - return v.every((i) => i instanceof Pet); - }); - if (player.globalCosmetics.petManager.lastJourneyTimestamp) { - expect(player.globalCosmetics.petManager.lastJourneyTimestamp).to.be.a('number'); - } - if (player.globalCosmetics.petManager.lastJourneyAt) { - expect(player.globalCosmetics.petManager.lastJourneyAt).to.be.instanceOf(Date); - } - if (player.globalCosmetics.petManager.petConsumables) { - expect(player.globalCosmetics.petManager.petConsumables).to.be.an('object'); - } - } - if (player.globalCosmetics.suits) { - expect(player.globalCosmetics.suits) - .to.be.an('array') - .that.satisfies((v) => { - return v.every((i) => typeof i === 'string'); - }); - } - if (player.globalCosmetics.hats) { - expect(player.globalCosmetics.hats) - .to.be.an('array') - .that.satisfies((v) => { - return v.every((i) => typeof i === 'string'); - }); - } - if (player.globalCosmetics.gadgets) { - expect(player.globalCosmetics.gadgets) - .to.be.an('array') - .that.satisfies((v) => { - return v.every((i) => typeof i === 'string'); - }); - } - if (player.globalCosmetics.morphs) { - expect(player.globalCosmetics.morphs) - .to.be.an('array') - .that.satisfies((v) => { - return v.every((i) => typeof i === 'string'); - }); - } - if (player.globalCosmetics.cloaks) { - expect(player.globalCosmetics.cloaks) - .to.be.an('array') - .that.satisfies((v) => { - return v.every((i) => typeof i === 'string'); - }); - } - if (player.globalCosmetics.rankColors) { - expect(player.globalCosmetics.rankColors) - .to.be.an('array') - .that.satisfies((v) => { - return v.every((i) => typeof i === 'string'); - }); - } - if (player.globalCosmetics.particlePacks) { - expect(player.globalCosmetics.particlePacks) - .to.be.an('array') - .that.satisfies((v) => { - return v.every((i) => typeof i === 'string'); - }); - } - if (player.globalCosmetics.clickEffects) { - expect(player.globalCosmetics.clickEffects) - .to.be.an('array') - .that.satisfies((v) => { - return v.every((i) => typeof i === 'string'); - }); - } - } - if (player.ranksPurchaseTime) { - if (player.ranksPurchaseTime['VIP']) { - expect(player.ranksPurchaseTime['VIP']).to.be.instanceOf(Date); - } - if (player.ranksPurchaseTime['VIP_PLUS']) { - expect(player.ranksPurchaseTime['VIP_PLUS']).to.be.instanceOf(Date); - } - if (player.ranksPurchaseTime['MVP']) { - expect(player.ranksPurchaseTime['MVP']).to.be.instanceOf(Date); - } - if (player.ranksPurchaseTime['MVP_PLUS']) { - expect(player.ranksPurchaseTime['MVP_PLUS']).to.be.instanceOf(Date); - } - } - if (player.stats) { - if (player.stats.skywars) { - expect(player.stats.skywars).instanceOf(SkyWars); - } - if (player.stats.bedwars) { - expect(player.stats.bedwars).instanceOf(BedWars); - } - if (player.stats.uhc) { - expect(player.stats.uhc).instanceOf(UHC); - } - if (player.stats.speeduhc) { - expect(player.stats.speeduhc).instanceOf(SpeedUHC); - } - if (player.stats.murdermystery) { - expect(player.stats.murdermystery).instanceOf(MurderMystery); - } - if (player.stats.duels) { - expect(player.stats.duels).instanceOf(Duels); - } - if (player.stats.buildbattle) { - expect(player.stats.buildbattle).instanceOf(BuildBattle); - } - if (player.stats.megawalls) { - expect(player.stats.megawalls).instanceOf(MegaWalls); - } - if (player.stats.copsandcrims) { - expect(player.stats.copsandcrims).instanceOf(CopsAndCrims); - } - if (player.stats.tntgames) { - expect(player.stats.tntgames).instanceOf(TNTGames); - } - if (player.stats.smashheroes) { - expect(player.stats.smashheroes).instanceOf(SmashHeroes); - } - if (player.stats.vampirez) { - expect(player.stats.vampirez).instanceOf(VampireZ); - } - if (player.stats.blitzsg) { - expect(player.stats.blitzsg).instanceOf(BlitzSurvivalGames); - } - if (player.stats.arena) { - expect(player.stats.arena).instanceOf(ArenaBrawl); - } - if (player.stats.woolwars) { - expect(player.stats.woolwars).instanceOf(WoolWars); - } - } - }); -}); -describe('Client#getWatchdogStats', () => { - let watchdog; - it('expect not to throw', async () => { - watchdog = await client.getWatchdogStats(); - }); - it('required keys should exist', () => { - expect(watchdog.byStaffRollingDay).to.be.a('number'); - expect(watchdog.byStaffTotal).to.be.a('number'); - expect(watchdog.byWatchdogLastMinute).to.be.a('number'); - expect(watchdog.byWatchdogRollingDay).to.be.a('number'); - expect(watchdog.byWatchdogTotal).to.be.a('number'); - }); -}); -describe('Client#getStatus', () => { - let status; - it('expect not to throw', async () => { - status = await client.getStatus('f025c1c7f55a4ea0b8d93f47d17dfe0f'); - }); - it('required keys should exist', () => { - if (status.online) { - expect(status.online).to.be.a('boolean'); - } - if (status.game) { - expect(status.game).to.be.a('number'); - } - if (status.map) { - expect(status.map).to.be.a('number'); - } - if (status.mode) { - expect(status.mode).to.be.a('number'); - } - }); -}); -describe('Client#getLeaderboards', async () => { - let leaderboards; - it('expect not to throw', async () => { - leaderboards = await client.getLeaderboards(); - }); - it('should be an object', () => { - expect(leaderboards).to.be.an('object'); - }); - it('required keys should exist', () => { - for (const minigame in leaderboards) { - const minigameLbs = leaderboards[minigame]; - for (const lb of minigameLbs) { - expect(lb).to.be.an('object'); - expect(lb.leaders).to.be.an('array'); - expect(lb.playerCount).to.be.a('number'); - if (lb.name) { - expect(lb.name).to.be.a('string'); - } - if (lb.title) { - expect(lb.title).to.be.a('string'); - } - } - } - }); -}); -describe('Client#getSkyblockNews', async () => { - let news; - it('expect not to throw', async () => { - news = await client.getSkyblockNews(); - }); - it('required keys should exist', () => { - expect(news).to.be.an('array'); - for (const record of news) { - expect(record.title).to.be.a('string'); - expect(record.link).to.be.a('string'); - expect(record.date).instanceOf(Date); - expect(record.rawDate).to.be.a('string'); - } - }); -}); -describe('Client#getSkyblockProfiles', async () => { - let profiles; - it('expect not to throw', async () => { - profiles = await client.getSkyblockProfiles('f025c1c7f55a4ea0b8d93f47d17dfe0f'); - }); - it('should be an array', () => { - expect(profiles).to.be.an('array'); - }); - it('required keys should exist', () => { - profiles.forEach((profile) => { - expect(profile.profileId).to.be.a('string'); - expect(profile.profileName).to.be.oneOf([ - 'Apple', - 'Banana', - 'Blueberry', - 'Coconut', - 'Cucumber', - 'Grapes', - 'Kiwi', - 'Lemon', - 'Lime', - 'Mango', - 'Orange', - 'Papaya', - 'Pear', - 'Peach', - 'Pineapple', - 'Pomegranate', - 'Raspberry', - 'Strawberry', - 'Tomato', - 'Watermelon', - 'Zucchini' - ]); - profile.members.forEach((profile) => { - expect(profile).instanceOf(SkyblockMember); - }); - expect(profile.me).instanceOf(SkyblockMember); - }); - }); -}); -describe('Client#getServerInfo', async () => { - let server; - it('expect not to throw', async () => { - server = await client.getServerInfo('not-a-number'); - }); - it('required keys should exist', () => { - expect(server.protocolUsed).to.be.a('number'); - expect(server.versionInfo).to.be.a('string'); - expect(server.players.max).to.be.a('number'); - expect(server.players.online).to.be.a('number'); - expect(server.players.players).to.be.an('array'); - if (server.rawMOTD) { - expect(server.rawMOTD).to.be.a('string'); - } - if (server.cleanMOTD) { - expect(server.cleanMOTD).to.be.a('string'); - } - if (server.textMOTD) { - expect(server.textMOTD).to.be.a('string'); - } - if (server.faviconB64) { - expect(server.faviconB64).to.be.a('string'); - } - if (server.favicon) { - expect(server.favicon).to.be.instanceOf(Buffer); - } - if (server.ping) { - expect(server.ping).to.be.a('number'); - } - }); -}); diff --git a/typings/index.d.ts b/typings/index.d.ts index 53a259f9..1892fda6 100644 --- a/typings/index.d.ts +++ b/typings/index.d.ts @@ -41,8 +41,9 @@ export type GAME_NAME = | 'Main Lobby' | 'Tournament Lobby' | 'Idle' - | 'SMP'; -export type GAME_ID = 2 | 3 | 4 | 5 | 6 | 7 | 13 | 14 | 17 | 20 | 21 | 23 | 24 | 25 | 26 | 51 | 52 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 63 | 64 | 65 | 67 | -1 | -2 | -3 | -4 | -5 | -6; + | 'SMP' + | 'Wool Wars'; +export type GAME_ID = 2 | 3 | 4 | 5 | 6 | 7 | 13 | 14 | 17 | 20 | 21 | 23 | 24 | 25 | 26 | 51 | 52 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 63 | 64 | 65 | 67 | 68 | -1 | -2 | -3 | -4 | -5 | -6; export type GAME_CODE = | 'QUAKECRAFT' | 'WALLS' @@ -76,7 +77,8 @@ export type GAME_CODE = | 'QUEUE' | 'MAIN_LOBBY' | 'TOURNAMENT_LOBBY' - | 'SMP'; + | 'SMP' + | 'WOOL_GAMES'; export type SKYWARS_PRESTIGE = 'Iron' | 'Gold' | 'Diamond' | 'Emerald' | 'Sapphire' | 'Ruby' | 'Crystal' | 'Opal' | 'Amethyst' | 'Rainbow' | 'Mythic'; export type SKYWARS_PRESTIGE_ICON = '⋆' | '★' | '☆' | '⁕' | '✶' | '✳' | '✴' | '✷' | '❋' | '✼' | '❂' | '❁' | '☬' | '✙' | '❤️' | '☠' | '✦' | '✌' | '❦' | '✵' | '❣' | '☯' | '✺' | 'ಠ_ಠ' | '⚔'; export type BEDWARS_PRESTIGE =