aboutsummaryrefslogtreecommitdiff
path: root/test-data-generator
diff options
context:
space:
mode:
Diffstat (limited to 'test-data-generator')
-rw-r--r--test-data-generator/index.ts44
1 files changed, 44 insertions, 0 deletions
diff --git a/test-data-generator/index.ts b/test-data-generator/index.ts
new file mode 100644
index 0000000..c2b1361
--- /dev/null
+++ b/test-data-generator/index.ts
@@ -0,0 +1,44 @@
+/**
+ * Automatically generate Hypixel API responses for the unit tests
+ */
+
+import * as hypixelApi from '../src/hypixelApi'
+import * as mojang from '../src/mojang'
+import fs from 'fs/promises'
+import path from 'path'
+
+const playerUuids = [
+ '6536bfed869548fd83a1ecd24cf2a0fd',
+ '4133cab5a7534f3f9bb636fc06a1f0fd',
+ 'ef3bb867eec048a1a9b92b451f0ffc66',
+ 'e403573808ad45ddb5c48ec7c4db0144',
+]
+
+async function writeTestData(requestPath: string, name: string, contents: any) {
+ const dir = path.join(__dirname, '..', 'test', 'data', requestPath)
+ await fs.mkdir(dir, { recursive: true })
+ await fs.writeFile(path.join(dir, `${name}.json`), JSON.stringify(contents, null, 2))
+}
+
+async function addResponse(requestPath: string, args: { [ key: string ]: string }, name: string) {
+ const response = await hypixelApi.sendApiRequest({
+ path: requestPath,
+ args: args,
+ key: hypixelApi.chooseApiKey()
+ })
+ await writeTestData(requestPath, name, response)
+}
+
+async function main() {
+ const uuidsToUsername = {}
+ for (const playerUuid of playerUuids) {
+ await addResponse('player', { uuid: playerUuid }, playerUuid)
+ await addResponse('skyblock/profiles', { uuid: playerUuid }, playerUuid)
+ const { username: playerUsername } = await mojang.profileFromUuid(playerUuid)
+ uuidsToUsername[playerUuid] = playerUsername
+ }
+
+ await writeTestData('', 'mojang', uuidsToUsername)
+}
+
+main() \ No newline at end of file