From ec5dcf481a744a46e7ce4453e9700aa134c1f195 Mon Sep 17 00:00:00 2001 From: cherryblossom <31467609+cherryblossom000@users.noreply.github.com> Date: Thu, 13 May 2021 19:08:20 +1000 Subject: [PATCH 1/4] fix(DataResolver): fix circular dependency error with GuildTemplate close #5600 --- src/util/DataResolver.js | 4 +++- test/templateCreateGuild.js | 27 +++++++++++++++++++++++++++ 2 files changed, 30 insertions(+), 1 deletion(-) create mode 100644 test/templateCreateGuild.js diff --git a/src/util/DataResolver.js b/src/util/DataResolver.js index 36f83780827f..d3a63a34b949 100644 --- a/src/util/DataResolver.js +++ b/src/util/DataResolver.js @@ -5,7 +5,6 @@ const path = require('path'); const stream = require('stream'); const fetch = require('node-fetch'); const { Error: DiscordError, TypeError } = require('../errors'); -const GuildTemplate = require('../structures/GuildTemplate'); const Invite = require('../structures/Invite'); /** @@ -56,6 +55,9 @@ class DataResolver { * @returns {string} */ static resolveGuildTemplateCode(data) { + // Circular dependency + // https://github.com/discordjs/discord.js/issues/5600 + const GuildTemplate = require('../structures/GuildTemplate'); return this.resolveCode(data, GuildTemplate.GUILD_TEMPLATES_PATTERN); } diff --git a/test/templateCreateGuild.js b/test/templateCreateGuild.js new file mode 100644 index 000000000000..8e2576a8ef70 --- /dev/null +++ b/test/templateCreateGuild.js @@ -0,0 +1,27 @@ +'use strict'; + +const { token } = require('./auth'); +const { Client } = require('../src'); + +const client = new Client({ intents: ['GUILDS', 'GUILD_MESSAGES'] }); +client + .on('ready', () => console.log('ready')) + .on('message', async message => { + try { + const templates = await message.guild.fetchTemplates(); + if (!templates.size) { + console.log('no templates'); + } else { + const guild = await templates.first().createGuild('guild name'); + console.log(`created guild with ID ${guild.id}`); + await guild.delete(); + console.log('deleted guild'); + } + } catch (error) { + console.error(error); + } finally { + client.destroy(); + } + }) + .login(token) + .catch(console.error); From a6a19cab99f61c7d7306ac9abe3533bae5601439 Mon Sep 17 00:00:00 2001 From: cherryblossom <31467609+cherryblossom000@users.noreply.github.com> Date: Thu, 13 May 2021 19:17:39 +1000 Subject: [PATCH 2/4] test: add test for DataResolver.resolveGuildTemplateCode --- test/resolveGuildTemplateCode.js | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 test/resolveGuildTemplateCode.js diff --git a/test/resolveGuildTemplateCode.js b/test/resolveGuildTemplateCode.js new file mode 100644 index 000000000000..704a258b5a69 --- /dev/null +++ b/test/resolveGuildTemplateCode.js @@ -0,0 +1,6 @@ +'use strict'; + +const assert = require('assert'); +const { DataResolver } = require('../src'); + +assert.strictEqual(DataResolver.resolveGuildTemplateCode('https://discord.new/abc'), 'abc'); From 7e10633fbdd56a9fbba4beec242256ed07d2af72 Mon Sep 17 00:00:00 2001 From: cherryblossom <31467609+cherryblossom000@users.noreply.github.com> Date: Thu, 13 May 2021 19:23:37 +1000 Subject: [PATCH 3/4] test(resolveGuildTemplateCode): use jest for assertions --- test/escapeMarkdown.test.js | 3 ++- test/resolveGuildTemplateCode.js | 6 ------ test/resolveGuildTemplateCode.test.js | 11 +++++++++++ 3 files changed, 13 insertions(+), 7 deletions(-) delete mode 100644 test/resolveGuildTemplateCode.js create mode 100644 test/resolveGuildTemplateCode.test.js diff --git a/test/escapeMarkdown.test.js b/test/escapeMarkdown.test.js index a8f7aede448d..4c7ca180fe21 100644 --- a/test/escapeMarkdown.test.js +++ b/test/escapeMarkdown.test.js @@ -1,6 +1,7 @@ 'use strict'; -/* eslint-disable max-len, no-undef */ +/* eslint-env jest */ +/* eslint-disable max-len */ const Util = require('../src/util/Util'); const testString = "`_Behold!_`\n||___~~***```js\n`use strict`;\nrequire('discord.js');```***~~___||"; diff --git a/test/resolveGuildTemplateCode.js b/test/resolveGuildTemplateCode.js deleted file mode 100644 index 704a258b5a69..000000000000 --- a/test/resolveGuildTemplateCode.js +++ /dev/null @@ -1,6 +0,0 @@ -'use strict'; - -const assert = require('assert'); -const { DataResolver } = require('../src'); - -assert.strictEqual(DataResolver.resolveGuildTemplateCode('https://discord.new/abc'), 'abc'); diff --git a/test/resolveGuildTemplateCode.test.js b/test/resolveGuildTemplateCode.test.js new file mode 100644 index 000000000000..fb6221714df5 --- /dev/null +++ b/test/resolveGuildTemplateCode.test.js @@ -0,0 +1,11 @@ +'use strict'; + +/* eslint-env jest */ + +const { DataResolver } = require('../src'); + +describe('resolveGuildTemplateCode', () => { + test('basic', () => { + expect(DataResolver.resolveGuildTemplateCode('https://discord.new/abc')).toBe('abc'); + }); +}); From 118d492aac3a825f7b26c0a434456bf7195d7448 Mon Sep 17 00:00:00 2001 From: cherryblossom000 <31467609+cherryblossom000@users.noreply.github.com> Date: Sat, 22 May 2021 19:36:31 +1000 Subject: [PATCH 4/4] chore(DataResolver): remove unnecessary comments --- src/util/DataResolver.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/util/DataResolver.js b/src/util/DataResolver.js index d3a63a34b949..821e1798121e 100644 --- a/src/util/DataResolver.js +++ b/src/util/DataResolver.js @@ -55,8 +55,6 @@ class DataResolver { * @returns {string} */ static resolveGuildTemplateCode(data) { - // Circular dependency - // https://github.com/discordjs/discord.js/issues/5600 const GuildTemplate = require('../structures/GuildTemplate'); return this.resolveCode(data, GuildTemplate.GUILD_TEMPLATES_PATTERN); }