From cd2897c53acf72eed3dbf99e8fbd4d75aa972ba8 Mon Sep 17 00:00:00 2001 From: Lukas Siemon Date: Sun, 1 Aug 2021 12:23:52 -0700 Subject: [PATCH] fix: channel purpose and topic only updated if changed --- src/index/channel.js | 6 +++++ test/index/channel.spec.js | 10 ++++++++ ...gChannelSetPurposeUnchanged_recording.json | 24 +++++++++++++++++++ ...DK_testingChannelSetPurpose_recording.json | 4 ++-- ...ingChannelSetTopicUnchanged_recording.json | 24 +++++++++++++++++++ ...DK_testingChannelShareFiles_recording.json | 4 ++-- 6 files changed, 68 insertions(+), 4 deletions(-) create mode 100644 test/index/channel.spec.js__cassettes/testingSlackSDK_testingChannelSetPurposeUnchanged_recording.json create mode 100644 test/index/channel.spec.js__cassettes/testingSlackSDK_testingChannelSetTopicUnchanged_recording.json diff --git a/src/index/channel.js b/src/index/channel.js index f869f97..0630f9d 100644 --- a/src/index/channel.js +++ b/src/index/channel.js @@ -11,6 +11,9 @@ module.exports = (call) => ({ }, setTopic: async (name, topic) => { const channel = await getChannelMeta(call, name); + if (channel.topic?.value === topic) { + return null; + } return call('conversations.setTopic', { topic, channel: channel.id @@ -18,6 +21,9 @@ module.exports = (call) => ({ }, setPurpose: async (name, purpose) => { const channel = await getChannelMeta(call, name); + if (channel.purpose?.value === purpose) { + return null; + } return call('conversations.setPurpose', { purpose, channel: channel.id diff --git a/test/index/channel.spec.js b/test/index/channel.spec.js index 65ecd3d..b50cada 100644 --- a/test/index/channel.spec.js +++ b/test/index/channel.spec.js @@ -35,11 +35,21 @@ describe('Testing Slack SDK', { expect(r).to.deep.contain({ ok: true }); }); + it('Testing channel.setTopic (unchanged)', async () => { + const r = await slack.channel.setTopic('channel', 'topic'); + expect(r).to.equal(null); + }); + it('Testing channel.setPurpose', async () => { const r = await slack.channel.setPurpose('channel', 'purpose'); expect(r).to.deep.contain({ ok: true }); }); + it('Testing channel.setPurpose (unchanged)', async () => { + const r = await slack.channel.setPurpose('channel', 'purpose'); + expect(r).to.equal(null); + }); + it('Testing channel.shareFiles', async () => { const r = await slack.channel.shareFiles('channel', ['F029QHN0AAZ', 'F02AH8J752L']); expect(r).to.deep.equal({ ok: true }); diff --git a/test/index/channel.spec.js__cassettes/testingSlackSDK_testingChannelSetPurposeUnchanged_recording.json b/test/index/channel.spec.js__cassettes/testingSlackSDK_testingChannelSetPurposeUnchanged_recording.json new file mode 100644 index 0000000..fe4d930 --- /dev/null +++ b/test/index/channel.spec.js__cassettes/testingSlackSDK_testingChannelSetPurposeUnchanged_recording.json @@ -0,0 +1,24 @@ +[ + { + "scope": "https://workspace.slack.com:443", + "method": "POST", + "path": "/api/rtm.start", + "body": "----------------------------898525272439246643720391\r\nContent-Disposition: form-data; name=\"token\"\r\n\r\nSLACK-SESSION-TOKEN\r\n----------------------------898525272439246643720391--\r\n", + "status": 200, + "response": { + "ok": true, + "channels": [ + { + "id": "C3Y9NQTQG", + "name": "channel", + "topic": { + "value": "topic" + }, + "purpose": { + "value": "purpose" + } + } + ] + } + } +] diff --git a/test/index/channel.spec.js__cassettes/testingSlackSDK_testingChannelSetPurpose_recording.json b/test/index/channel.spec.js__cassettes/testingSlackSDK_testingChannelSetPurpose_recording.json index abe7d2a..b740434 100644 --- a/test/index/channel.spec.js__cassettes/testingSlackSDK_testingChannelSetPurpose_recording.json +++ b/test/index/channel.spec.js__cassettes/testingSlackSDK_testingChannelSetPurpose_recording.json @@ -3,7 +3,7 @@ "scope": "https://workspace.slack.com:443", "method": "POST", "path": "/api/rtm.start", - "body": "----------------------------128508069392224419437859\r\nContent-Disposition: form-data; name=\"token\"\r\n\r\nSLACK-SESSION-TOKEN\r\n----------------------------128508069392224419437859--\r\n", + "body": "----------------------------198402330513246502238920\r\nContent-Disposition: form-data; name=\"token\"\r\n\r\nSLACK-SESSION-TOKEN\r\n----------------------------198402330513246502238920--\r\n", "status": 200, "response": { "ok": true, @@ -19,7 +19,7 @@ "scope": "https://workspace.slack.com:443", "method": "POST", "path": "/api/conversations.setPurpose", - "body": "----------------------------198402330513246502238920\r\nContent-Disposition: form-data; name=\"token\"\r\n\r\nSLACK-SESSION-TOKEN\r\n----------------------------198402330513246502238920\r\nContent-Disposition: form-data; name=\"purpose\"\r\n\r\npurpose\r\n----------------------------198402330513246502238920\r\nContent-Disposition: form-data; name=\"channel\"\r\n\r\nC3Y9NQTQG\r\n----------------------------198402330513246502238920--\r\n", + "body": "----------------------------240931670220439824763760\r\nContent-Disposition: form-data; name=\"token\"\r\n\r\nSLACK-SESSION-TOKEN\r\n----------------------------240931670220439824763760\r\nContent-Disposition: form-data; name=\"purpose\"\r\n\r\npurpose\r\n----------------------------240931670220439824763760\r\nContent-Disposition: form-data; name=\"channel\"\r\n\r\nC3Y9NQTQG\r\n----------------------------240931670220439824763760--\r\n", "status": 200, "response": { "ok": true diff --git a/test/index/channel.spec.js__cassettes/testingSlackSDK_testingChannelSetTopicUnchanged_recording.json b/test/index/channel.spec.js__cassettes/testingSlackSDK_testingChannelSetTopicUnchanged_recording.json new file mode 100644 index 0000000..c08aa4a --- /dev/null +++ b/test/index/channel.spec.js__cassettes/testingSlackSDK_testingChannelSetTopicUnchanged_recording.json @@ -0,0 +1,24 @@ +[ + { + "scope": "https://workspace.slack.com:443", + "method": "POST", + "path": "/api/rtm.start", + "body": "----------------------------128508069392224419437859\r\nContent-Disposition: form-data; name=\"token\"\r\n\r\nSLACK-SESSION-TOKEN\r\n----------------------------128508069392224419437859--\r\n", + "status": 200, + "response": { + "ok": true, + "channels": [ + { + "id": "C3Y9NQTQG", + "name": "channel", + "topic": { + "value": "topic" + }, + "purpose": { + "value": "purpose" + } + } + ] + } + } +] diff --git a/test/index/channel.spec.js__cassettes/testingSlackSDK_testingChannelShareFiles_recording.json b/test/index/channel.spec.js__cassettes/testingSlackSDK_testingChannelShareFiles_recording.json index cc1a1ec..8370d04 100644 --- a/test/index/channel.spec.js__cassettes/testingSlackSDK_testingChannelShareFiles_recording.json +++ b/test/index/channel.spec.js__cassettes/testingSlackSDK_testingChannelShareFiles_recording.json @@ -3,7 +3,7 @@ "scope": "https://workspace.slack.com:443", "method": "POST", "path": "/api/rtm.start", - "body": "----------------------------240931670220439824763760\r\nContent-Disposition: form-data; name=\"token\"\r\n\r\nSLACK-SESSION-TOKEN\r\n----------------------------240931670220439824763760--\r\n", + "body": "----------------------------437991048648655338960848\r\nContent-Disposition: form-data; name=\"token\"\r\n\r\nSLACK-SESSION-TOKEN\r\n----------------------------437991048648655338960848--\r\n", "status": 200, "response": { "ok": true, @@ -19,7 +19,7 @@ "scope": "https://workspace.slack.com:443", "method": "POST", "path": "/api/files.share", - "body": "----------------------------898525272439246643720391\r\nContent-Disposition: form-data; name=\"token\"\r\n\r\nSLACK-SESSION-TOKEN\r\n----------------------------898525272439246643720391\r\nContent-Disposition: form-data; name=\"files\"\r\n\r\nF029QHN0AAZ,F02AH8J752L\r\n----------------------------898525272439246643720391\r\nContent-Disposition: form-data; name=\"channel\"\r\n\r\nC3Y9NQTQG\r\n----------------------------898525272439246643720391--\r\n", + "body": "----------------------------199934421484272806572989\r\nContent-Disposition: form-data; name=\"token\"\r\n\r\nSLACK-SESSION-TOKEN\r\n----------------------------199934421484272806572989\r\nContent-Disposition: form-data; name=\"files\"\r\n\r\nF029QHN0AAZ,F02AH8J752L\r\n----------------------------199934421484272806572989\r\nContent-Disposition: form-data; name=\"channel\"\r\n\r\nC3Y9NQTQG\r\n----------------------------199934421484272806572989--\r\n", "status": 200, "response": { "ok": true