From e1b190a5777bee96b6796a842f5511be4fb39780 Mon Sep 17 00:00:00 2001 From: Linnea Johnson Date: Tue, 10 Sep 2019 13:36:01 -0700 Subject: [PATCH 01/20] created lib and test files --- lib/channel.rb | 0 lib/recipient.rb | 0 lib/user.rb | 0 test/channel_test.rb | 0 test/recipient_test.rb | 0 test/user_test.rb | 0 6 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 lib/channel.rb create mode 100644 lib/recipient.rb create mode 100644 lib/user.rb create mode 100644 test/channel_test.rb create mode 100644 test/recipient_test.rb create mode 100644 test/user_test.rb diff --git a/lib/channel.rb b/lib/channel.rb new file mode 100644 index 00000000..e69de29b diff --git a/lib/recipient.rb b/lib/recipient.rb new file mode 100644 index 00000000..e69de29b diff --git a/lib/user.rb b/lib/user.rb new file mode 100644 index 00000000..e69de29b diff --git a/test/channel_test.rb b/test/channel_test.rb new file mode 100644 index 00000000..e69de29b diff --git a/test/recipient_test.rb b/test/recipient_test.rb new file mode 100644 index 00000000..e69de29b diff --git a/test/user_test.rb b/test/user_test.rb new file mode 100644 index 00000000..e69de29b From c7e97ccef0896f02b274d76da8760606b318ad3a Mon Sep 17 00:00:00 2001 From: Linnea Johnson Date: Tue, 10 Sep 2019 14:24:30 -0700 Subject: [PATCH 02/20] program is communicating with api --- lib/channel.rb | 15 +++++++++++++++ lib/recipient.rb | 1 + lib/user.rb | 16 ++++++++++++++++ test/user_test.rb | 15 +++++++++++++++ 4 files changed, 47 insertions(+) diff --git a/lib/channel.rb b/lib/channel.rb index e69de29b..d5138539 100644 --- a/lib/channel.rb +++ b/lib/channel.rb @@ -0,0 +1,15 @@ +require 'httparty' +require 'dotenv' + +Dotenv.load + +BASE_URL = "https://slack.com/api/channels.list" +TOKEN = ENV["API_TOKEN"] + +query = { + token: TOKEN +} + +response = HTTParty.get(BASE_URL, query: query) + +puts response \ No newline at end of file diff --git a/lib/recipient.rb b/lib/recipient.rb index e69de29b..8b137891 100644 --- a/lib/recipient.rb +++ b/lib/recipient.rb @@ -0,0 +1 @@ + diff --git a/lib/user.rb b/lib/user.rb index e69de29b..1daa5a36 100644 --- a/lib/user.rb +++ b/lib/user.rb @@ -0,0 +1,16 @@ +BASE_URL = "https://slack.com/api/users.list" +TOKEN = ENV["API_TOKEN"] + +query = { + token: TOKEN +} + +response = HTTParty.get(BASE_URL, query: query) + +class User + def initialize(id, username, real_name) + @id = id + @username = username + @real_name = real_name + end +end \ No newline at end of file diff --git a/test/user_test.rb b/test/user_test.rb index e69de29b..f7e5a409 100644 --- a/test/user_test.rb +++ b/test/user_test.rb @@ -0,0 +1,15 @@ +require_relative 'test_helper' +require 'pry' + +describe "User class" do + it "can get user list" do + VCR.use_cassette("user_list_generation") do + id = + username = "SlackBot" + response = User.new(id, username, real_name) + + expect(response["SlackBot"]).wont_be_nil + expect(response["Seattle"][:lon]).must_equal "-122.3300624" + expect(response["Seattle"][:lat]).must_equal "47.6038321" + end + end \ No newline at end of file From e013698124ee4cc75612a6dd5646880279770273 Mon Sep 17 00:00:00 2001 From: Diana Han Date: Tue, 10 Sep 2019 16:29:41 -0700 Subject: [PATCH 03/20] Passed tests for User #initialize method --- lib/channel.rb | 31 +++++++--- lib/recipient.rb | 37 ++++++++++++ lib/user.rb | 35 ++++++++--- test/cassettes/user_list_generation.yml | 80 +++++++++++++++++++++++++ test/channel_test.rb | 4 ++ test/recipient_test.rb | 4 ++ test/test_helper.rb | 17 ++++++ test/user_test.rb | 39 +++++++++--- 8 files changed, 223 insertions(+), 24 deletions(-) create mode 100644 test/cassettes/user_list_generation.yml diff --git a/lib/channel.rb b/lib/channel.rb index d5138539..09a092d9 100644 --- a/lib/channel.rb +++ b/lib/channel.rb @@ -1,15 +1,32 @@ +require_relative 'recipient' require 'httparty' require 'dotenv' Dotenv.load -BASE_URL = "https://slack.com/api/channels.list" -TOKEN = ENV["API_TOKEN"] +class Channel < Recipient + attr_reader :id, :name, :topic, :member_count -query = { - token: TOKEN -} + def initialize(id, name, topic, member_count) + super(id, name) + @topic = topic + @member_count = member_count + end -response = HTTParty.get(BASE_URL, query: query) + def details + end -puts response \ No newline at end of file + + def self.list + # BASE_URL = "https://slack.com/api/channels.list" + # TOKEN = ENV["SLACK_TOKEN"] + + # query = { + # token: TOKEN + # } + + # response = HTTParty.get(BASE_URL, query: query) + + # response["slackbot"]["members".first]["id"] + end +end \ No newline at end of file diff --git a/lib/recipient.rb b/lib/recipient.rb index 8b137891..48c9aa4e 100644 --- a/lib/recipient.rb +++ b/lib/recipient.rb @@ -1 +1,38 @@ +class Recipient + attr_reader :id, :name + + def initialize(id, name) + @id = id + @name = name + end + + def send_message(message) + end + + + def self.get(url, params) + end + + + # ABSTRACT METHODS + def details + end + + + def self.list + # BASE_URL = + # TOKEN = ENV["SLACK_TOKEN"] + + # query = { + # token: TOKEN + # } + + # response = HTTParty.get(BASE_URL, query: query) + + # response["slackbot"]["members".first]["id"] + + + end +end + diff --git a/lib/user.rb b/lib/user.rb index 1daa5a36..99ad622f 100644 --- a/lib/user.rb +++ b/lib/user.rb @@ -1,16 +1,33 @@ -BASE_URL = "https://slack.com/api/users.list" -TOKEN = ENV["API_TOKEN"] +require_relative 'recipient' +require 'httparty' +require 'dotenv' -query = { - token: TOKEN -} +Dotenv.load -response = HTTParty.get(BASE_URL, query: query) +class User < Recipient + attr_reader :id, :username, :real_name -class User def initialize(id, username, real_name) - @id = id + super(id, name) @username = username @real_name = real_name end -end \ No newline at end of file + + def details + end + + + def self.list + # BASE_URL = "https://slack.com/api/users.list" + # TOKEN = ENV["SLACK_TOKEN"] + + # query = { + # token: TOKEN + # } + + # response = HTTParty.get(BASE_URL, query: query) + + end +end + + diff --git a/test/cassettes/user_list_generation.yml b/test/cassettes/user_list_generation.yml new file mode 100644 index 00000000..cb0a11ea --- /dev/null +++ b/test/cassettes/user_list_generation.yml @@ -0,0 +1,80 @@ +--- +http_interactions: +- request: + method: get + uri: https://slack.com/api/users.list?token= + body: + encoding: US-ASCII + string: '' + headers: + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + User-Agent: + - Ruby + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json; charset=utf-8 + Content-Length: + - '935' + Connection: + - keep-alive + Date: + - Tue, 10 Sep 2019 23:26:29 GMT + Server: + - Apache + X-Content-Type-Options: + - nosniff + X-Slack-Req-Id: + - dd6c3eab-07cb-45d9-8745-781bf6bcf07a + X-Oauth-Scopes: + - identify,channels:read,users:read,chat:write:bot + Expires: + - Mon, 26 Jul 1997 05:00:00 GMT + Cache-Control: + - private, no-cache, no-store, must-revalidate + Access-Control-Expose-Headers: + - x-slack-req-id, retry-after + X-Xss-Protection: + - '0' + X-Accepted-Oauth-Scopes: + - users:read + Vary: + - Accept-Encoding + Pragma: + - no-cache + Access-Control-Allow-Headers: + - slack-route, x-slack-version-ts + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Referrer-Policy: + - no-referrer + Access-Control-Allow-Origin: + - "*" + X-Via: + - haproxy-www-n83k + X-Cache: + - Miss from cloudfront + Via: + - 1.1 68eedbdfabd017beabf28d04341fec21.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - SEA19-C1 + X-Amz-Cf-Id: + - "-1N-bO96XNktkyCqxPPqYp142cV_jnS_tkI1y4ThACmghhAnPd6I2g==" + body: + encoding: ASCII-8BIT + string: '{"ok":true,"members":[{"id":"USLACKBOT","team_id":"TN7G5G3M3","name":"slackbot","deleted":false,"color":"757575","real_name":"Slackbot","tz":null,"tz_label":"Pacific + Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Slackbot","real_name_normalized":"Slackbot","display_name":"Slackbot","display_name_normalized":"Slackbot","fields":null,"status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"sv41d8cd98f0","always_active":true,"first_name":"slackbot","last_name":"","image_24":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_24.png","image_32":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_32.png","image_48":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_48.png","image_72":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_72.png","image_192":"https:\/\/a.slack-edge.com\/80588\/marketing\/img\/avatars\/slackbot\/avatar-slackbot.png","image_512":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_512.png","status_text_canonical":"","team":"TN7G5G3M3"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":0},{"id":"UN7G5G4TF","team_id":"TN7G5G3M3","name":"dianah46","deleted":false,"color":"9f69e7","real_name":"Diana + Han","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Diana + Han","real_name_normalized":"Diana Han","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"gb342b6bf000","first_name":"Diana","last_name":"Han","image_24":"https:\/\/secure.gravatar.com\/avatar\/b342b6bf0000c042ed016ac628b2dd26.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/b342b6bf0000c042ed016ac628b2dd26.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/b342b6bf0000c042ed016ac628b2dd26.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/b342b6bf0000c042ed016ac628b2dd26.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/b342b6bf0000c042ed016ac628b2dd26.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/b342b6bf0000c042ed016ac628b2dd26.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-512.png","status_text_canonical":"","team":"TN7G5G3M3"},"is_admin":true,"is_owner":true,"is_primary_owner":true,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1568143240,"has_2fa":false},{"id":"UN9N9T9LN","team_id":"TN7G5G3M3","name":"linnea.johnson1","deleted":false,"color":"4bbe2e","real_name":"Linnea + Johnson","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Linnea + Johnson","real_name_normalized":"Linnea Johnson","display_name":"Linnea Johnson","display_name_normalized":"Linnea + Johnson","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g62a333e3c5a","image_24":"https:\/\/secure.gravatar.com\/avatar\/62a333e3c5a3b0eb455d4fa82c117c9d.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0009-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/62a333e3c5a3b0eb455d4fa82c117c9d.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0009-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/62a333e3c5a3b0eb455d4fa82c117c9d.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0009-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/62a333e3c5a3b0eb455d4fa82c117c9d.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0009-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/62a333e3c5a3b0eb455d4fa82c117c9d.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0009-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/62a333e3c5a3b0eb455d4fa82c117c9d.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0009-512.png","status_text_canonical":"","team":"TN7G5G3M3"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1568143209,"has_2fa":false}],"cache_ts":1568157989,"response_metadata":{"next_cursor":""}}' + http_version: + recorded_at: Tue, 10 Sep 2019 23:26:29 GMT +recorded_with: VCR 5.0.0 diff --git a/test/channel_test.rb b/test/channel_test.rb index e69de29b..5239bb71 100644 --- a/test/channel_test.rb +++ b/test/channel_test.rb @@ -0,0 +1,4 @@ +require_relative 'test_helper' + +describe "Channel class" do +end \ No newline at end of file diff --git a/test/recipient_test.rb b/test/recipient_test.rb index e69de29b..3e7cbe65 100644 --- a/test/recipient_test.rb +++ b/test/recipient_test.rb @@ -0,0 +1,4 @@ +require_relative 'test_helper' + +describe "Recipient class" do +end \ No newline at end of file diff --git a/test/test_helper.rb b/test/test_helper.rb index 90aeb408..3762f5ae 100644 --- a/test/test_helper.rb +++ b/test/test_helper.rb @@ -8,10 +8,27 @@ require 'minitest/reporters' require 'minitest/skip_dsl' require 'vcr' +require "webmock/minitest" +require "dotenv" +Dotenv.load Minitest::Reporters.use! Minitest::Reporters::SpecReporter.new VCR.configure do |config| config.cassette_library_dir = "test/cassettes" config.hook_into :webmock + + config.default_cassette_options = { + :record => :new_episodes, # record new data when we don't have it yet + :match_requests_on => [:method, :uri, :body], # The http method, URI and body of a request all need to match + } + + config.filter_sensitive_data("") do + ENV["SLACK_TOKEN"] + end end + +require_relative "../lib/channel" +require_relative "../lib/user" +require_relative "../lib/slack" +require_relative "../lib/recipient" diff --git a/test/user_test.rb b/test/user_test.rb index f7e5a409..cd935da3 100644 --- a/test/user_test.rb +++ b/test/user_test.rb @@ -2,14 +2,37 @@ require 'pry' describe "User class" do - it "can get user list" do + before do + BASE_URL = "https://slack.com/api/users.list" + TOKEN = ENV["SLACK_TOKEN"] + @query = { + token: TOKEN + } + end + + it "can create an instance" do VCR.use_cassette("user_list_generation") do - id = - username = "SlackBot" - response = User.new(id, username, real_name) + + @response = HTTParty.get(BASE_URL, query: @query) - expect(response["SlackBot"]).wont_be_nil - expect(response["Seattle"][:lon]).must_equal "-122.3300624" - expect(response["Seattle"][:lat]).must_equal "47.6038321" + id = "USLACKBOT" + name = "slackbot" + real_name = "Slackbot" + user = User.new(id, name, real_name) + + expect(user).must_be_instance_of User end - end \ No newline at end of file + end + + it "can return slackbot details" do + VCR.use_cassette("user_list_generation") do + + @response = HTTParty.get(BASE_URL, query: @query) + + expect(@response["members"][0]["id"]).must_equal "USLACKBOT" + expect(@response["members"][0]["real_name"]).must_equal "Slackbot" + + end + end + +end \ No newline at end of file From 68d7c7e3b6b28958977b91d5d81649ea20335e13 Mon Sep 17 00:00:00 2001 From: Linnea Johnson Date: Tue, 10 Sep 2019 17:03:13 -0700 Subject: [PATCH 04/20] created tests for channel, troubleshooting indexing discrepancy between computers --- lib/user.rb | 2 +- test/cassettes/channel_instantiation.yml | 101 +++++++++++++++++++++ test/cassettes/channel_list_generation.yml | 101 +++++++++++++++++++++ test/channel_test.rb | 36 ++++++++ test/user_test.rb | 1 + 5 files changed, 240 insertions(+), 1 deletion(-) create mode 100644 test/cassettes/channel_instantiation.yml create mode 100644 test/cassettes/channel_list_generation.yml diff --git a/lib/user.rb b/lib/user.rb index 99ad622f..0d8e507c 100644 --- a/lib/user.rb +++ b/lib/user.rb @@ -6,10 +6,10 @@ class User < Recipient attr_reader :id, :username, :real_name + def initialize(id, username, real_name) super(id, name) - @username = username @real_name = real_name end diff --git a/test/cassettes/channel_instantiation.yml b/test/cassettes/channel_instantiation.yml new file mode 100644 index 00000000..097a546a --- /dev/null +++ b/test/cassettes/channel_instantiation.yml @@ -0,0 +1,101 @@ +--- +http_interactions: +- request: + method: get + uri: https://slack.com/api/channels.list?token= + body: + encoding: US-ASCII + string: '' + headers: + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + User-Agent: + - Ruby + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json; charset=utf-8 + Content-Length: + - '3010' + Connection: + - keep-alive + Date: + - Tue, 10 Sep 2019 23:42:18 GMT + Server: + - Apache + X-Content-Type-Options: + - nosniff + X-Slack-Req-Id: + - 92bae1c9-df3c-457a-bc8f-cdb4991dd322 + X-Oauth-Scopes: + - identify,channels:read,users:read,chat:write:bot + Expires: + - Mon, 26 Jul 1997 05:00:00 GMT + Cache-Control: + - private, no-cache, no-store, must-revalidate + Access-Control-Expose-Headers: + - x-slack-req-id, retry-after + X-Xss-Protection: + - '0' + X-Accepted-Oauth-Scopes: + - channels:read + Vary: + - Accept-Encoding + Pragma: + - no-cache + Access-Control-Allow-Headers: + - slack-route, x-slack-version-ts + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Referrer-Policy: + - no-referrer + Access-Control-Allow-Origin: + - "*" + X-Via: + - haproxy-www-x36g + X-Cache: + - Miss from cloudfront + Via: + - 1.1 e9f9d4725d6328edca783d6dff756da8.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - SEA19-C1 + X-Amz-Cf-Id: + - 54Rqx8epRlqk-tft5lv-J7RcKgd2CxbLIDYTqiR3gg9JvlFLrMVK1g== + body: + encoding: ASCII-8BIT + string: '{"ok":true,"channels":[{"id":"CJAMGE6R1","name":"random","is_channel":true,"created":1557770905,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UJN5DKL1E","name_normalized":"random","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UJAPUTAF4","UJMLQTTEY","UJN5DKL1E","UJQ873NDD","UJXPV09TL","UJXPV0DR8","UJZ3URHQB","UK10KBHSQ","UK2RV9NKB","UK36V5L9Z","UKA9W2MEE","UKAA488JW","UKAAUGJ11","UKABC0750","UKABQG0CA","UKAL08P5Z","UKBC421P0","UKBC422PQ","UKC0HUSLS","UKC2ASYHG","UKCLVNNPL","UKDV40M6F","UKFBHE133","UKFBMULKB","UKFD9J71P","UKFE28R6V","UKFGG5UQ1","UKFPTDNJV","UKGFRFFCZ","UKHME3FTM","UKM7TAX2Q","UKMB6PP8U","UKMDRV5NG","UKMHX8UKE","UKMNTUH4Y","UKMNU6X9B","UKMRU64DT","UKMTXM5D3","UKMTZABLG","UKMU36EG0","UKMU5VAEL","UKN2G5VFX","UKNLBGKAQ","UKP50A5FF","UKPK1TFHV","UKPLMTE6B","UKPRYFCDU","UKPS4DVUP","UKPU1GQ22","UKPU6UZ38","UKQ08R6UF","UKQ1T39KQ","UKQ2D81L6","UKQ578N3Y","UKQ6SDAK0","UKQBBCJK0","UKRCFJHRC","UKRRBETBJ","UKS39J7EH","UKS5RTFJA","UKSLF7L8L","UKSP3ENB0","UKV05L9UP","UL2DDEE4U","UL2T9CQRW","ULQA393PW","ULUG9L2NA","ULXPQ8C4T","ULXPQ8VBM","ULXPQ9BDH","ULXPQA1S7","ULXPRPF0S","ULXPRQGRG","UM01297MH","UM2RMGFDX","UM5VC5FR8","UM8NWHP3N","UM8NWHX28","UM8NWJHFE","UM8NWJSJ0","UM8NWKE04","UM8NWQPT6","UM9740S64","UM97ADG93","UM97AE5D3","UMB341WK1","UMBBMGR9U","UMBBMHB3Q","UMBBMHKNJ","UMBBMJCUW","UMDAYDQJG","UMERFSZFC","UMERU55UP","UMETXV6R4","UMFRF8X70","UMHK0C17A","UMHQQCENL","UML5D5UMT","UMNB4E3HS","UMNCB7BUL","UMPMS4N4B","UMSMFS5P0"],"topic":{"value":"Non-work + banter and water cooler conversation","creator":"UJN5DKL1E","last_set":1557770905},"purpose":{"value":"A + place for non-work-related flimflam, faffing, hodge-podge or jibber-jabber + you''d prefer to keep out of more focused work-related channels.","creator":"UJN5DKL1E","last_set":1557770905},"previous_names":[],"num_members":102},{"id":"CJC0RHGF5","name":"ada-announcements","is_channel":true,"created":1557860433,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UJN5DKL1E","name_normalized":"ada-announcements","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UJAPUTAF4","UJMLQTTEY","UJN5DKL1E","UJQ873NDD","UJXPV09TL","UJXPV0DR8","UJZ3URHQB","UK10KBHSQ","UK2RV9NKB","UK36V5L9Z","UKA9W2MEE","UKAA488JW","UKAAUGJ11","UKABC0750","UKABQG0CA","UKAL08P5Z","UKBC421P0","UKBC422PQ","UKC0HUSLS","UKC2ASYHG","UKDV40M6F","UKFBHE133","UKFBMULKB","UKFD9J71P","UKFE28R6V","UKFGG5UQ1","UKFPTDNJV","UKGFRFFCZ","UKHME3FTM","UKM7TAX2Q","UKMB6PP8U","UKMDRV5NG","UKMHX8UKE","UKMNTUH4Y","UKMNU6X9B","UKMRU64DT","UKMTXM5D3","UKMTZABLG","UKMU36EG0","UKMU5VAEL","UKN2G5VFX","UKNLBGKAQ","UKP50A5FF","UKPK1TFHV","UKPLMTE6B","UKPRYFCDU","UKPS4DVUP","UKPU1GQ22","UKPU6UZ38","UKQ08R6UF","UKQ1T39KQ","UKQ2D81L6","UKQ578N3Y","UKQ6SDAK0","UKQBBCJK0","UKRCFJHRC","UKRRBETBJ","UKS39J7EH","UKS5RTFJA","UKSLF7L8L","UKSP3ENB0","UKV05L9UP","UL2T9CQRW","ULUG9L2NA","ULXPQA1S7","UM5VC5FR8","UM8NWQPT6","UMBBMJCUW","UMDAYDQJG","UML5D5UMT","UMNCB7BUL","UMPMS4N4B"],"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"Important + announcements about scheduling, classes, events, etc.","creator":"UJN5DKL1E","last_set":1557860434},"previous_names":[],"num_members":72},{"id":"CJC1J18UA","name":"classroom-support","is_channel":true,"created":1557860554,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UJN5DKL1E","name_normalized":"classroom-support","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UJN5DKL1E","UJXPV09TL","UKA9W2MEE","UKAA488JW","UKAAUGJ11","UKABC0750","UKABQG0CA","UKAL08P5Z","UKC0HUSLS","UKC2ASYHG","UKDV40M6F","UKFBHE133","UKFBMULKB","UKFD9J71P","UKFGG5UQ1","UKFPTDNJV","UKGFRFFCZ","UKHME3FTM","UKM7TAX2Q","UKMB6PP8U","UKMDRV5NG","UKMHX8UKE","UKMNTUH4Y","UKMNU6X9B","UKMRU64DT","UKMTXM5D3","UKMTZABLG","UKMU36EG0","UKMU5VAEL","UKN2G5VFX","UKNLBGKAQ","UKP50A5FF","UKPK1TFHV","UKPLMTE6B","UKPRYFCDU","UKPS4DVUP","UKPU1GQ22","UKPU6UZ38","UKQ08R6UF","UKQ1T39KQ","UKQ2D81L6","UKQ578N3Y","UKQ6SDAK0","UKQBBCJK0","UKRCFJHRC","UKRRBETBJ","UKS39J7EH","UKSLF7L8L","UKSP3ENB0","UKV05L9UP","UL2DDEE4U","UL2T9CQRW","ULXPQ8C4T","ULXPQ8VBM","ULXPQ9BDH","ULXPQA1S7","ULXPRPF0S","ULXPRQGRG","UM2RMGFDX","UM2RMGJEM","UM5VC5FR8","UM8NWHP3N","UM8NWHX28","UM8NWJHFE","UM8NWJSJ0","UM8NWKE04","UM8NWQPT6","UM9740S64","UM97ADG93","UM97AE5D3","UMB341WK1","UMBBMGR9U","UMBBMHB3Q","UMBBMHKNJ","UMBBMJCUW","UMDAYDQJG","UMERFSZFC","UMERU55UP","UMFRF8X70","UMHAWJALF","UMHK0C17A","UMHQQCENL","UML5D5UMT","UMNCB7BUL"],"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"This + is where you''ll hear from our amazing academic volunteers when they''re here + to help out. Sarah will also sometimes post TA schedule changes and new volunteer + introductions here.","creator":"UJN5DKL1E","last_set":1557860555},"previous_names":[],"num_members":84},{"id":"CJC1PTG58","name":"introductions","is_channel":true,"created":1557860856,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UJN5DKL1E","name_normalized":"introductions","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UJAPUTAF4","UJMLQTTEY","UJN5DKL1E","UJQ873NDD","UJXPV09TL","UJXPV0DR8","UJZ3URHQB","UK10KBHSQ","UK2RV9NKB","UK36V5L9Z","UKA9W2MEE","UKAA488JW","UKAAUGJ11","UKABC0750","UKABQG0CA","UKAL08P5Z","UKBC421P0","UKBC422PQ","UKC0HUSLS","UKC2ASYHG","UKFBHE133","UKFBMULKB","UKFD9J71P","UKFE28R6V","UKFGG5UQ1","UKGFRFFCZ","UKHME3FTM","UKM7TAX2Q","UKMB6PP8U","UKMDRV5NG","UKMHX8UKE","UKMNTUH4Y","UKMNU6X9B","UKMRU64DT","UKMTXM5D3","UKMU36EG0","UKMU5VAEL","UKN2G5VFX","UKNLBGKAQ","UKP50A5FF","UKPK1TFHV","UKPLMTE6B","UKPRYFCDU","UKPS4DVUP","UKPU1GQ22","UKPU6UZ38","UKQ08R6UF","UKQ1T39KQ","UKQ2D81L6","UKQ578N3Y","UKQ6SDAK0","UKQBBCJK0","UKRCFJHRC","UKRRBETBJ","UKS39J7EH","UKS5RTFJA","UKSLF7L8L","UKSP3ENB0","UKV05L9UP","UL2DDEE4U","UL2T9CQRW","ULXPQ8C4T","ULXPQA1S7","UM5VC5FR8","UM8NWHX28","UM8NWQPT6","UMBBMJCUW","UMDAYDQJG","UMERU55UP","UML5D5UMT"],"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"Who + are you? What are your pronouns? Say hi!","creator":"UJN5DKL1E","last_set":1557860857},"previous_names":[],"num_members":70},{"id":"CJDBJ3VBM","name":"branches","is_channel":true,"created":1557953416,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UJN5DKL1E","name_normalized":"branches","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UJMLQTTEY","UJN5DKL1E","UJQ873NDD","UJXPV09TL","UKA9W2MEE","UKAA488JW","UKABQG0CA","UKBC422PQ","UKC0HUSLS","UKC2ASYHG","UKFE28R6V","UKFGG5UQ1","UKFPTDNJV","UKGFRFFCZ","UKHME3FTM","UKM7TAX2Q","UKMB6PP8U","UKMDRV5NG","UKMRU64DT","UKMTXM5D3","UKMTZABLG","UKMU5VAEL","UKN2G5VFX","UKPK1TFHV","UKPS4DVUP","UKPU1GQ22","UKPU6UZ38","UKQ08R6UF","UKQ1T39KQ","UKQ6SDAK0","UKQBBCJK0","UKS39J7EH","UKSP3ENB0","UKV05L9UP","UL2DDEE4U","UL2T9CQRW","UM01297MH","UMDAYDQJG"],"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"","creator":"","last_set":0},"previous_names":[],"num_members":38},{"id":"CJN492RKP","name":"general","is_channel":true,"created":1557770905,"is_archived":false,"is_general":true,"unlinked":0,"creator":"UJN5DKL1E","name_normalized":"general","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UJAPUTAF4","UJMLQTTEY","UJN5DKL1E","UJQ873NDD","UJXPV09TL","UJXPV0DR8","UJZ3URHQB","UK10KBHSQ","UK2RV9NKB","UK36V5L9Z","UKA9W2MEE","UKAA488JW","UKAAUGJ11","UKABC0750","UKABQG0CA","UKAL08P5Z","UKBC421P0","UKBC422PQ","UKC0HUSLS","UKC2ASYHG","UKCLVNNPL","UKDV40M6F","UKFBHE133","UKFBMULKB","UKFD9J71P","UKFE28R6V","UKFGG5UQ1","UKFPTDNJV","UKGFRFFCZ","UKHME3FTM","UKM7TAX2Q","UKMB6PP8U","UKMDRV5NG","UKMHX8UKE","UKMNTUH4Y","UKMNU6X9B","UKMRU64DT","UKMTXM5D3","UKMTZABLG","UKMU36EG0","UKMU5VAEL","UKN2G5VFX","UKNLBGKAQ","UKP50A5FF","UKPK1TFHV","UKPLMTE6B","UKPRYFCDU","UKPS4DVUP","UKPU1GQ22","UKPU6UZ38","UKQ08R6UF","UKQ1T39KQ","UKQ2D81L6","UKQ578N3Y","UKQ6SDAK0","UKQBBCJK0","UKRCFJHRC","UKRRBETBJ","UKS39J7EH","UKS5RTFJA","UKSLF7L8L","UKSP3ENB0","UKV05L9UP","UL2DDEE4U","UL2T9CQRW","ULQA393PW","ULUG9L2NA","ULXPQ8C4T","ULXPQ8VBM","ULXPQ9BDH","ULXPQA1S7","ULXPRPF0S","ULXPRQGRG","UM01297MH","UM2RMGFDX","UM2RMGJEM","UM5VC5FR8","UM8NWHP3N","UM8NWHX28","UM8NWJHFE","UM8NWJSJ0","UM8NWKE04","UM8NWQPT6","UM9740S64","UM97ADG93","UM97AE5D3","UMB341WK1","UMBBMGR9U","UMBBMHB3Q","UMBBMHKNJ","UMBBMJCUW","UMDAYDQJG","UMERFSZFC","UMERU55UP","UMETXV6R4","UMFRF8X70","UMHAWJALF","UMHK0C17A","UMHQQCENL","UML5D5UMT","UMNB4E3HS","UMNCB7BUL","UMPMS4N4B","UMSMFS5P0"],"topic":{"value":"Company-wide + announcements and work-based matters","creator":"UJN5DKL1E","last_set":1557770905},"purpose":{"value":"This + channel is for workspace-wide communication and announcements. All members + are in this channel.","creator":"UJN5DKL1E","last_set":1557770905},"previous_names":[],"num_members":104},{"id":"CJPD1JV8V","name":"fur-babes","is_channel":true,"created":1557860608,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UJN5DKL1E","name_normalized":"fur-babes","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UJMLQTTEY","UJN5DKL1E","UJQ873NDD","UJXPV09TL","UK10KBHSQ","UKA9W2MEE","UKAA488JW","UKAAUGJ11","UKABC0750","UKABQG0CA","UKAL08P5Z","UKBC422PQ","UKC0HUSLS","UKC2ASYHG","UKDV40M6F","UKFBMULKB","UKFGG5UQ1","UKFPTDNJV","UKGFRFFCZ","UKHME3FTM","UKM7TAX2Q","UKMB6PP8U","UKMDRV5NG","UKMHX8UKE","UKMNTUH4Y","UKMRU64DT","UKMTXM5D3","UKMTZABLG","UKMU36EG0","UKMU5VAEL"],"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"Pet + pics pls","creator":"UJN5DKL1E","last_set":1557860609},"previous_names":[],"num_members":46},{"id":"CJPJWUFEH","name":"moving-to-seattle","is_channel":true,"created":1557872462,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UJN5DKL1E","name_normalized":"moving-to-seattle","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UKMRU64DT"],"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"This + is a place to share housing options, Seattle advice, ask for any moving help + you may need, or just get recommendations for the best happy hours\/parks\/hikes","creator":"UJN5DKL1E","last_set":1557872462},"previous_names":[],"num_members":19},{"id":"CJPP8RK50","name":"jump-start-live","is_channel":true,"created":1558972568,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UJQ873NDD","name_normalized":"jump-start-live","is_shared":false,"is_org_shared":false,"is_member":false,"is_private":false,"is_mpim":false,"members":[],"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"A + channel to discuss and ask questions about Jump Start Live lessons and assignments.","creator":"UJQ873NDD","last_set":1558972569},"previous_names":[],"num_members":33},{"id":"CJQA8JA1L","name":"pre-ada-homework","is_channel":true,"created":1557770906,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UJN5DKL1E","name_normalized":"pre-ada-homework","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UKMRU64DT"],"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"This + channel is for discussing and getting help with the Pre-Ada Assignments","creator":"UJQ873NDD","last_set":1557787560},"previous_names":[],"num_members":93},{"id":"CJSKPUFB9","name":"leaves","is_channel":true,"created":1557953427,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UJN5DKL1E","name_normalized":"leaves","is_shared":false,"is_org_shared":false,"is_member":false,"is_private":false,"is_mpim":false,"members":[],"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"","creator":"","last_set":0},"previous_names":[],"num_members":35},{"id":"CK3BABZTQ","name":"jump-start","is_channel":true,"created":1558972538,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UJQ873NDD","name_normalized":"jump-start","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UKMRU64DT"],"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"A + channel to discuss or ask questions about Jumpstart material","creator":"UJQ873NDD","last_set":1558972538},"previous_names":[],"num_members":26},{"id":"CKBKHV0M6","name":"company-engagement","is_channel":true,"created":1559844559,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UJMLQTTEY","name_normalized":"company-engagement","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UKMRU64DT"],"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"For + all things regarding company engagement!","creator":"UJMLQTTEY","last_set":1559844560},"previous_names":[],"num_members":56},{"id":"CKQ8TRLTC","name":"csmemes","is_channel":true,"created":1562006819,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UJQ873NDD","name_normalized":"csmemes","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UKMRU64DT"],"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"Fun!","creator":"UJQ873NDD","last_set":1562006819},"previous_names":[],"num_members":40},{"id":"CKVLEDLBD","name":"csfundamentals","is_channel":true,"created":1562554254,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UJQ873NDD","name_normalized":"csfundamentals","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UKMRU64DT"],"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"","creator":"","last_set":0},"previous_names":[],"num_members":56},{"id":"CLLAMCJRK","name":"ada-parents","is_channel":true,"created":1563562545,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UL2DDEE4U","name_normalized":"ada-parents","is_shared":false,"is_org_shared":false,"is_member":false,"is_private":false,"is_mpim":false,"members":[],"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"a + place for adies who are parents to share tips, tricks, and pics of their kiddos + :slightly_smiling_face:","creator":"UL2DDEE4U","last_set":1563562545},"previous_names":["are-we-there-yet"],"num_members":4},{"id":"CLRDSEKK5","name":"project-notifications","is_channel":true,"created":1565035130,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UJXPV09TL","name_normalized":"project-notifications","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UKMRU64DT"],"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"A + channel for instructional staff to specifically give notices on classroom + materials, assignments, exercises, projects, etc.","creator":"UJXPV09TL","last_set":1565035130},"previous_names":[],"num_members":54},{"id":"CLXV6FDJM","name":"tech-events","is_channel":true,"created":1565127969,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UKQ6SDAK0","name_normalized":"tech-events","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UKMRU64DT"],"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"Do + you know about a cool tech event or meetup that current Adie''s would be interested + in? Post about it here!","creator":"UKQ6SDAK0","last_set":1565127969},"previous_names":[],"num_members":51},{"id":"CMB69NPGT","name":"lunch-tips","is_channel":true,"created":1566585378,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UKPU1GQ22","name_normalized":"lunch-tips","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UKMRU64DT"],"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"share + places to get lunch, apps to order food, best meals nearby","creator":"UKPU1GQ22","last_set":1566585378},"previous_names":[],"num_members":37},{"id":"CMLC1RR7F","name":"cs-memes","is_channel":true,"created":1566443015,"is_archived":true,"is_general":false,"unlinked":0,"creator":"ULXPQ8VBM","name_normalized":"cs-memes","is_shared":false,"is_org_shared":false,"is_member":false,"is_private":false,"is_mpim":false,"members":[],"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"Memes + and funnies related to computing","creator":"ULXPQ8VBM","last_set":1566443015},"previous_names":[],"num_members":0},{"id":"CMNJ57NHK","name":"community-milk","is_channel":true,"created":1566583157,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UKMNTUH4Y","name_normalized":"community-milk","is_shared":false,"is_org_shared":false,"is_member":false,"is_private":false,"is_mpim":false,"members":[],"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"status + of milk in fridge","creator":"UKMNTUH4Y","last_set":1566583157},"previous_names":[],"num_members":18},{"id":"CMNSGK2K1","name":"leaves-organized-joy","is_channel":true,"created":1566485894,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UKABC0750","name_normalized":"leaves-organized-joy","is_shared":false,"is_org_shared":false,"is_member":false,"is_private":false,"is_mpim":false,"members":[],"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"","creator":"","last_set":0},"previous_names":[],"num_members":26}],"response_metadata":{"next_cursor":""}}' + http_version: + recorded_at: Tue, 10 Sep 2019 23:42:18 GMT +recorded_with: VCR 5.0.0 diff --git a/test/cassettes/channel_list_generation.yml b/test/cassettes/channel_list_generation.yml new file mode 100644 index 00000000..c0431099 --- /dev/null +++ b/test/cassettes/channel_list_generation.yml @@ -0,0 +1,101 @@ +--- +http_interactions: +- request: + method: get + uri: https://slack.com/api/channels.list?token= + body: + encoding: US-ASCII + string: '' + headers: + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + User-Agent: + - Ruby + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json; charset=utf-8 + Content-Length: + - '3010' + Connection: + - keep-alive + Date: + - Tue, 10 Sep 2019 23:42:18 GMT + Server: + - Apache + X-Content-Type-Options: + - nosniff + X-Slack-Req-Id: + - '0928d1e5-6519-480e-b6d0-46fea3d53922' + X-Oauth-Scopes: + - identify,channels:read,users:read,chat:write:bot + Expires: + - Mon, 26 Jul 1997 05:00:00 GMT + Cache-Control: + - private, no-cache, no-store, must-revalidate + Access-Control-Expose-Headers: + - x-slack-req-id, retry-after + X-Xss-Protection: + - '0' + X-Accepted-Oauth-Scopes: + - channels:read + Vary: + - Accept-Encoding + Pragma: + - no-cache + Access-Control-Allow-Headers: + - slack-route, x-slack-version-ts + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Referrer-Policy: + - no-referrer + Access-Control-Allow-Origin: + - "*" + X-Via: + - haproxy-www-tr9b + X-Cache: + - Miss from cloudfront + Via: + - 1.1 aa623e134417515bd2496cb01d5e5626.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - SEA19-C1 + X-Amz-Cf-Id: + - gwz0gk6jyWc-B363MFtIl9oy3WVkvdrlw9MQ3iJql7dN6nYS6Lp_lg== + body: + encoding: ASCII-8BIT + string: '{"ok":true,"channels":[{"id":"CJAMGE6R1","name":"random","is_channel":true,"created":1557770905,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UJN5DKL1E","name_normalized":"random","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UJAPUTAF4","UJMLQTTEY","UJN5DKL1E","UJQ873NDD","UJXPV09TL","UJXPV0DR8","UJZ3URHQB","UK10KBHSQ","UK2RV9NKB","UK36V5L9Z","UKA9W2MEE","UKAA488JW","UKAAUGJ11","UKABC0750","UKABQG0CA","UKAL08P5Z","UKBC421P0","UKBC422PQ","UKC0HUSLS","UKC2ASYHG","UKCLVNNPL","UKDV40M6F","UKFBHE133","UKFBMULKB","UKFD9J71P","UKFE28R6V","UKFGG5UQ1","UKFPTDNJV","UKGFRFFCZ","UKHME3FTM","UKM7TAX2Q","UKMB6PP8U","UKMDRV5NG","UKMHX8UKE","UKMNTUH4Y","UKMNU6X9B","UKMRU64DT","UKMTXM5D3","UKMTZABLG","UKMU36EG0","UKMU5VAEL","UKN2G5VFX","UKNLBGKAQ","UKP50A5FF","UKPK1TFHV","UKPLMTE6B","UKPRYFCDU","UKPS4DVUP","UKPU1GQ22","UKPU6UZ38","UKQ08R6UF","UKQ1T39KQ","UKQ2D81L6","UKQ578N3Y","UKQ6SDAK0","UKQBBCJK0","UKRCFJHRC","UKRRBETBJ","UKS39J7EH","UKS5RTFJA","UKSLF7L8L","UKSP3ENB0","UKV05L9UP","UL2DDEE4U","UL2T9CQRW","ULQA393PW","ULUG9L2NA","ULXPQ8C4T","ULXPQ8VBM","ULXPQ9BDH","ULXPQA1S7","ULXPRPF0S","ULXPRQGRG","UM01297MH","UM2RMGFDX","UM5VC5FR8","UM8NWHP3N","UM8NWHX28","UM8NWJHFE","UM8NWJSJ0","UM8NWKE04","UM8NWQPT6","UM9740S64","UM97ADG93","UM97AE5D3","UMB341WK1","UMBBMGR9U","UMBBMHB3Q","UMBBMHKNJ","UMBBMJCUW","UMDAYDQJG","UMERFSZFC","UMERU55UP","UMETXV6R4","UMFRF8X70","UMHK0C17A","UMHQQCENL","UML5D5UMT","UMNB4E3HS","UMNCB7BUL","UMPMS4N4B","UMSMFS5P0"],"topic":{"value":"Non-work + banter and water cooler conversation","creator":"UJN5DKL1E","last_set":1557770905},"purpose":{"value":"A + place for non-work-related flimflam, faffing, hodge-podge or jibber-jabber + you''d prefer to keep out of more focused work-related channels.","creator":"UJN5DKL1E","last_set":1557770905},"previous_names":[],"num_members":102},{"id":"CJC0RHGF5","name":"ada-announcements","is_channel":true,"created":1557860433,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UJN5DKL1E","name_normalized":"ada-announcements","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UJAPUTAF4","UJMLQTTEY","UJN5DKL1E","UJQ873NDD","UJXPV09TL","UJXPV0DR8","UJZ3URHQB","UK10KBHSQ","UK2RV9NKB","UK36V5L9Z","UKA9W2MEE","UKAA488JW","UKAAUGJ11","UKABC0750","UKABQG0CA","UKAL08P5Z","UKBC421P0","UKBC422PQ","UKC0HUSLS","UKC2ASYHG","UKDV40M6F","UKFBHE133","UKFBMULKB","UKFD9J71P","UKFE28R6V","UKFGG5UQ1","UKFPTDNJV","UKGFRFFCZ","UKHME3FTM","UKM7TAX2Q","UKMB6PP8U","UKMDRV5NG","UKMHX8UKE","UKMNTUH4Y","UKMNU6X9B","UKMRU64DT","UKMTXM5D3","UKMTZABLG","UKMU36EG0","UKMU5VAEL","UKN2G5VFX","UKNLBGKAQ","UKP50A5FF","UKPK1TFHV","UKPLMTE6B","UKPRYFCDU","UKPS4DVUP","UKPU1GQ22","UKPU6UZ38","UKQ08R6UF","UKQ1T39KQ","UKQ2D81L6","UKQ578N3Y","UKQ6SDAK0","UKQBBCJK0","UKRCFJHRC","UKRRBETBJ","UKS39J7EH","UKS5RTFJA","UKSLF7L8L","UKSP3ENB0","UKV05L9UP","UL2T9CQRW","ULUG9L2NA","ULXPQA1S7","UM5VC5FR8","UM8NWQPT6","UMBBMJCUW","UMDAYDQJG","UML5D5UMT","UMNCB7BUL","UMPMS4N4B"],"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"Important + announcements about scheduling, classes, events, etc.","creator":"UJN5DKL1E","last_set":1557860434},"previous_names":[],"num_members":72},{"id":"CJC1J18UA","name":"classroom-support","is_channel":true,"created":1557860554,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UJN5DKL1E","name_normalized":"classroom-support","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UJN5DKL1E","UJXPV09TL","UKA9W2MEE","UKAA488JW","UKAAUGJ11","UKABC0750","UKABQG0CA","UKAL08P5Z","UKC0HUSLS","UKC2ASYHG","UKDV40M6F","UKFBHE133","UKFBMULKB","UKFD9J71P","UKFGG5UQ1","UKFPTDNJV","UKGFRFFCZ","UKHME3FTM","UKM7TAX2Q","UKMB6PP8U","UKMDRV5NG","UKMHX8UKE","UKMNTUH4Y","UKMNU6X9B","UKMRU64DT","UKMTXM5D3","UKMTZABLG","UKMU36EG0","UKMU5VAEL","UKN2G5VFX","UKNLBGKAQ","UKP50A5FF","UKPK1TFHV","UKPLMTE6B","UKPRYFCDU","UKPS4DVUP","UKPU1GQ22","UKPU6UZ38","UKQ08R6UF","UKQ1T39KQ","UKQ2D81L6","UKQ578N3Y","UKQ6SDAK0","UKQBBCJK0","UKRCFJHRC","UKRRBETBJ","UKS39J7EH","UKSLF7L8L","UKSP3ENB0","UKV05L9UP","UL2DDEE4U","UL2T9CQRW","ULXPQ8C4T","ULXPQ8VBM","ULXPQ9BDH","ULXPQA1S7","ULXPRPF0S","ULXPRQGRG","UM2RMGFDX","UM2RMGJEM","UM5VC5FR8","UM8NWHP3N","UM8NWHX28","UM8NWJHFE","UM8NWJSJ0","UM8NWKE04","UM8NWQPT6","UM9740S64","UM97ADG93","UM97AE5D3","UMB341WK1","UMBBMGR9U","UMBBMHB3Q","UMBBMHKNJ","UMBBMJCUW","UMDAYDQJG","UMERFSZFC","UMERU55UP","UMFRF8X70","UMHAWJALF","UMHK0C17A","UMHQQCENL","UML5D5UMT","UMNCB7BUL"],"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"This + is where you''ll hear from our amazing academic volunteers when they''re here + to help out. Sarah will also sometimes post TA schedule changes and new volunteer + introductions here.","creator":"UJN5DKL1E","last_set":1557860555},"previous_names":[],"num_members":84},{"id":"CJC1PTG58","name":"introductions","is_channel":true,"created":1557860856,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UJN5DKL1E","name_normalized":"introductions","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UJAPUTAF4","UJMLQTTEY","UJN5DKL1E","UJQ873NDD","UJXPV09TL","UJXPV0DR8","UJZ3URHQB","UK10KBHSQ","UK2RV9NKB","UK36V5L9Z","UKA9W2MEE","UKAA488JW","UKAAUGJ11","UKABC0750","UKABQG0CA","UKAL08P5Z","UKBC421P0","UKBC422PQ","UKC0HUSLS","UKC2ASYHG","UKFBHE133","UKFBMULKB","UKFD9J71P","UKFE28R6V","UKFGG5UQ1","UKGFRFFCZ","UKHME3FTM","UKM7TAX2Q","UKMB6PP8U","UKMDRV5NG","UKMHX8UKE","UKMNTUH4Y","UKMNU6X9B","UKMRU64DT","UKMTXM5D3","UKMU36EG0","UKMU5VAEL","UKN2G5VFX","UKNLBGKAQ","UKP50A5FF","UKPK1TFHV","UKPLMTE6B","UKPRYFCDU","UKPS4DVUP","UKPU1GQ22","UKPU6UZ38","UKQ08R6UF","UKQ1T39KQ","UKQ2D81L6","UKQ578N3Y","UKQ6SDAK0","UKQBBCJK0","UKRCFJHRC","UKRRBETBJ","UKS39J7EH","UKS5RTFJA","UKSLF7L8L","UKSP3ENB0","UKV05L9UP","UL2DDEE4U","UL2T9CQRW","ULXPQ8C4T","ULXPQA1S7","UM5VC5FR8","UM8NWHX28","UM8NWQPT6","UMBBMJCUW","UMDAYDQJG","UMERU55UP","UML5D5UMT"],"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"Who + are you? What are your pronouns? Say hi!","creator":"UJN5DKL1E","last_set":1557860857},"previous_names":[],"num_members":70},{"id":"CJDBJ3VBM","name":"branches","is_channel":true,"created":1557953416,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UJN5DKL1E","name_normalized":"branches","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UJMLQTTEY","UJN5DKL1E","UJQ873NDD","UJXPV09TL","UKA9W2MEE","UKAA488JW","UKABQG0CA","UKBC422PQ","UKC0HUSLS","UKC2ASYHG","UKFE28R6V","UKFGG5UQ1","UKFPTDNJV","UKGFRFFCZ","UKHME3FTM","UKM7TAX2Q","UKMB6PP8U","UKMDRV5NG","UKMRU64DT","UKMTXM5D3","UKMTZABLG","UKMU5VAEL","UKN2G5VFX","UKPK1TFHV","UKPS4DVUP","UKPU1GQ22","UKPU6UZ38","UKQ08R6UF","UKQ1T39KQ","UKQ6SDAK0","UKQBBCJK0","UKS39J7EH","UKSP3ENB0","UKV05L9UP","UL2DDEE4U","UL2T9CQRW","UM01297MH","UMDAYDQJG"],"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"","creator":"","last_set":0},"previous_names":[],"num_members":38},{"id":"CJN492RKP","name":"general","is_channel":true,"created":1557770905,"is_archived":false,"is_general":true,"unlinked":0,"creator":"UJN5DKL1E","name_normalized":"general","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UJAPUTAF4","UJMLQTTEY","UJN5DKL1E","UJQ873NDD","UJXPV09TL","UJXPV0DR8","UJZ3URHQB","UK10KBHSQ","UK2RV9NKB","UK36V5L9Z","UKA9W2MEE","UKAA488JW","UKAAUGJ11","UKABC0750","UKABQG0CA","UKAL08P5Z","UKBC421P0","UKBC422PQ","UKC0HUSLS","UKC2ASYHG","UKCLVNNPL","UKDV40M6F","UKFBHE133","UKFBMULKB","UKFD9J71P","UKFE28R6V","UKFGG5UQ1","UKFPTDNJV","UKGFRFFCZ","UKHME3FTM","UKM7TAX2Q","UKMB6PP8U","UKMDRV5NG","UKMHX8UKE","UKMNTUH4Y","UKMNU6X9B","UKMRU64DT","UKMTXM5D3","UKMTZABLG","UKMU36EG0","UKMU5VAEL","UKN2G5VFX","UKNLBGKAQ","UKP50A5FF","UKPK1TFHV","UKPLMTE6B","UKPRYFCDU","UKPS4DVUP","UKPU1GQ22","UKPU6UZ38","UKQ08R6UF","UKQ1T39KQ","UKQ2D81L6","UKQ578N3Y","UKQ6SDAK0","UKQBBCJK0","UKRCFJHRC","UKRRBETBJ","UKS39J7EH","UKS5RTFJA","UKSLF7L8L","UKSP3ENB0","UKV05L9UP","UL2DDEE4U","UL2T9CQRW","ULQA393PW","ULUG9L2NA","ULXPQ8C4T","ULXPQ8VBM","ULXPQ9BDH","ULXPQA1S7","ULXPRPF0S","ULXPRQGRG","UM01297MH","UM2RMGFDX","UM2RMGJEM","UM5VC5FR8","UM8NWHP3N","UM8NWHX28","UM8NWJHFE","UM8NWJSJ0","UM8NWKE04","UM8NWQPT6","UM9740S64","UM97ADG93","UM97AE5D3","UMB341WK1","UMBBMGR9U","UMBBMHB3Q","UMBBMHKNJ","UMBBMJCUW","UMDAYDQJG","UMERFSZFC","UMERU55UP","UMETXV6R4","UMFRF8X70","UMHAWJALF","UMHK0C17A","UMHQQCENL","UML5D5UMT","UMNB4E3HS","UMNCB7BUL","UMPMS4N4B","UMSMFS5P0"],"topic":{"value":"Company-wide + announcements and work-based matters","creator":"UJN5DKL1E","last_set":1557770905},"purpose":{"value":"This + channel is for workspace-wide communication and announcements. All members + are in this channel.","creator":"UJN5DKL1E","last_set":1557770905},"previous_names":[],"num_members":104},{"id":"CJPD1JV8V","name":"fur-babes","is_channel":true,"created":1557860608,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UJN5DKL1E","name_normalized":"fur-babes","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UJMLQTTEY","UJN5DKL1E","UJQ873NDD","UJXPV09TL","UK10KBHSQ","UKA9W2MEE","UKAA488JW","UKAAUGJ11","UKABC0750","UKABQG0CA","UKAL08P5Z","UKBC422PQ","UKC0HUSLS","UKC2ASYHG","UKDV40M6F","UKFBMULKB","UKFGG5UQ1","UKFPTDNJV","UKGFRFFCZ","UKHME3FTM","UKM7TAX2Q","UKMB6PP8U","UKMDRV5NG","UKMHX8UKE","UKMNTUH4Y","UKMRU64DT","UKMTXM5D3","UKMTZABLG","UKMU36EG0","UKMU5VAEL"],"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"Pet + pics pls","creator":"UJN5DKL1E","last_set":1557860609},"previous_names":[],"num_members":46},{"id":"CJPJWUFEH","name":"moving-to-seattle","is_channel":true,"created":1557872462,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UJN5DKL1E","name_normalized":"moving-to-seattle","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UKMRU64DT"],"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"This + is a place to share housing options, Seattle advice, ask for any moving help + you may need, or just get recommendations for the best happy hours\/parks\/hikes","creator":"UJN5DKL1E","last_set":1557872462},"previous_names":[],"num_members":19},{"id":"CJPP8RK50","name":"jump-start-live","is_channel":true,"created":1558972568,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UJQ873NDD","name_normalized":"jump-start-live","is_shared":false,"is_org_shared":false,"is_member":false,"is_private":false,"is_mpim":false,"members":[],"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"A + channel to discuss and ask questions about Jump Start Live lessons and assignments.","creator":"UJQ873NDD","last_set":1558972569},"previous_names":[],"num_members":33},{"id":"CJQA8JA1L","name":"pre-ada-homework","is_channel":true,"created":1557770906,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UJN5DKL1E","name_normalized":"pre-ada-homework","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UKMRU64DT"],"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"This + channel is for discussing and getting help with the Pre-Ada Assignments","creator":"UJQ873NDD","last_set":1557787560},"previous_names":[],"num_members":93},{"id":"CJSKPUFB9","name":"leaves","is_channel":true,"created":1557953427,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UJN5DKL1E","name_normalized":"leaves","is_shared":false,"is_org_shared":false,"is_member":false,"is_private":false,"is_mpim":false,"members":[],"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"","creator":"","last_set":0},"previous_names":[],"num_members":35},{"id":"CK3BABZTQ","name":"jump-start","is_channel":true,"created":1558972538,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UJQ873NDD","name_normalized":"jump-start","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UKMRU64DT"],"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"A + channel to discuss or ask questions about Jumpstart material","creator":"UJQ873NDD","last_set":1558972538},"previous_names":[],"num_members":26},{"id":"CKBKHV0M6","name":"company-engagement","is_channel":true,"created":1559844559,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UJMLQTTEY","name_normalized":"company-engagement","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UKMRU64DT"],"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"For + all things regarding company engagement!","creator":"UJMLQTTEY","last_set":1559844560},"previous_names":[],"num_members":56},{"id":"CKQ8TRLTC","name":"csmemes","is_channel":true,"created":1562006819,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UJQ873NDD","name_normalized":"csmemes","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UKMRU64DT"],"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"Fun!","creator":"UJQ873NDD","last_set":1562006819},"previous_names":[],"num_members":40},{"id":"CKVLEDLBD","name":"csfundamentals","is_channel":true,"created":1562554254,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UJQ873NDD","name_normalized":"csfundamentals","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UKMRU64DT"],"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"","creator":"","last_set":0},"previous_names":[],"num_members":56},{"id":"CLLAMCJRK","name":"ada-parents","is_channel":true,"created":1563562545,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UL2DDEE4U","name_normalized":"ada-parents","is_shared":false,"is_org_shared":false,"is_member":false,"is_private":false,"is_mpim":false,"members":[],"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"a + place for adies who are parents to share tips, tricks, and pics of their kiddos + :slightly_smiling_face:","creator":"UL2DDEE4U","last_set":1563562545},"previous_names":["are-we-there-yet"],"num_members":4},{"id":"CLRDSEKK5","name":"project-notifications","is_channel":true,"created":1565035130,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UJXPV09TL","name_normalized":"project-notifications","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UKMRU64DT"],"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"A + channel for instructional staff to specifically give notices on classroom + materials, assignments, exercises, projects, etc.","creator":"UJXPV09TL","last_set":1565035130},"previous_names":[],"num_members":54},{"id":"CLXV6FDJM","name":"tech-events","is_channel":true,"created":1565127969,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UKQ6SDAK0","name_normalized":"tech-events","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UKMRU64DT"],"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"Do + you know about a cool tech event or meetup that current Adie''s would be interested + in? Post about it here!","creator":"UKQ6SDAK0","last_set":1565127969},"previous_names":[],"num_members":51},{"id":"CMB69NPGT","name":"lunch-tips","is_channel":true,"created":1566585378,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UKPU1GQ22","name_normalized":"lunch-tips","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UKMRU64DT"],"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"share + places to get lunch, apps to order food, best meals nearby","creator":"UKPU1GQ22","last_set":1566585378},"previous_names":[],"num_members":37},{"id":"CMLC1RR7F","name":"cs-memes","is_channel":true,"created":1566443015,"is_archived":true,"is_general":false,"unlinked":0,"creator":"ULXPQ8VBM","name_normalized":"cs-memes","is_shared":false,"is_org_shared":false,"is_member":false,"is_private":false,"is_mpim":false,"members":[],"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"Memes + and funnies related to computing","creator":"ULXPQ8VBM","last_set":1566443015},"previous_names":[],"num_members":0},{"id":"CMNJ57NHK","name":"community-milk","is_channel":true,"created":1566583157,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UKMNTUH4Y","name_normalized":"community-milk","is_shared":false,"is_org_shared":false,"is_member":false,"is_private":false,"is_mpim":false,"members":[],"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"status + of milk in fridge","creator":"UKMNTUH4Y","last_set":1566583157},"previous_names":[],"num_members":18},{"id":"CMNSGK2K1","name":"leaves-organized-joy","is_channel":true,"created":1566485894,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UKABC0750","name_normalized":"leaves-organized-joy","is_shared":false,"is_org_shared":false,"is_member":false,"is_private":false,"is_mpim":false,"members":[],"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"","creator":"","last_set":0},"previous_names":[],"num_members":26}],"response_metadata":{"next_cursor":""}}' + http_version: + recorded_at: Tue, 10 Sep 2019 23:42:18 GMT +recorded_with: VCR 5.0.0 diff --git a/test/channel_test.rb b/test/channel_test.rb index 5239bb71..f67f44f4 100644 --- a/test/channel_test.rb +++ b/test/channel_test.rb @@ -1,4 +1,40 @@ require_relative 'test_helper' +require 'pry' describe "Channel class" do + before do + BASE_URL = "https://slack.com/api/channels.list" + TOKEN = ENV["SLACK_TOKEN"] + @query = { + token: TOKEN + } + end + + it "can create an instance of Channel" do + VCR.use_cassette("channel_instantiation") do + + @response = HTTParty.get(BASE_URL, query: @query) + + id = "CJAMGE6R1" + name = "random" + topic = + member_count = "Slackbot" + channel = Channel.new(id, name, topic, member_count) + + expect(user).must_be_instance_of Channel + end + end + + it "can return slackbot details" do + VCR.use_cassette("channel_list_generation") do + + @response = HTTParty.get(BASE_URL, query: @query) + binding.pry + + expect(@response["channels"][0]["id"]).must_equal "CJAMGE6R1" + expect(@response["channels"][0]["name"]).must_equal "random" + + end + end + end \ No newline at end of file diff --git a/test/user_test.rb b/test/user_test.rb index cd935da3..f5df7f7f 100644 --- a/test/user_test.rb +++ b/test/user_test.rb @@ -30,6 +30,7 @@ @response = HTTParty.get(BASE_URL, query: @query) expect(@response["members"][0]["id"]).must_equal "USLACKBOT" + expect(@response["members"][0]["name"]).must_equal "slackbot" expect(@response["members"][0]["real_name"]).must_equal "Slackbot" end From 657a8aaf23a7c53dfc75a320c1f1e3dd1110a8f8 Mon Sep 17 00:00:00 2001 From: Linnea Johnson Date: Tue, 10 Sep 2019 21:59:04 -0700 Subject: [PATCH 05/20] updated channel tests, all tests passing --- test/channel_test.rb | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/test/channel_test.rb b/test/channel_test.rb index f67f44f4..13b7d308 100644 --- a/test/channel_test.rb +++ b/test/channel_test.rb @@ -17,23 +17,24 @@ id = "CJAMGE6R1" name = "random" - topic = - member_count = "Slackbot" + topic = "Non-work banter and water cooler conversation" + member_count = 102 channel = Channel.new(id, name, topic, member_count) - expect(user).must_be_instance_of Channel + expect(channel).must_be_instance_of Channel end end - it "can return slackbot details" do + it "can return channel details" do VCR.use_cassette("channel_list_generation") do @response = HTTParty.get(BASE_URL, query: @query) - binding.pry + #binding.pry expect(@response["channels"][0]["id"]).must_equal "CJAMGE6R1" expect(@response["channels"][0]["name"]).must_equal "random" - + expect(@response["channels"][0]["topic"]["value"]).must_equal "Non-work banter and water cooler conversation" + expect(@response["channels"][0]["num_members"]).must_equal 102 end end From c7cfbf1605a3027ed0805940a7dd1cdc8c885166 Mon Sep 17 00:00:00 2001 From: Diana Han Date: Wed, 11 Sep 2019 13:46:34 -0700 Subject: [PATCH 06/20] added methods to user class and created Workspace class --- lib/recipient.rb | 18 ++++-------------- lib/user.rb | 32 ++++++++++++++++++-------------- lib/workspace.rb | 28 ++++++++++++++++++++++++++++ test/channel_test.rb | 2 +- 4 files changed, 51 insertions(+), 29 deletions(-) create mode 100644 lib/workspace.rb diff --git a/lib/recipient.rb b/lib/recipient.rb index 48c9aa4e..626d7bd1 100644 --- a/lib/recipient.rb +++ b/lib/recipient.rb @@ -10,28 +10,18 @@ def send_message(message) end - def self.get(url, params) + def self.get(url, query) + return HTTParty.get(url, query: query) end # ABSTRACT METHODS def details + raise NotImplementedError, "Implement me in a child class!" end - def self.list - # BASE_URL = - # TOKEN = ENV["SLACK_TOKEN"] - - # query = { - # token: TOKEN - # } - - # response = HTTParty.get(BASE_URL, query: query) - - # response["slackbot"]["members".first]["id"] - - + raise NotImplementedError, "Implement me in a child class!" end end diff --git a/lib/user.rb b/lib/user.rb index 0d8e507c..ea3f6616 100644 --- a/lib/user.rb +++ b/lib/user.rb @@ -5,29 +5,33 @@ Dotenv.load class User < Recipient + # BASE_URL = "https://slack.com/api/users.list" + # TOKEN = ENV["SLACK_TOKEN"] + + # query = { + # token: TOKEN + # } + attr_reader :id, :username, :real_name - - def initialize(id, username, real_name) + def initialize(id, name, real_name) super(id, name) @real_name = real_name end - def details - end - - def self.list - # BASE_URL = "https://slack.com/api/users.list" - # TOKEN = ENV["SLACK_TOKEN"] - - # query = { - # token: TOKEN - # } - - # response = HTTParty.get(BASE_URL, query: query) + + # response = self.get(BASE_URL, query: query) + + # iterate through response["members"] + reponse["members"].map do |member| + self.new(user["id"], member["name"], member["real_name"]) end + + def details + # prints out details + end end diff --git a/lib/workspace.rb b/lib/workspace.rb new file mode 100644 index 00000000..4db2aacc --- /dev/null +++ b/lib/workspace.rb @@ -0,0 +1,28 @@ +require_relative 'user' +require_relative 'channel' +require 'httparty' +require 'dotenv' + +Dotenv.load + +class Workspace + attr_reader + + def initialize + @users = User.list + @channels + @selected + end + + def select_channel + end + + def select_user + end + + def show_details + end + + def send_message + end +end \ No newline at end of file diff --git a/test/channel_test.rb b/test/channel_test.rb index f67f44f4..f0e62c29 100644 --- a/test/channel_test.rb +++ b/test/channel_test.rb @@ -31,7 +31,7 @@ @response = HTTParty.get(BASE_URL, query: @query) binding.pry - expect(@response["channels"][0]["id"]).must_equal "CJAMGE6R1" + expect(@response["channels"][0]["id"]).must_equal "CN9N9ECF8" expect(@response["channels"][0]["name"]).must_equal "random" end From 141febfd26d7284fffa04c94190c24d64cccbecf Mon Sep 17 00:00:00 2001 From: Linnea Johnson Date: Wed, 11 Sep 2019 13:57:25 -0700 Subject: [PATCH 07/20] updated channel tests to match new token id and position --- .DS_Store | Bin 0 -> 6148 bytes lib/user.rb | 1 + test/cassettes/channel_instantiation.yml | 47 ++++++--------------- test/cassettes/channel_list_generation.yml | 47 ++++++--------------- test/cassettes/user_list_generation.yml | 18 ++++---- test/channel_test.rb | 12 +++--- 6 files changed, 42 insertions(+), 83 deletions(-) create mode 100644 .DS_Store diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..f9941852968b2dbd8bbf3f87644966376d1d6a80 GIT binary patch literal 6148 zcmeHK&1%~~5T141MyjExkV6VREcB3z4-R<8ji!g_bHbhyFNHw8R3T4YF(>j6vi9 z@&M_zKkw1@A@U-*cV>4T8r&Wmk}w0a-)R0;`XqL>03iC~bQ2%|01uV0;p6ZZp*ZQ1 zG@OS}m>wm>a11J$j!u@c*>M{gpm*oN5onlzfnIjCrj)cHexv%m6d+{~4h5L820d4r_~M>A-=0A1U4> zBte_b5`@xW=&-hk5foud5pAh(M+{-h(Jx(I=&-hE%R!i#v5%WsxD$#nv!h>{bP%CM z9+?4V;5q{<_A;RTfA`<#|LaA3#SAb5_lg10+=+Jj_(*PVU3xg$YbEL-DhcJ)7OzUs jFk3O^(pJ2VY6Sg~48+i3Z4o^v{3Bp!;DH&qQ3iek4{Kt# literal 0 HcmV?d00001 diff --git a/lib/user.rb b/lib/user.rb index ea3f6616..3eb9870c 100644 --- a/lib/user.rb +++ b/lib/user.rb @@ -26,6 +26,7 @@ def self.list # iterate through response["members"] reponse["members"].map do |member| self.new(user["id"], member["name"], member["real_name"]) + end end diff --git a/test/cassettes/channel_instantiation.yml b/test/cassettes/channel_instantiation.yml index 097a546a..a340abf0 100644 --- a/test/cassettes/channel_instantiation.yml +++ b/test/cassettes/channel_instantiation.yml @@ -21,17 +21,17 @@ http_interactions: Content-Type: - application/json; charset=utf-8 Content-Length: - - '3010' + - '543' Connection: - keep-alive Date: - - Tue, 10 Sep 2019 23:42:18 GMT + - Wed, 11 Sep 2019 20:52:16 GMT Server: - Apache X-Content-Type-Options: - nosniff X-Slack-Req-Id: - - 92bae1c9-df3c-457a-bc8f-cdb4991dd322 + - 4b358914-3134-45c9-a2f0-dd832be28eb2 X-Oauth-Scopes: - identify,channels:read,users:read,chat:write:bot Expires: @@ -57,45 +57,24 @@ http_interactions: Access-Control-Allow-Origin: - "*" X-Via: - - haproxy-www-x36g + - haproxy-www-70cb X-Cache: - Miss from cloudfront Via: - - 1.1 e9f9d4725d6328edca783d6dff756da8.cloudfront.net (CloudFront) + - 1.1 34f8ef0e4c880df0650a814412a26ea6.cloudfront.net (CloudFront) X-Amz-Cf-Pop: - SEA19-C1 X-Amz-Cf-Id: - - 54Rqx8epRlqk-tft5lv-J7RcKgd2CxbLIDYTqiR3gg9JvlFLrMVK1g== + - IH01InwKtA4ZoYN4h-7q1oZxKjOGc9L9tYR0bokwiDas3zQp2hC4Sw== body: encoding: ASCII-8BIT - string: '{"ok":true,"channels":[{"id":"CJAMGE6R1","name":"random","is_channel":true,"created":1557770905,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UJN5DKL1E","name_normalized":"random","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UJAPUTAF4","UJMLQTTEY","UJN5DKL1E","UJQ873NDD","UJXPV09TL","UJXPV0DR8","UJZ3URHQB","UK10KBHSQ","UK2RV9NKB","UK36V5L9Z","UKA9W2MEE","UKAA488JW","UKAAUGJ11","UKABC0750","UKABQG0CA","UKAL08P5Z","UKBC421P0","UKBC422PQ","UKC0HUSLS","UKC2ASYHG","UKCLVNNPL","UKDV40M6F","UKFBHE133","UKFBMULKB","UKFD9J71P","UKFE28R6V","UKFGG5UQ1","UKFPTDNJV","UKGFRFFCZ","UKHME3FTM","UKM7TAX2Q","UKMB6PP8U","UKMDRV5NG","UKMHX8UKE","UKMNTUH4Y","UKMNU6X9B","UKMRU64DT","UKMTXM5D3","UKMTZABLG","UKMU36EG0","UKMU5VAEL","UKN2G5VFX","UKNLBGKAQ","UKP50A5FF","UKPK1TFHV","UKPLMTE6B","UKPRYFCDU","UKPS4DVUP","UKPU1GQ22","UKPU6UZ38","UKQ08R6UF","UKQ1T39KQ","UKQ2D81L6","UKQ578N3Y","UKQ6SDAK0","UKQBBCJK0","UKRCFJHRC","UKRRBETBJ","UKS39J7EH","UKS5RTFJA","UKSLF7L8L","UKSP3ENB0","UKV05L9UP","UL2DDEE4U","UL2T9CQRW","ULQA393PW","ULUG9L2NA","ULXPQ8C4T","ULXPQ8VBM","ULXPQ9BDH","ULXPQA1S7","ULXPRPF0S","ULXPRQGRG","UM01297MH","UM2RMGFDX","UM5VC5FR8","UM8NWHP3N","UM8NWHX28","UM8NWJHFE","UM8NWJSJ0","UM8NWKE04","UM8NWQPT6","UM9740S64","UM97ADG93","UM97AE5D3","UMB341WK1","UMBBMGR9U","UMBBMHB3Q","UMBBMHKNJ","UMBBMJCUW","UMDAYDQJG","UMERFSZFC","UMERU55UP","UMETXV6R4","UMFRF8X70","UMHK0C17A","UMHQQCENL","UML5D5UMT","UMNB4E3HS","UMNCB7BUL","UMPMS4N4B","UMSMFS5P0"],"topic":{"value":"Non-work - banter and water cooler conversation","creator":"UJN5DKL1E","last_set":1557770905},"purpose":{"value":"A - place for non-work-related flimflam, faffing, hodge-podge or jibber-jabber - you''d prefer to keep out of more focused work-related channels.","creator":"UJN5DKL1E","last_set":1557770905},"previous_names":[],"num_members":102},{"id":"CJC0RHGF5","name":"ada-announcements","is_channel":true,"created":1557860433,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UJN5DKL1E","name_normalized":"ada-announcements","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UJAPUTAF4","UJMLQTTEY","UJN5DKL1E","UJQ873NDD","UJXPV09TL","UJXPV0DR8","UJZ3URHQB","UK10KBHSQ","UK2RV9NKB","UK36V5L9Z","UKA9W2MEE","UKAA488JW","UKAAUGJ11","UKABC0750","UKABQG0CA","UKAL08P5Z","UKBC421P0","UKBC422PQ","UKC0HUSLS","UKC2ASYHG","UKDV40M6F","UKFBHE133","UKFBMULKB","UKFD9J71P","UKFE28R6V","UKFGG5UQ1","UKFPTDNJV","UKGFRFFCZ","UKHME3FTM","UKM7TAX2Q","UKMB6PP8U","UKMDRV5NG","UKMHX8UKE","UKMNTUH4Y","UKMNU6X9B","UKMRU64DT","UKMTXM5D3","UKMTZABLG","UKMU36EG0","UKMU5VAEL","UKN2G5VFX","UKNLBGKAQ","UKP50A5FF","UKPK1TFHV","UKPLMTE6B","UKPRYFCDU","UKPS4DVUP","UKPU1GQ22","UKPU6UZ38","UKQ08R6UF","UKQ1T39KQ","UKQ2D81L6","UKQ578N3Y","UKQ6SDAK0","UKQBBCJK0","UKRCFJHRC","UKRRBETBJ","UKS39J7EH","UKS5RTFJA","UKSLF7L8L","UKSP3ENB0","UKV05L9UP","UL2T9CQRW","ULUG9L2NA","ULXPQA1S7","UM5VC5FR8","UM8NWQPT6","UMBBMJCUW","UMDAYDQJG","UML5D5UMT","UMNCB7BUL","UMPMS4N4B"],"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"Important - announcements about scheduling, classes, events, etc.","creator":"UJN5DKL1E","last_set":1557860434},"previous_names":[],"num_members":72},{"id":"CJC1J18UA","name":"classroom-support","is_channel":true,"created":1557860554,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UJN5DKL1E","name_normalized":"classroom-support","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UJN5DKL1E","UJXPV09TL","UKA9W2MEE","UKAA488JW","UKAAUGJ11","UKABC0750","UKABQG0CA","UKAL08P5Z","UKC0HUSLS","UKC2ASYHG","UKDV40M6F","UKFBHE133","UKFBMULKB","UKFD9J71P","UKFGG5UQ1","UKFPTDNJV","UKGFRFFCZ","UKHME3FTM","UKM7TAX2Q","UKMB6PP8U","UKMDRV5NG","UKMHX8UKE","UKMNTUH4Y","UKMNU6X9B","UKMRU64DT","UKMTXM5D3","UKMTZABLG","UKMU36EG0","UKMU5VAEL","UKN2G5VFX","UKNLBGKAQ","UKP50A5FF","UKPK1TFHV","UKPLMTE6B","UKPRYFCDU","UKPS4DVUP","UKPU1GQ22","UKPU6UZ38","UKQ08R6UF","UKQ1T39KQ","UKQ2D81L6","UKQ578N3Y","UKQ6SDAK0","UKQBBCJK0","UKRCFJHRC","UKRRBETBJ","UKS39J7EH","UKSLF7L8L","UKSP3ENB0","UKV05L9UP","UL2DDEE4U","UL2T9CQRW","ULXPQ8C4T","ULXPQ8VBM","ULXPQ9BDH","ULXPQA1S7","ULXPRPF0S","ULXPRQGRG","UM2RMGFDX","UM2RMGJEM","UM5VC5FR8","UM8NWHP3N","UM8NWHX28","UM8NWJHFE","UM8NWJSJ0","UM8NWKE04","UM8NWQPT6","UM9740S64","UM97ADG93","UM97AE5D3","UMB341WK1","UMBBMGR9U","UMBBMHB3Q","UMBBMHKNJ","UMBBMJCUW","UMDAYDQJG","UMERFSZFC","UMERU55UP","UMFRF8X70","UMHAWJALF","UMHK0C17A","UMHQQCENL","UML5D5UMT","UMNCB7BUL"],"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"This - is where you''ll hear from our amazing academic volunteers when they''re here - to help out. Sarah will also sometimes post TA schedule changes and new volunteer - introductions here.","creator":"UJN5DKL1E","last_set":1557860555},"previous_names":[],"num_members":84},{"id":"CJC1PTG58","name":"introductions","is_channel":true,"created":1557860856,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UJN5DKL1E","name_normalized":"introductions","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UJAPUTAF4","UJMLQTTEY","UJN5DKL1E","UJQ873NDD","UJXPV09TL","UJXPV0DR8","UJZ3URHQB","UK10KBHSQ","UK2RV9NKB","UK36V5L9Z","UKA9W2MEE","UKAA488JW","UKAAUGJ11","UKABC0750","UKABQG0CA","UKAL08P5Z","UKBC421P0","UKBC422PQ","UKC0HUSLS","UKC2ASYHG","UKFBHE133","UKFBMULKB","UKFD9J71P","UKFE28R6V","UKFGG5UQ1","UKGFRFFCZ","UKHME3FTM","UKM7TAX2Q","UKMB6PP8U","UKMDRV5NG","UKMHX8UKE","UKMNTUH4Y","UKMNU6X9B","UKMRU64DT","UKMTXM5D3","UKMU36EG0","UKMU5VAEL","UKN2G5VFX","UKNLBGKAQ","UKP50A5FF","UKPK1TFHV","UKPLMTE6B","UKPRYFCDU","UKPS4DVUP","UKPU1GQ22","UKPU6UZ38","UKQ08R6UF","UKQ1T39KQ","UKQ2D81L6","UKQ578N3Y","UKQ6SDAK0","UKQBBCJK0","UKRCFJHRC","UKRRBETBJ","UKS39J7EH","UKS5RTFJA","UKSLF7L8L","UKSP3ENB0","UKV05L9UP","UL2DDEE4U","UL2T9CQRW","ULXPQ8C4T","ULXPQA1S7","UM5VC5FR8","UM8NWHX28","UM8NWQPT6","UMBBMJCUW","UMDAYDQJG","UMERU55UP","UML5D5UMT"],"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"Who - are you? What are your pronouns? Say hi!","creator":"UJN5DKL1E","last_set":1557860857},"previous_names":[],"num_members":70},{"id":"CJDBJ3VBM","name":"branches","is_channel":true,"created":1557953416,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UJN5DKL1E","name_normalized":"branches","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UJMLQTTEY","UJN5DKL1E","UJQ873NDD","UJXPV09TL","UKA9W2MEE","UKAA488JW","UKABQG0CA","UKBC422PQ","UKC0HUSLS","UKC2ASYHG","UKFE28R6V","UKFGG5UQ1","UKFPTDNJV","UKGFRFFCZ","UKHME3FTM","UKM7TAX2Q","UKMB6PP8U","UKMDRV5NG","UKMRU64DT","UKMTXM5D3","UKMTZABLG","UKMU5VAEL","UKN2G5VFX","UKPK1TFHV","UKPS4DVUP","UKPU1GQ22","UKPU6UZ38","UKQ08R6UF","UKQ1T39KQ","UKQ6SDAK0","UKQBBCJK0","UKS39J7EH","UKSP3ENB0","UKV05L9UP","UL2DDEE4U","UL2T9CQRW","UM01297MH","UMDAYDQJG"],"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"","creator":"","last_set":0},"previous_names":[],"num_members":38},{"id":"CJN492RKP","name":"general","is_channel":true,"created":1557770905,"is_archived":false,"is_general":true,"unlinked":0,"creator":"UJN5DKL1E","name_normalized":"general","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UJAPUTAF4","UJMLQTTEY","UJN5DKL1E","UJQ873NDD","UJXPV09TL","UJXPV0DR8","UJZ3URHQB","UK10KBHSQ","UK2RV9NKB","UK36V5L9Z","UKA9W2MEE","UKAA488JW","UKAAUGJ11","UKABC0750","UKABQG0CA","UKAL08P5Z","UKBC421P0","UKBC422PQ","UKC0HUSLS","UKC2ASYHG","UKCLVNNPL","UKDV40M6F","UKFBHE133","UKFBMULKB","UKFD9J71P","UKFE28R6V","UKFGG5UQ1","UKFPTDNJV","UKGFRFFCZ","UKHME3FTM","UKM7TAX2Q","UKMB6PP8U","UKMDRV5NG","UKMHX8UKE","UKMNTUH4Y","UKMNU6X9B","UKMRU64DT","UKMTXM5D3","UKMTZABLG","UKMU36EG0","UKMU5VAEL","UKN2G5VFX","UKNLBGKAQ","UKP50A5FF","UKPK1TFHV","UKPLMTE6B","UKPRYFCDU","UKPS4DVUP","UKPU1GQ22","UKPU6UZ38","UKQ08R6UF","UKQ1T39KQ","UKQ2D81L6","UKQ578N3Y","UKQ6SDAK0","UKQBBCJK0","UKRCFJHRC","UKRRBETBJ","UKS39J7EH","UKS5RTFJA","UKSLF7L8L","UKSP3ENB0","UKV05L9UP","UL2DDEE4U","UL2T9CQRW","ULQA393PW","ULUG9L2NA","ULXPQ8C4T","ULXPQ8VBM","ULXPQ9BDH","ULXPQA1S7","ULXPRPF0S","ULXPRQGRG","UM01297MH","UM2RMGFDX","UM2RMGJEM","UM5VC5FR8","UM8NWHP3N","UM8NWHX28","UM8NWJHFE","UM8NWJSJ0","UM8NWKE04","UM8NWQPT6","UM9740S64","UM97ADG93","UM97AE5D3","UMB341WK1","UMBBMGR9U","UMBBMHB3Q","UMBBMHKNJ","UMBBMJCUW","UMDAYDQJG","UMERFSZFC","UMERU55UP","UMETXV6R4","UMFRF8X70","UMHAWJALF","UMHK0C17A","UMHQQCENL","UML5D5UMT","UMNB4E3HS","UMNCB7BUL","UMPMS4N4B","UMSMFS5P0"],"topic":{"value":"Company-wide - announcements and work-based matters","creator":"UJN5DKL1E","last_set":1557770905},"purpose":{"value":"This + string: '{"ok":true,"channels":[{"id":"CN1416ABB","name":"general","is_channel":true,"created":1568143132,"is_archived":false,"is_general":true,"unlinked":0,"creator":"UN7G5G4TF","name_normalized":"general","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UN7G5G4TF","UN9N9T9LN"],"topic":{"value":"Company-wide + announcements and work-based matters","creator":"UN7G5G4TF","last_set":1568143132},"purpose":{"value":"This channel is for workspace-wide communication and announcements. All members - are in this channel.","creator":"UJN5DKL1E","last_set":1557770905},"previous_names":[],"num_members":104},{"id":"CJPD1JV8V","name":"fur-babes","is_channel":true,"created":1557860608,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UJN5DKL1E","name_normalized":"fur-babes","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UJMLQTTEY","UJN5DKL1E","UJQ873NDD","UJXPV09TL","UK10KBHSQ","UKA9W2MEE","UKAA488JW","UKAAUGJ11","UKABC0750","UKABQG0CA","UKAL08P5Z","UKBC422PQ","UKC0HUSLS","UKC2ASYHG","UKDV40M6F","UKFBMULKB","UKFGG5UQ1","UKFPTDNJV","UKGFRFFCZ","UKHME3FTM","UKM7TAX2Q","UKMB6PP8U","UKMDRV5NG","UKMHX8UKE","UKMNTUH4Y","UKMRU64DT","UKMTXM5D3","UKMTZABLG","UKMU36EG0","UKMU5VAEL"],"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"Pet - pics pls","creator":"UJN5DKL1E","last_set":1557860609},"previous_names":[],"num_members":46},{"id":"CJPJWUFEH","name":"moving-to-seattle","is_channel":true,"created":1557872462,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UJN5DKL1E","name_normalized":"moving-to-seattle","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UKMRU64DT"],"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"This - is a place to share housing options, Seattle advice, ask for any moving help - you may need, or just get recommendations for the best happy hours\/parks\/hikes","creator":"UJN5DKL1E","last_set":1557872462},"previous_names":[],"num_members":19},{"id":"CJPP8RK50","name":"jump-start-live","is_channel":true,"created":1558972568,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UJQ873NDD","name_normalized":"jump-start-live","is_shared":false,"is_org_shared":false,"is_member":false,"is_private":false,"is_mpim":false,"members":[],"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"A - channel to discuss and ask questions about Jump Start Live lessons and assignments.","creator":"UJQ873NDD","last_set":1558972569},"previous_names":[],"num_members":33},{"id":"CJQA8JA1L","name":"pre-ada-homework","is_channel":true,"created":1557770906,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UJN5DKL1E","name_normalized":"pre-ada-homework","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UKMRU64DT"],"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"This - channel is for discussing and getting help with the Pre-Ada Assignments","creator":"UJQ873NDD","last_set":1557787560},"previous_names":[],"num_members":93},{"id":"CJSKPUFB9","name":"leaves","is_channel":true,"created":1557953427,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UJN5DKL1E","name_normalized":"leaves","is_shared":false,"is_org_shared":false,"is_member":false,"is_private":false,"is_mpim":false,"members":[],"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"","creator":"","last_set":0},"previous_names":[],"num_members":35},{"id":"CK3BABZTQ","name":"jump-start","is_channel":true,"created":1558972538,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UJQ873NDD","name_normalized":"jump-start","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UKMRU64DT"],"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"A - channel to discuss or ask questions about Jumpstart material","creator":"UJQ873NDD","last_set":1558972538},"previous_names":[],"num_members":26},{"id":"CKBKHV0M6","name":"company-engagement","is_channel":true,"created":1559844559,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UJMLQTTEY","name_normalized":"company-engagement","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UKMRU64DT"],"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"For - all things regarding company engagement!","creator":"UJMLQTTEY","last_set":1559844560},"previous_names":[],"num_members":56},{"id":"CKQ8TRLTC","name":"csmemes","is_channel":true,"created":1562006819,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UJQ873NDD","name_normalized":"csmemes","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UKMRU64DT"],"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"Fun!","creator":"UJQ873NDD","last_set":1562006819},"previous_names":[],"num_members":40},{"id":"CKVLEDLBD","name":"csfundamentals","is_channel":true,"created":1562554254,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UJQ873NDD","name_normalized":"csfundamentals","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UKMRU64DT"],"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"","creator":"","last_set":0},"previous_names":[],"num_members":56},{"id":"CLLAMCJRK","name":"ada-parents","is_channel":true,"created":1563562545,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UL2DDEE4U","name_normalized":"ada-parents","is_shared":false,"is_org_shared":false,"is_member":false,"is_private":false,"is_mpim":false,"members":[],"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"a - place for adies who are parents to share tips, tricks, and pics of their kiddos - :slightly_smiling_face:","creator":"UL2DDEE4U","last_set":1563562545},"previous_names":["are-we-there-yet"],"num_members":4},{"id":"CLRDSEKK5","name":"project-notifications","is_channel":true,"created":1565035130,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UJXPV09TL","name_normalized":"project-notifications","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UKMRU64DT"],"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"A - channel for instructional staff to specifically give notices on classroom - materials, assignments, exercises, projects, etc.","creator":"UJXPV09TL","last_set":1565035130},"previous_names":[],"num_members":54},{"id":"CLXV6FDJM","name":"tech-events","is_channel":true,"created":1565127969,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UKQ6SDAK0","name_normalized":"tech-events","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UKMRU64DT"],"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"Do - you know about a cool tech event or meetup that current Adie''s would be interested - in? Post about it here!","creator":"UKQ6SDAK0","last_set":1565127969},"previous_names":[],"num_members":51},{"id":"CMB69NPGT","name":"lunch-tips","is_channel":true,"created":1566585378,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UKPU1GQ22","name_normalized":"lunch-tips","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UKMRU64DT"],"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"share - places to get lunch, apps to order food, best meals nearby","creator":"UKPU1GQ22","last_set":1566585378},"previous_names":[],"num_members":37},{"id":"CMLC1RR7F","name":"cs-memes","is_channel":true,"created":1566443015,"is_archived":true,"is_general":false,"unlinked":0,"creator":"ULXPQ8VBM","name_normalized":"cs-memes","is_shared":false,"is_org_shared":false,"is_member":false,"is_private":false,"is_mpim":false,"members":[],"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"Memes - and funnies related to computing","creator":"ULXPQ8VBM","last_set":1566443015},"previous_names":[],"num_members":0},{"id":"CMNJ57NHK","name":"community-milk","is_channel":true,"created":1566583157,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UKMNTUH4Y","name_normalized":"community-milk","is_shared":false,"is_org_shared":false,"is_member":false,"is_private":false,"is_mpim":false,"members":[],"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"status - of milk in fridge","creator":"UKMNTUH4Y","last_set":1566583157},"previous_names":[],"num_members":18},{"id":"CMNSGK2K1","name":"leaves-organized-joy","is_channel":true,"created":1566485894,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UKABC0750","name_normalized":"leaves-organized-joy","is_shared":false,"is_org_shared":false,"is_member":false,"is_private":false,"is_mpim":false,"members":[],"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"","creator":"","last_set":0},"previous_names":[],"num_members":26}],"response_metadata":{"next_cursor":""}}' + are in this channel.","creator":"UN7G5G4TF","last_set":1568143132},"previous_names":[],"num_members":2},{"id":"CN7G5GYGM","name":"slack-api","is_channel":true,"created":1568143132,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UN7G5G4TF","name_normalized":"slack-api","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UN7G5G4TF","UN9N9T9LN"],"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"","creator":"","last_set":0},"previous_names":[],"num_members":2},{"id":"CN9N9ECF8","name":"random","is_channel":true,"created":1568143132,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UN7G5G4TF","name_normalized":"random","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UN7G5G4TF","UN9N9T9LN"],"topic":{"value":"Non-work + banter and water cooler conversation","creator":"UN7G5G4TF","last_set":1568143132},"purpose":{"value":"A + place for non-work-related flimflam, faffing, hodge-podge or jibber-jabber + you''d prefer to keep out of more focused work-related channels.","creator":"UN7G5G4TF","last_set":1568143132},"previous_names":[],"num_members":2}],"response_metadata":{"next_cursor":""}}' http_version: - recorded_at: Tue, 10 Sep 2019 23:42:18 GMT + recorded_at: Wed, 11 Sep 2019 20:52:16 GMT recorded_with: VCR 5.0.0 diff --git a/test/cassettes/channel_list_generation.yml b/test/cassettes/channel_list_generation.yml index c0431099..5ed9ad63 100644 --- a/test/cassettes/channel_list_generation.yml +++ b/test/cassettes/channel_list_generation.yml @@ -21,17 +21,17 @@ http_interactions: Content-Type: - application/json; charset=utf-8 Content-Length: - - '3010' + - '543' Connection: - keep-alive Date: - - Tue, 10 Sep 2019 23:42:18 GMT + - Wed, 11 Sep 2019 20:52:16 GMT Server: - Apache X-Content-Type-Options: - nosniff X-Slack-Req-Id: - - '0928d1e5-6519-480e-b6d0-46fea3d53922' + - 8f6ca9e1-9cd0-4fcb-a089-be56f2647397 X-Oauth-Scopes: - identify,channels:read,users:read,chat:write:bot Expires: @@ -57,45 +57,24 @@ http_interactions: Access-Control-Allow-Origin: - "*" X-Via: - - haproxy-www-tr9b + - haproxy-www-p70f X-Cache: - Miss from cloudfront Via: - - 1.1 aa623e134417515bd2496cb01d5e5626.cloudfront.net (CloudFront) + - 1.1 f126db770f21f288439f44d357978a27.cloudfront.net (CloudFront) X-Amz-Cf-Pop: - SEA19-C1 X-Amz-Cf-Id: - - gwz0gk6jyWc-B363MFtIl9oy3WVkvdrlw9MQ3iJql7dN6nYS6Lp_lg== + - SyEQ5dT_oAo9YJYKIvHhi8lCNWHCH9GKHpmo-qd2FIwtKDF3J3jTDA== body: encoding: ASCII-8BIT - string: '{"ok":true,"channels":[{"id":"CJAMGE6R1","name":"random","is_channel":true,"created":1557770905,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UJN5DKL1E","name_normalized":"random","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UJAPUTAF4","UJMLQTTEY","UJN5DKL1E","UJQ873NDD","UJXPV09TL","UJXPV0DR8","UJZ3URHQB","UK10KBHSQ","UK2RV9NKB","UK36V5L9Z","UKA9W2MEE","UKAA488JW","UKAAUGJ11","UKABC0750","UKABQG0CA","UKAL08P5Z","UKBC421P0","UKBC422PQ","UKC0HUSLS","UKC2ASYHG","UKCLVNNPL","UKDV40M6F","UKFBHE133","UKFBMULKB","UKFD9J71P","UKFE28R6V","UKFGG5UQ1","UKFPTDNJV","UKGFRFFCZ","UKHME3FTM","UKM7TAX2Q","UKMB6PP8U","UKMDRV5NG","UKMHX8UKE","UKMNTUH4Y","UKMNU6X9B","UKMRU64DT","UKMTXM5D3","UKMTZABLG","UKMU36EG0","UKMU5VAEL","UKN2G5VFX","UKNLBGKAQ","UKP50A5FF","UKPK1TFHV","UKPLMTE6B","UKPRYFCDU","UKPS4DVUP","UKPU1GQ22","UKPU6UZ38","UKQ08R6UF","UKQ1T39KQ","UKQ2D81L6","UKQ578N3Y","UKQ6SDAK0","UKQBBCJK0","UKRCFJHRC","UKRRBETBJ","UKS39J7EH","UKS5RTFJA","UKSLF7L8L","UKSP3ENB0","UKV05L9UP","UL2DDEE4U","UL2T9CQRW","ULQA393PW","ULUG9L2NA","ULXPQ8C4T","ULXPQ8VBM","ULXPQ9BDH","ULXPQA1S7","ULXPRPF0S","ULXPRQGRG","UM01297MH","UM2RMGFDX","UM5VC5FR8","UM8NWHP3N","UM8NWHX28","UM8NWJHFE","UM8NWJSJ0","UM8NWKE04","UM8NWQPT6","UM9740S64","UM97ADG93","UM97AE5D3","UMB341WK1","UMBBMGR9U","UMBBMHB3Q","UMBBMHKNJ","UMBBMJCUW","UMDAYDQJG","UMERFSZFC","UMERU55UP","UMETXV6R4","UMFRF8X70","UMHK0C17A","UMHQQCENL","UML5D5UMT","UMNB4E3HS","UMNCB7BUL","UMPMS4N4B","UMSMFS5P0"],"topic":{"value":"Non-work - banter and water cooler conversation","creator":"UJN5DKL1E","last_set":1557770905},"purpose":{"value":"A - place for non-work-related flimflam, faffing, hodge-podge or jibber-jabber - you''d prefer to keep out of more focused work-related channels.","creator":"UJN5DKL1E","last_set":1557770905},"previous_names":[],"num_members":102},{"id":"CJC0RHGF5","name":"ada-announcements","is_channel":true,"created":1557860433,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UJN5DKL1E","name_normalized":"ada-announcements","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UJAPUTAF4","UJMLQTTEY","UJN5DKL1E","UJQ873NDD","UJXPV09TL","UJXPV0DR8","UJZ3URHQB","UK10KBHSQ","UK2RV9NKB","UK36V5L9Z","UKA9W2MEE","UKAA488JW","UKAAUGJ11","UKABC0750","UKABQG0CA","UKAL08P5Z","UKBC421P0","UKBC422PQ","UKC0HUSLS","UKC2ASYHG","UKDV40M6F","UKFBHE133","UKFBMULKB","UKFD9J71P","UKFE28R6V","UKFGG5UQ1","UKFPTDNJV","UKGFRFFCZ","UKHME3FTM","UKM7TAX2Q","UKMB6PP8U","UKMDRV5NG","UKMHX8UKE","UKMNTUH4Y","UKMNU6X9B","UKMRU64DT","UKMTXM5D3","UKMTZABLG","UKMU36EG0","UKMU5VAEL","UKN2G5VFX","UKNLBGKAQ","UKP50A5FF","UKPK1TFHV","UKPLMTE6B","UKPRYFCDU","UKPS4DVUP","UKPU1GQ22","UKPU6UZ38","UKQ08R6UF","UKQ1T39KQ","UKQ2D81L6","UKQ578N3Y","UKQ6SDAK0","UKQBBCJK0","UKRCFJHRC","UKRRBETBJ","UKS39J7EH","UKS5RTFJA","UKSLF7L8L","UKSP3ENB0","UKV05L9UP","UL2T9CQRW","ULUG9L2NA","ULXPQA1S7","UM5VC5FR8","UM8NWQPT6","UMBBMJCUW","UMDAYDQJG","UML5D5UMT","UMNCB7BUL","UMPMS4N4B"],"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"Important - announcements about scheduling, classes, events, etc.","creator":"UJN5DKL1E","last_set":1557860434},"previous_names":[],"num_members":72},{"id":"CJC1J18UA","name":"classroom-support","is_channel":true,"created":1557860554,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UJN5DKL1E","name_normalized":"classroom-support","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UJN5DKL1E","UJXPV09TL","UKA9W2MEE","UKAA488JW","UKAAUGJ11","UKABC0750","UKABQG0CA","UKAL08P5Z","UKC0HUSLS","UKC2ASYHG","UKDV40M6F","UKFBHE133","UKFBMULKB","UKFD9J71P","UKFGG5UQ1","UKFPTDNJV","UKGFRFFCZ","UKHME3FTM","UKM7TAX2Q","UKMB6PP8U","UKMDRV5NG","UKMHX8UKE","UKMNTUH4Y","UKMNU6X9B","UKMRU64DT","UKMTXM5D3","UKMTZABLG","UKMU36EG0","UKMU5VAEL","UKN2G5VFX","UKNLBGKAQ","UKP50A5FF","UKPK1TFHV","UKPLMTE6B","UKPRYFCDU","UKPS4DVUP","UKPU1GQ22","UKPU6UZ38","UKQ08R6UF","UKQ1T39KQ","UKQ2D81L6","UKQ578N3Y","UKQ6SDAK0","UKQBBCJK0","UKRCFJHRC","UKRRBETBJ","UKS39J7EH","UKSLF7L8L","UKSP3ENB0","UKV05L9UP","UL2DDEE4U","UL2T9CQRW","ULXPQ8C4T","ULXPQ8VBM","ULXPQ9BDH","ULXPQA1S7","ULXPRPF0S","ULXPRQGRG","UM2RMGFDX","UM2RMGJEM","UM5VC5FR8","UM8NWHP3N","UM8NWHX28","UM8NWJHFE","UM8NWJSJ0","UM8NWKE04","UM8NWQPT6","UM9740S64","UM97ADG93","UM97AE5D3","UMB341WK1","UMBBMGR9U","UMBBMHB3Q","UMBBMHKNJ","UMBBMJCUW","UMDAYDQJG","UMERFSZFC","UMERU55UP","UMFRF8X70","UMHAWJALF","UMHK0C17A","UMHQQCENL","UML5D5UMT","UMNCB7BUL"],"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"This - is where you''ll hear from our amazing academic volunteers when they''re here - to help out. Sarah will also sometimes post TA schedule changes and new volunteer - introductions here.","creator":"UJN5DKL1E","last_set":1557860555},"previous_names":[],"num_members":84},{"id":"CJC1PTG58","name":"introductions","is_channel":true,"created":1557860856,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UJN5DKL1E","name_normalized":"introductions","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UJAPUTAF4","UJMLQTTEY","UJN5DKL1E","UJQ873NDD","UJXPV09TL","UJXPV0DR8","UJZ3URHQB","UK10KBHSQ","UK2RV9NKB","UK36V5L9Z","UKA9W2MEE","UKAA488JW","UKAAUGJ11","UKABC0750","UKABQG0CA","UKAL08P5Z","UKBC421P0","UKBC422PQ","UKC0HUSLS","UKC2ASYHG","UKFBHE133","UKFBMULKB","UKFD9J71P","UKFE28R6V","UKFGG5UQ1","UKGFRFFCZ","UKHME3FTM","UKM7TAX2Q","UKMB6PP8U","UKMDRV5NG","UKMHX8UKE","UKMNTUH4Y","UKMNU6X9B","UKMRU64DT","UKMTXM5D3","UKMU36EG0","UKMU5VAEL","UKN2G5VFX","UKNLBGKAQ","UKP50A5FF","UKPK1TFHV","UKPLMTE6B","UKPRYFCDU","UKPS4DVUP","UKPU1GQ22","UKPU6UZ38","UKQ08R6UF","UKQ1T39KQ","UKQ2D81L6","UKQ578N3Y","UKQ6SDAK0","UKQBBCJK0","UKRCFJHRC","UKRRBETBJ","UKS39J7EH","UKS5RTFJA","UKSLF7L8L","UKSP3ENB0","UKV05L9UP","UL2DDEE4U","UL2T9CQRW","ULXPQ8C4T","ULXPQA1S7","UM5VC5FR8","UM8NWHX28","UM8NWQPT6","UMBBMJCUW","UMDAYDQJG","UMERU55UP","UML5D5UMT"],"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"Who - are you? What are your pronouns? Say hi!","creator":"UJN5DKL1E","last_set":1557860857},"previous_names":[],"num_members":70},{"id":"CJDBJ3VBM","name":"branches","is_channel":true,"created":1557953416,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UJN5DKL1E","name_normalized":"branches","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UJMLQTTEY","UJN5DKL1E","UJQ873NDD","UJXPV09TL","UKA9W2MEE","UKAA488JW","UKABQG0CA","UKBC422PQ","UKC0HUSLS","UKC2ASYHG","UKFE28R6V","UKFGG5UQ1","UKFPTDNJV","UKGFRFFCZ","UKHME3FTM","UKM7TAX2Q","UKMB6PP8U","UKMDRV5NG","UKMRU64DT","UKMTXM5D3","UKMTZABLG","UKMU5VAEL","UKN2G5VFX","UKPK1TFHV","UKPS4DVUP","UKPU1GQ22","UKPU6UZ38","UKQ08R6UF","UKQ1T39KQ","UKQ6SDAK0","UKQBBCJK0","UKS39J7EH","UKSP3ENB0","UKV05L9UP","UL2DDEE4U","UL2T9CQRW","UM01297MH","UMDAYDQJG"],"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"","creator":"","last_set":0},"previous_names":[],"num_members":38},{"id":"CJN492RKP","name":"general","is_channel":true,"created":1557770905,"is_archived":false,"is_general":true,"unlinked":0,"creator":"UJN5DKL1E","name_normalized":"general","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UJAPUTAF4","UJMLQTTEY","UJN5DKL1E","UJQ873NDD","UJXPV09TL","UJXPV0DR8","UJZ3URHQB","UK10KBHSQ","UK2RV9NKB","UK36V5L9Z","UKA9W2MEE","UKAA488JW","UKAAUGJ11","UKABC0750","UKABQG0CA","UKAL08P5Z","UKBC421P0","UKBC422PQ","UKC0HUSLS","UKC2ASYHG","UKCLVNNPL","UKDV40M6F","UKFBHE133","UKFBMULKB","UKFD9J71P","UKFE28R6V","UKFGG5UQ1","UKFPTDNJV","UKGFRFFCZ","UKHME3FTM","UKM7TAX2Q","UKMB6PP8U","UKMDRV5NG","UKMHX8UKE","UKMNTUH4Y","UKMNU6X9B","UKMRU64DT","UKMTXM5D3","UKMTZABLG","UKMU36EG0","UKMU5VAEL","UKN2G5VFX","UKNLBGKAQ","UKP50A5FF","UKPK1TFHV","UKPLMTE6B","UKPRYFCDU","UKPS4DVUP","UKPU1GQ22","UKPU6UZ38","UKQ08R6UF","UKQ1T39KQ","UKQ2D81L6","UKQ578N3Y","UKQ6SDAK0","UKQBBCJK0","UKRCFJHRC","UKRRBETBJ","UKS39J7EH","UKS5RTFJA","UKSLF7L8L","UKSP3ENB0","UKV05L9UP","UL2DDEE4U","UL2T9CQRW","ULQA393PW","ULUG9L2NA","ULXPQ8C4T","ULXPQ8VBM","ULXPQ9BDH","ULXPQA1S7","ULXPRPF0S","ULXPRQGRG","UM01297MH","UM2RMGFDX","UM2RMGJEM","UM5VC5FR8","UM8NWHP3N","UM8NWHX28","UM8NWJHFE","UM8NWJSJ0","UM8NWKE04","UM8NWQPT6","UM9740S64","UM97ADG93","UM97AE5D3","UMB341WK1","UMBBMGR9U","UMBBMHB3Q","UMBBMHKNJ","UMBBMJCUW","UMDAYDQJG","UMERFSZFC","UMERU55UP","UMETXV6R4","UMFRF8X70","UMHAWJALF","UMHK0C17A","UMHQQCENL","UML5D5UMT","UMNB4E3HS","UMNCB7BUL","UMPMS4N4B","UMSMFS5P0"],"topic":{"value":"Company-wide - announcements and work-based matters","creator":"UJN5DKL1E","last_set":1557770905},"purpose":{"value":"This + string: '{"ok":true,"channels":[{"id":"CN1416ABB","name":"general","is_channel":true,"created":1568143132,"is_archived":false,"is_general":true,"unlinked":0,"creator":"UN7G5G4TF","name_normalized":"general","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UN7G5G4TF","UN9N9T9LN"],"topic":{"value":"Company-wide + announcements and work-based matters","creator":"UN7G5G4TF","last_set":1568143132},"purpose":{"value":"This channel is for workspace-wide communication and announcements. All members - are in this channel.","creator":"UJN5DKL1E","last_set":1557770905},"previous_names":[],"num_members":104},{"id":"CJPD1JV8V","name":"fur-babes","is_channel":true,"created":1557860608,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UJN5DKL1E","name_normalized":"fur-babes","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UJMLQTTEY","UJN5DKL1E","UJQ873NDD","UJXPV09TL","UK10KBHSQ","UKA9W2MEE","UKAA488JW","UKAAUGJ11","UKABC0750","UKABQG0CA","UKAL08P5Z","UKBC422PQ","UKC0HUSLS","UKC2ASYHG","UKDV40M6F","UKFBMULKB","UKFGG5UQ1","UKFPTDNJV","UKGFRFFCZ","UKHME3FTM","UKM7TAX2Q","UKMB6PP8U","UKMDRV5NG","UKMHX8UKE","UKMNTUH4Y","UKMRU64DT","UKMTXM5D3","UKMTZABLG","UKMU36EG0","UKMU5VAEL"],"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"Pet - pics pls","creator":"UJN5DKL1E","last_set":1557860609},"previous_names":[],"num_members":46},{"id":"CJPJWUFEH","name":"moving-to-seattle","is_channel":true,"created":1557872462,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UJN5DKL1E","name_normalized":"moving-to-seattle","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UKMRU64DT"],"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"This - is a place to share housing options, Seattle advice, ask for any moving help - you may need, or just get recommendations for the best happy hours\/parks\/hikes","creator":"UJN5DKL1E","last_set":1557872462},"previous_names":[],"num_members":19},{"id":"CJPP8RK50","name":"jump-start-live","is_channel":true,"created":1558972568,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UJQ873NDD","name_normalized":"jump-start-live","is_shared":false,"is_org_shared":false,"is_member":false,"is_private":false,"is_mpim":false,"members":[],"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"A - channel to discuss and ask questions about Jump Start Live lessons and assignments.","creator":"UJQ873NDD","last_set":1558972569},"previous_names":[],"num_members":33},{"id":"CJQA8JA1L","name":"pre-ada-homework","is_channel":true,"created":1557770906,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UJN5DKL1E","name_normalized":"pre-ada-homework","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UKMRU64DT"],"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"This - channel is for discussing and getting help with the Pre-Ada Assignments","creator":"UJQ873NDD","last_set":1557787560},"previous_names":[],"num_members":93},{"id":"CJSKPUFB9","name":"leaves","is_channel":true,"created":1557953427,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UJN5DKL1E","name_normalized":"leaves","is_shared":false,"is_org_shared":false,"is_member":false,"is_private":false,"is_mpim":false,"members":[],"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"","creator":"","last_set":0},"previous_names":[],"num_members":35},{"id":"CK3BABZTQ","name":"jump-start","is_channel":true,"created":1558972538,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UJQ873NDD","name_normalized":"jump-start","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UKMRU64DT"],"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"A - channel to discuss or ask questions about Jumpstart material","creator":"UJQ873NDD","last_set":1558972538},"previous_names":[],"num_members":26},{"id":"CKBKHV0M6","name":"company-engagement","is_channel":true,"created":1559844559,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UJMLQTTEY","name_normalized":"company-engagement","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UKMRU64DT"],"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"For - all things regarding company engagement!","creator":"UJMLQTTEY","last_set":1559844560},"previous_names":[],"num_members":56},{"id":"CKQ8TRLTC","name":"csmemes","is_channel":true,"created":1562006819,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UJQ873NDD","name_normalized":"csmemes","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UKMRU64DT"],"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"Fun!","creator":"UJQ873NDD","last_set":1562006819},"previous_names":[],"num_members":40},{"id":"CKVLEDLBD","name":"csfundamentals","is_channel":true,"created":1562554254,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UJQ873NDD","name_normalized":"csfundamentals","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UKMRU64DT"],"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"","creator":"","last_set":0},"previous_names":[],"num_members":56},{"id":"CLLAMCJRK","name":"ada-parents","is_channel":true,"created":1563562545,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UL2DDEE4U","name_normalized":"ada-parents","is_shared":false,"is_org_shared":false,"is_member":false,"is_private":false,"is_mpim":false,"members":[],"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"a - place for adies who are parents to share tips, tricks, and pics of their kiddos - :slightly_smiling_face:","creator":"UL2DDEE4U","last_set":1563562545},"previous_names":["are-we-there-yet"],"num_members":4},{"id":"CLRDSEKK5","name":"project-notifications","is_channel":true,"created":1565035130,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UJXPV09TL","name_normalized":"project-notifications","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UKMRU64DT"],"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"A - channel for instructional staff to specifically give notices on classroom - materials, assignments, exercises, projects, etc.","creator":"UJXPV09TL","last_set":1565035130},"previous_names":[],"num_members":54},{"id":"CLXV6FDJM","name":"tech-events","is_channel":true,"created":1565127969,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UKQ6SDAK0","name_normalized":"tech-events","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UKMRU64DT"],"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"Do - you know about a cool tech event or meetup that current Adie''s would be interested - in? Post about it here!","creator":"UKQ6SDAK0","last_set":1565127969},"previous_names":[],"num_members":51},{"id":"CMB69NPGT","name":"lunch-tips","is_channel":true,"created":1566585378,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UKPU1GQ22","name_normalized":"lunch-tips","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UKMRU64DT"],"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"share - places to get lunch, apps to order food, best meals nearby","creator":"UKPU1GQ22","last_set":1566585378},"previous_names":[],"num_members":37},{"id":"CMLC1RR7F","name":"cs-memes","is_channel":true,"created":1566443015,"is_archived":true,"is_general":false,"unlinked":0,"creator":"ULXPQ8VBM","name_normalized":"cs-memes","is_shared":false,"is_org_shared":false,"is_member":false,"is_private":false,"is_mpim":false,"members":[],"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"Memes - and funnies related to computing","creator":"ULXPQ8VBM","last_set":1566443015},"previous_names":[],"num_members":0},{"id":"CMNJ57NHK","name":"community-milk","is_channel":true,"created":1566583157,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UKMNTUH4Y","name_normalized":"community-milk","is_shared":false,"is_org_shared":false,"is_member":false,"is_private":false,"is_mpim":false,"members":[],"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"status - of milk in fridge","creator":"UKMNTUH4Y","last_set":1566583157},"previous_names":[],"num_members":18},{"id":"CMNSGK2K1","name":"leaves-organized-joy","is_channel":true,"created":1566485894,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UKABC0750","name_normalized":"leaves-organized-joy","is_shared":false,"is_org_shared":false,"is_member":false,"is_private":false,"is_mpim":false,"members":[],"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"","creator":"","last_set":0},"previous_names":[],"num_members":26}],"response_metadata":{"next_cursor":""}}' + are in this channel.","creator":"UN7G5G4TF","last_set":1568143132},"previous_names":[],"num_members":2},{"id":"CN7G5GYGM","name":"slack-api","is_channel":true,"created":1568143132,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UN7G5G4TF","name_normalized":"slack-api","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UN7G5G4TF","UN9N9T9LN"],"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"","creator":"","last_set":0},"previous_names":[],"num_members":2},{"id":"CN9N9ECF8","name":"random","is_channel":true,"created":1568143132,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UN7G5G4TF","name_normalized":"random","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UN7G5G4TF","UN9N9T9LN"],"topic":{"value":"Non-work + banter and water cooler conversation","creator":"UN7G5G4TF","last_set":1568143132},"purpose":{"value":"A + place for non-work-related flimflam, faffing, hodge-podge or jibber-jabber + you''d prefer to keep out of more focused work-related channels.","creator":"UN7G5G4TF","last_set":1568143132},"previous_names":[],"num_members":2}],"response_metadata":{"next_cursor":""}}' http_version: - recorded_at: Tue, 10 Sep 2019 23:42:18 GMT + recorded_at: Wed, 11 Sep 2019 20:52:16 GMT recorded_with: VCR 5.0.0 diff --git a/test/cassettes/user_list_generation.yml b/test/cassettes/user_list_generation.yml index cb0a11ea..9ca65b16 100644 --- a/test/cassettes/user_list_generation.yml +++ b/test/cassettes/user_list_generation.yml @@ -21,17 +21,17 @@ http_interactions: Content-Type: - application/json; charset=utf-8 Content-Length: - - '935' + - '934' Connection: - keep-alive Date: - - Tue, 10 Sep 2019 23:26:29 GMT + - Wed, 11 Sep 2019 20:52:16 GMT Server: - Apache X-Content-Type-Options: - nosniff X-Slack-Req-Id: - - dd6c3eab-07cb-45d9-8745-781bf6bcf07a + - 7db9875b-1110-41d8-bfaf-e21d163a10b0 X-Oauth-Scopes: - identify,channels:read,users:read,chat:write:bot Expires: @@ -57,24 +57,24 @@ http_interactions: Access-Control-Allow-Origin: - "*" X-Via: - - haproxy-www-n83k + - haproxy-www-nvih X-Cache: - Miss from cloudfront Via: - - 1.1 68eedbdfabd017beabf28d04341fec21.cloudfront.net (CloudFront) + - 1.1 599f04a365a179d553682d476509c389.cloudfront.net (CloudFront) X-Amz-Cf-Pop: - SEA19-C1 X-Amz-Cf-Id: - - "-1N-bO96XNktkyCqxPPqYp142cV_jnS_tkI1y4ThACmghhAnPd6I2g==" + - "-DtCJIRaq008_-zBGOKWID7fCGezA55FHL5Fm67CIou3-Y0ronRKoA==" body: encoding: ASCII-8BIT string: '{"ok":true,"members":[{"id":"USLACKBOT","team_id":"TN7G5G3M3","name":"slackbot","deleted":false,"color":"757575","real_name":"Slackbot","tz":null,"tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Slackbot","real_name_normalized":"Slackbot","display_name":"Slackbot","display_name_normalized":"Slackbot","fields":null,"status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"sv41d8cd98f0","always_active":true,"first_name":"slackbot","last_name":"","image_24":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_24.png","image_32":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_32.png","image_48":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_48.png","image_72":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_72.png","image_192":"https:\/\/a.slack-edge.com\/80588\/marketing\/img\/avatars\/slackbot\/avatar-slackbot.png","image_512":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_512.png","status_text_canonical":"","team":"TN7G5G3M3"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":0},{"id":"UN7G5G4TF","team_id":"TN7G5G3M3","name":"dianah46","deleted":false,"color":"9f69e7","real_name":"Diana Han","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Diana - Han","real_name_normalized":"Diana Han","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"gb342b6bf000","first_name":"Diana","last_name":"Han","image_24":"https:\/\/secure.gravatar.com\/avatar\/b342b6bf0000c042ed016ac628b2dd26.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/b342b6bf0000c042ed016ac628b2dd26.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/b342b6bf0000c042ed016ac628b2dd26.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/b342b6bf0000c042ed016ac628b2dd26.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/b342b6bf0000c042ed016ac628b2dd26.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/b342b6bf0000c042ed016ac628b2dd26.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-512.png","status_text_canonical":"","team":"TN7G5G3M3"},"is_admin":true,"is_owner":true,"is_primary_owner":true,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1568143240,"has_2fa":false},{"id":"UN9N9T9LN","team_id":"TN7G5G3M3","name":"linnea.johnson1","deleted":false,"color":"4bbe2e","real_name":"Linnea + Han","real_name_normalized":"Diana Han","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"gb342b6bf000","first_name":"Diana","last_name":"Han","image_24":"https:\/\/secure.gravatar.com\/avatar\/b342b6bf0000c042ed016ac628b2dd26.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/b342b6bf0000c042ed016ac628b2dd26.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/b342b6bf0000c042ed016ac628b2dd26.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/b342b6bf0000c042ed016ac628b2dd26.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/b342b6bf0000c042ed016ac628b2dd26.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/b342b6bf0000c042ed016ac628b2dd26.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-512.png","status_text_canonical":"","team":"TN7G5G3M3"},"is_admin":true,"is_owner":true,"is_primary_owner":true,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1568143240},{"id":"UN9N9T9LN","team_id":"TN7G5G3M3","name":"linnea.johnson1","deleted":false,"color":"4bbe2e","real_name":"Linnea Johnson","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Linnea Johnson","real_name_normalized":"Linnea Johnson","display_name":"Linnea Johnson","display_name_normalized":"Linnea - Johnson","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g62a333e3c5a","image_24":"https:\/\/secure.gravatar.com\/avatar\/62a333e3c5a3b0eb455d4fa82c117c9d.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0009-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/62a333e3c5a3b0eb455d4fa82c117c9d.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0009-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/62a333e3c5a3b0eb455d4fa82c117c9d.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0009-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/62a333e3c5a3b0eb455d4fa82c117c9d.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0009-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/62a333e3c5a3b0eb455d4fa82c117c9d.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0009-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/62a333e3c5a3b0eb455d4fa82c117c9d.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0009-512.png","status_text_canonical":"","team":"TN7G5G3M3"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1568143209,"has_2fa":false}],"cache_ts":1568157989,"response_metadata":{"next_cursor":""}}' + Johnson","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g62a333e3c5a","image_24":"https:\/\/secure.gravatar.com\/avatar\/62a333e3c5a3b0eb455d4fa82c117c9d.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0009-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/62a333e3c5a3b0eb455d4fa82c117c9d.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0009-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/62a333e3c5a3b0eb455d4fa82c117c9d.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0009-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/62a333e3c5a3b0eb455d4fa82c117c9d.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0009-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/62a333e3c5a3b0eb455d4fa82c117c9d.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0009-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/62a333e3c5a3b0eb455d4fa82c117c9d.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0009-512.png","status_text_canonical":"","team":"TN7G5G3M3"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1568143209,"has_2fa":false}],"cache_ts":1568235136,"response_metadata":{"next_cursor":""}}' http_version: - recorded_at: Tue, 10 Sep 2019 23:26:29 GMT + recorded_at: Wed, 11 Sep 2019 20:52:16 GMT recorded_with: VCR 5.0.0 diff --git a/test/channel_test.rb b/test/channel_test.rb index 257ec0e1..2431d50c 100644 --- a/test/channel_test.rb +++ b/test/channel_test.rb @@ -15,10 +15,10 @@ @response = HTTParty.get(BASE_URL, query: @query) - id = "CJAMGE6R1" + id = "CN9N9ECF8" name = "random" topic = "Non-work banter and water cooler conversation" - member_count = 102 + member_count = 2 channel = Channel.new(id, name, topic, member_count) expect(channel).must_be_instance_of Channel @@ -31,10 +31,10 @@ @response = HTTParty.get(BASE_URL, query: @query) #binding.pry - expect(@response["channels"][0]["id"]).must_equal "CN9N9ECF8" - expect(@response["channels"][0]["name"]).must_equal "random" - expect(@response["channels"][0]["topic"]["value"]).must_equal "Non-work banter and water cooler conversation" - expect(@response["channels"][0]["num_members"]).must_equal 102 + expect(@response["channels"][2]["id"]).must_equal "CN9N9ECF8" + expect(@response["channels"][2]["name"]).must_equal "random" + expect(@response["channels"][2]["topic"]["value"]).must_equal "Non-work banter and water cooler conversation" + expect(@response["channels"][2]["num_members"]).must_equal 2 end end From 47f7af88d04ec1e3db88ec9f5bc311e3c51c9849 Mon Sep 17 00:00:00 2001 From: Diana Han Date: Wed, 11 Sep 2019 15:16:46 -0700 Subject: [PATCH 08/20] Revised unit test for #self.list method in User class --- lib/recipient.rb | 2 +- lib/slack.rb | 16 ++- lib/user.rb | 31 ++++-- lib/workspace.rb | 6 +- test/cassettes/user_list_generation.yml | 140 ++++++++++++++++++++++++ test/user_test.rb | 19 ++-- 6 files changed, 189 insertions(+), 25 deletions(-) diff --git a/lib/recipient.rb b/lib/recipient.rb index 626d7bd1..7c96e8f5 100644 --- a/lib/recipient.rb +++ b/lib/recipient.rb @@ -11,7 +11,7 @@ def send_message(message) def self.get(url, query) - return HTTParty.get(url, query: query) + return HTTParty.get(url, query) end diff --git a/lib/slack.rb b/lib/slack.rb index 960cf2f7..26d6cb85 100755 --- a/lib/slack.rb +++ b/lib/slack.rb @@ -1,9 +1,23 @@ #!/usr/bin/env ruby +require_relative 'workspace' def main + workspace = Workspace.new + puts "Welcome to the Ada Slack CLI!" - # TODO project + puts "What would you like to do? \n - list users \n -list channels \n quit" + + user_input = gets.chomp + + if user_input == "list users" + p workspace.users + elsif user_input == "list channels" + # returns details of channel + elsif user_input == "quit" + exit + end + puts "Thank you for using the Ada Slack CLI" end diff --git a/lib/user.rb b/lib/user.rb index 3eb9870c..5a28f9f0 100644 --- a/lib/user.rb +++ b/lib/user.rb @@ -1,38 +1,45 @@ require_relative 'recipient' require 'httparty' require 'dotenv' +require 'table_print' +require 'pry' Dotenv.load class User < Recipient - # BASE_URL = "https://slack.com/api/users.list" - # TOKEN = ENV["SLACK_TOKEN"] + BASE_URL = "https://slack.com/api/users.list" + TOKEN = ENV["SLACK_TOKEN"] - # query = { - # token: TOKEN - # } + QUERY = { + token: TOKEN + } - attr_reader :id, :username, :real_name + attr_reader :id, :name, :real_name def initialize(id, name, real_name) super(id, name) @real_name = real_name end - def self.list + def self.list #list of users - # response = self.get(BASE_URL, query: query) + response = self.get(BASE_URL, query: QUERY) # iterate through response["members"] - reponse["members"].map do |member| - self.new(user["id"], member["name"], member["real_name"]) + response["members"].map do |member| + self.new(member["id"], member["name"], member["real_name"]) end - + # return response end def details - # prints out details + p "ID: #{id}" + # tp User.all end + end +# user = User.new("USLACKBOT", "slackbot", "Slackbot" ) +# user.details + diff --git a/lib/workspace.rb b/lib/workspace.rb index 4db2aacc..7f751468 100644 --- a/lib/workspace.rb +++ b/lib/workspace.rb @@ -6,12 +6,12 @@ Dotenv.load class Workspace - attr_reader + attr_reader :users, :channels, :selected def initialize @users = User.list - @channels - @selected + @channels = Channel.list + @selected = nil end def select_channel diff --git a/test/cassettes/user_list_generation.yml b/test/cassettes/user_list_generation.yml index 9ca65b16..44edfed3 100644 --- a/test/cassettes/user_list_generation.yml +++ b/test/cassettes/user_list_generation.yml @@ -77,4 +77,144 @@ http_interactions: Johnson","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g62a333e3c5a","image_24":"https:\/\/secure.gravatar.com\/avatar\/62a333e3c5a3b0eb455d4fa82c117c9d.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0009-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/62a333e3c5a3b0eb455d4fa82c117c9d.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0009-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/62a333e3c5a3b0eb455d4fa82c117c9d.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0009-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/62a333e3c5a3b0eb455d4fa82c117c9d.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0009-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/62a333e3c5a3b0eb455d4fa82c117c9d.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0009-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/62a333e3c5a3b0eb455d4fa82c117c9d.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0009-512.png","status_text_canonical":"","team":"TN7G5G3M3"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1568143209,"has_2fa":false}],"cache_ts":1568235136,"response_metadata":{"next_cursor":""}}' http_version: recorded_at: Wed, 11 Sep 2019 20:52:16 GMT +- request: + method: get + uri: https://slack.com/api/channels.list + body: + encoding: US-ASCII + string: '' + headers: + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + User-Agent: + - Ruby + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json; charset=utf-8 + Content-Length: + - '53' + Connection: + - keep-alive + Date: + - Wed, 11 Sep 2019 21:47:43 GMT + Server: + - Apache + Access-Control-Expose-Headers: + - x-slack-req-id, retry-after + Access-Control-Allow-Headers: + - slack-route, x-slack-version-ts + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Referrer-Policy: + - no-referrer + X-Accepted-Oauth-Scopes: + - channels:read + Vary: + - Accept-Encoding + X-Slack-Req-Id: + - 65b6a10a-d1c7-41ed-b0e4-3049c5ab0ce6 + X-Xss-Protection: + - '0' + X-Content-Type-Options: + - nosniff + Access-Control-Allow-Origin: + - "*" + X-Via: + - haproxy-www-qdiq + X-Cache: + - Miss from cloudfront + Via: + - 1.1 4ffd1199c1038a2d2062d6a465270ae2.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - SEA19 + X-Amz-Cf-Id: + - RvDg8Dz7b3HN1aTK93oE7mOTxLkcxz4kaChYNXpb8R5jvhFDaKXDlg== + body: + encoding: ASCII-8BIT + string: '{"ok":false,"error":"not_authed"}' + http_version: + recorded_at: Wed, 11 Sep 2019 21:47:43 GMT +- request: + method: get + uri: https://slack.com/api/channels.list?token= + body: + encoding: US-ASCII + string: '' + headers: + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + User-Agent: + - Ruby + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json; charset=utf-8 + Content-Length: + - '543' + Connection: + - keep-alive + Date: + - Wed, 11 Sep 2019 22:10:10 GMT + Server: + - Apache + X-Content-Type-Options: + - nosniff + X-Slack-Req-Id: + - adb663e8-f30a-4a78-b9f9-9d3a6fb4bcf2 + X-Oauth-Scopes: + - identify,channels:read,users:read,chat:write:bot + Expires: + - Mon, 26 Jul 1997 05:00:00 GMT + Cache-Control: + - private, no-cache, no-store, must-revalidate + Access-Control-Expose-Headers: + - x-slack-req-id, retry-after + X-Xss-Protection: + - '0' + X-Accepted-Oauth-Scopes: + - channels:read + Vary: + - Accept-Encoding + Pragma: + - no-cache + Access-Control-Allow-Headers: + - slack-route, x-slack-version-ts + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Referrer-Policy: + - no-referrer + Access-Control-Allow-Origin: + - "*" + X-Via: + - haproxy-www-fdpw + X-Cache: + - Miss from cloudfront + Via: + - 1.1 68eedbdfabd017beabf28d04341fec21.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - SEA19-C1 + X-Amz-Cf-Id: + - syy4BotlFabMVnQq_72PzZrQkxTh6-bwx3ZgsWVUDKTw44UwGJ-BHQ== + body: + encoding: ASCII-8BIT + string: '{"ok":true,"channels":[{"id":"CN1416ABB","name":"general","is_channel":true,"created":1568143132,"is_archived":false,"is_general":true,"unlinked":0,"creator":"UN7G5G4TF","name_normalized":"general","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UN7G5G4TF","UN9N9T9LN"],"topic":{"value":"Company-wide + announcements and work-based matters","creator":"UN7G5G4TF","last_set":1568143132},"purpose":{"value":"This + channel is for workspace-wide communication and announcements. All members + are in this channel.","creator":"UN7G5G4TF","last_set":1568143132},"previous_names":[],"num_members":2},{"id":"CN7G5GYGM","name":"slack-api","is_channel":true,"created":1568143132,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UN7G5G4TF","name_normalized":"slack-api","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UN7G5G4TF","UN9N9T9LN"],"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"","creator":"","last_set":0},"previous_names":[],"num_members":2},{"id":"CN9N9ECF8","name":"random","is_channel":true,"created":1568143132,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UN7G5G4TF","name_normalized":"random","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UN7G5G4TF","UN9N9T9LN"],"topic":{"value":"Non-work + banter and water cooler conversation","creator":"UN7G5G4TF","last_set":1568143132},"purpose":{"value":"A + place for non-work-related flimflam, faffing, hodge-podge or jibber-jabber + you''d prefer to keep out of more focused work-related channels.","creator":"UN7G5G4TF","last_set":1568143132},"previous_names":[],"num_members":2}],"response_metadata":{"next_cursor":""}}' + http_version: + recorded_at: Wed, 11 Sep 2019 22:10:09 GMT recorded_with: VCR 5.0.0 diff --git a/test/user_test.rb b/test/user_test.rb index f5df7f7f..4f16f0d1 100644 --- a/test/user_test.rb +++ b/test/user_test.rb @@ -2,9 +2,10 @@ require 'pry' describe "User class" do - before do - BASE_URL = "https://slack.com/api/users.list" + BASE_URL = "https://slack.com/api/users.list" TOKEN = ENV["SLACK_TOKEN"] + before do + @query = { token: TOKEN } @@ -21,18 +22,20 @@ user = User.new(id, name, real_name) expect(user).must_be_instance_of User + expect(user.id).must_equal "USLACKBOT" end end it "can return slackbot details" do VCR.use_cassette("user_list_generation") do - - @response = HTTParty.get(BASE_URL, query: @query) - - expect(@response["members"][0]["id"]).must_equal "USLACKBOT" - expect(@response["members"][0]["name"]).must_equal "slackbot" - expect(@response["members"][0]["real_name"]).must_equal "Slackbot" + user = User.new("USLACKBOT", "slackbot", "Slackbot" ) + users = User.list + + expect(users[0].id).must_equal "USLACKBOT" + expect(users[0].name).must_equal "slackbot" + expect(users[0].real_name).must_equal "Slackbot" + end end From 0f208c3d94917c0aa2779724455d194344ae9e07 Mon Sep 17 00:00:00 2001 From: Diana Han Date: Thu, 12 Sep 2019 15:43:37 -0700 Subject: [PATCH 09/20] troubleshooting --- lib/recipient.rb | 4 +--- lib/slack.rb | 9 ++++++--- lib/user.rb | 31 ++++++++++++++--------------- lib/workspace.rb | 44 +++++++++++++++++++++++++++++++++++++++--- test/user_test.rb | 4 ++-- test/workspace_test.rb | 0 6 files changed, 65 insertions(+), 27 deletions(-) create mode 100644 test/workspace_test.rb diff --git a/lib/recipient.rb b/lib/recipient.rb index 7c96e8f5..b1de817e 100644 --- a/lib/recipient.rb +++ b/lib/recipient.rb @@ -6,11 +6,9 @@ def initialize(id, name) @name = name end - def send_message(message) - end - def self.get(url, query) + def get(url, query) return HTTParty.get(url, query) end diff --git a/lib/slack.rb b/lib/slack.rb index 26d6cb85..d6eb3e93 100755 --- a/lib/slack.rb +++ b/lib/slack.rb @@ -6,14 +6,17 @@ def main puts "Welcome to the Ada Slack CLI!" - puts "What would you like to do? \n - list users \n -list channels \n quit" + puts "What would you like to do? + \n -list users + \n -list channels + \n quit" user_input = gets.chomp if user_input == "list users" - p workspace.users + workspace.display_users elsif user_input == "list channels" - # returns details of channel + # returns details of each channel elsif user_input == "quit" exit end diff --git a/lib/user.rb b/lib/user.rb index 5a28f9f0..eba7d400 100644 --- a/lib/user.rb +++ b/lib/user.rb @@ -8,11 +8,10 @@ class User < Recipient BASE_URL = "https://slack.com/api/users.list" - TOKEN = ENV["SLACK_TOKEN"] + TOKEN = ENV["SLACK_TOKEN"] - QUERY = { - token: TOKEN - } + QUERY = { + token: TOKEN} attr_reader :id, :name, :real_name @@ -21,25 +20,25 @@ def initialize(id, name, real_name) @real_name = real_name end - def self.list #list of users + # def self.list #list of Users + - response = self.get(BASE_URL, query: QUERY) - # iterate through response["members"] - response["members"].map do |member| - self.new(member["id"], member["name"], member["real_name"]) - end - # return response - end + # # iterate through response["members"] + + # end + # return users + # end def details - p "ID: #{id}" - # tp User.all + # p "ID: #{id}" + # tp User.list end + # binding.pry + end -# user = User.new("USLACKBOT", "slackbot", "Slackbot" ) -# user.details + diff --git a/lib/workspace.rb b/lib/workspace.rb index 7f751468..75896b06 100644 --- a/lib/workspace.rb +++ b/lib/workspace.rb @@ -1,19 +1,57 @@ require_relative 'user' require_relative 'channel' +require_relative 'recipient' require 'httparty' require 'dotenv' +require 'pry' + Dotenv.load -class Workspace +class Workspace < Recipient + BASE_URL = "https://slack.com/api/" + TOKEN = ENV["SLACK_TOKEN"] + + QUERY = { + token: TOKEN} + attr_reader :users, :channels, :selected def initialize - @users = User.list - @channels = Channel.list + @users = self.get_users + @channels = self.get_channels @selected = nil end + def get_users + + response = self.get(BASE_URL + "users.list", query: QUERY) + binding.pry + + users = response["members"].map do |member| + self.new(member["id"], member["name"], member["real_name"]) + end + + return users + + end + + def get_channels + response = self.get(BASE_URL + "channels.list", query: QUERY) + + channels = response["channels"].map do |channel| + self.new(channel["id"], channel["name"], channel["topic"], channel["num_members"]) + end + + return channels + + end + + + def display_users + return tp @users, :id, :name, :real_name + end + def select_channel end diff --git a/test/user_test.rb b/test/user_test.rb index 4f16f0d1..f12dafc6 100644 --- a/test/user_test.rb +++ b/test/user_test.rb @@ -2,7 +2,7 @@ require 'pry' describe "User class" do - BASE_URL = "https://slack.com/api/users.list" + BASE_URL = "https://slack.com/api/users.list" TOKEN = ENV["SLACK_TOKEN"] before do @@ -14,7 +14,7 @@ it "can create an instance" do VCR.use_cassette("user_list_generation") do - @response = HTTParty.get(BASE_URL, query: @query) + # @response = HTTParty.get(BASE_URL, query: @query) id = "USLACKBOT" name = "slackbot" diff --git a/test/workspace_test.rb b/test/workspace_test.rb new file mode 100644 index 00000000..e69de29b From f414f4763c42327279044d666dde0a93e9c2cc6d Mon Sep 17 00:00:00 2001 From: Linnea Johnson Date: Thu, 12 Sep 2019 16:12:22 -0700 Subject: [PATCH 10/20] wave 1 complete --- lib/slack.rb | 2 +- lib/workspace.rb | 12 ++-- test/cassettes/channel_list_generation.yml | 77 ++++++++++++++++++++++ test/channel_test.rb | 64 +++++++++--------- test/user_test.rb | 62 ++++++++--------- test/workspace_test.rb | 49 ++++++++++++++ 6 files changed, 196 insertions(+), 70 deletions(-) diff --git a/lib/slack.rb b/lib/slack.rb index d6eb3e93..15a5160b 100755 --- a/lib/slack.rb +++ b/lib/slack.rb @@ -16,7 +16,7 @@ def main if user_input == "list users" workspace.display_users elsif user_input == "list channels" - # returns details of each channel + workspace.display_channels elsif user_input == "quit" exit end diff --git a/lib/workspace.rb b/lib/workspace.rb index 75896b06..0b3fe580 100644 --- a/lib/workspace.rb +++ b/lib/workspace.rb @@ -5,7 +5,6 @@ require 'dotenv' require 'pry' - Dotenv.load class Workspace < Recipient @@ -24,12 +23,10 @@ def initialize end def get_users - response = self.get(BASE_URL + "users.list", query: QUERY) - binding.pry users = response["members"].map do |member| - self.new(member["id"], member["name"], member["real_name"]) + User.new(member["id"], member["name"], member["real_name"]) end return users @@ -40,18 +37,21 @@ def get_channels response = self.get(BASE_URL + "channels.list", query: QUERY) channels = response["channels"].map do |channel| - self.new(channel["id"], channel["name"], channel["topic"], channel["num_members"]) + Channel.new(channel["id"], channel["name"], channel["topic"]["value"], channel["num_members"]) end return channels end - def display_users return tp @users, :id, :name, :real_name end + def display_channels + return tp @channels, :id, :name, :topic, :member_count + end + def select_channel end diff --git a/test/cassettes/channel_list_generation.yml b/test/cassettes/channel_list_generation.yml index 5ed9ad63..6d2fb8d7 100644 --- a/test/cassettes/channel_list_generation.yml +++ b/test/cassettes/channel_list_generation.yml @@ -77,4 +77,81 @@ http_interactions: you''d prefer to keep out of more focused work-related channels.","creator":"UN7G5G4TF","last_set":1568143132},"previous_names":[],"num_members":2}],"response_metadata":{"next_cursor":""}}' http_version: recorded_at: Wed, 11 Sep 2019 20:52:16 GMT +- request: + method: get + uri: https://slack.com/api/users.list?token= + body: + encoding: US-ASCII + string: '' + headers: + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + User-Agent: + - Ruby + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json; charset=utf-8 + Content-Length: + - '934' + Connection: + - keep-alive + Date: + - Thu, 12 Sep 2019 23:02:54 GMT + Server: + - Apache + X-Content-Type-Options: + - nosniff + X-Slack-Req-Id: + - 035eecfd-88e5-4899-a745-8b9f4e006c35 + X-Oauth-Scopes: + - identify,channels:read,users:read,chat:write:bot + Expires: + - Mon, 26 Jul 1997 05:00:00 GMT + Cache-Control: + - private, no-cache, no-store, must-revalidate + Access-Control-Expose-Headers: + - x-slack-req-id, retry-after + X-Xss-Protection: + - '0' + X-Accepted-Oauth-Scopes: + - users:read + Vary: + - Accept-Encoding + Pragma: + - no-cache + Access-Control-Allow-Headers: + - slack-route, x-slack-version-ts + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Referrer-Policy: + - no-referrer + Access-Control-Allow-Origin: + - "*" + X-Via: + - haproxy-www-qt4f + X-Cache: + - Miss from cloudfront + Via: + - 1.1 c1ac198ab82768c141e2da4f5b4eb71c.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - DEN50-C1 + X-Amz-Cf-Id: + - 5BrU6LYVaNvb4vlUa2ByjDHkrwj85fzRncja0HCt5dMET4JBi0ITiQ== + body: + encoding: ASCII-8BIT + string: '{"ok":true,"members":[{"id":"USLACKBOT","team_id":"TN7G5G3M3","name":"slackbot","deleted":false,"color":"757575","real_name":"Slackbot","tz":null,"tz_label":"Pacific + Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Slackbot","real_name_normalized":"Slackbot","display_name":"Slackbot","display_name_normalized":"Slackbot","fields":null,"status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"sv41d8cd98f0","always_active":true,"first_name":"slackbot","last_name":"","image_24":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_24.png","image_32":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_32.png","image_48":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_48.png","image_72":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_72.png","image_192":"https:\/\/a.slack-edge.com\/80588\/marketing\/img\/avatars\/slackbot\/avatar-slackbot.png","image_512":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_512.png","status_text_canonical":"","team":"TN7G5G3M3"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":0},{"id":"UN7G5G4TF","team_id":"TN7G5G3M3","name":"dianah46","deleted":false,"color":"9f69e7","real_name":"Diana + Han","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Diana + Han","real_name_normalized":"Diana Han","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"gb342b6bf000","first_name":"Diana","last_name":"Han","image_24":"https:\/\/secure.gravatar.com\/avatar\/b342b6bf0000c042ed016ac628b2dd26.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/b342b6bf0000c042ed016ac628b2dd26.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/b342b6bf0000c042ed016ac628b2dd26.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/b342b6bf0000c042ed016ac628b2dd26.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/b342b6bf0000c042ed016ac628b2dd26.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/b342b6bf0000c042ed016ac628b2dd26.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-512.png","status_text_canonical":"","team":"TN7G5G3M3"},"is_admin":true,"is_owner":true,"is_primary_owner":true,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1568143240},{"id":"UN9N9T9LN","team_id":"TN7G5G3M3","name":"linnea.johnson1","deleted":false,"color":"4bbe2e","real_name":"Linnea + Johnson","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Linnea + Johnson","real_name_normalized":"Linnea Johnson","display_name":"Linnea Johnson","display_name_normalized":"Linnea + Johnson","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g62a333e3c5a","image_24":"https:\/\/secure.gravatar.com\/avatar\/62a333e3c5a3b0eb455d4fa82c117c9d.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0009-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/62a333e3c5a3b0eb455d4fa82c117c9d.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0009-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/62a333e3c5a3b0eb455d4fa82c117c9d.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0009-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/62a333e3c5a3b0eb455d4fa82c117c9d.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0009-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/62a333e3c5a3b0eb455d4fa82c117c9d.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0009-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/62a333e3c5a3b0eb455d4fa82c117c9d.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0009-512.png","status_text_canonical":"","team":"TN7G5G3M3"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1568143209,"has_2fa":false}],"cache_ts":1568329374,"response_metadata":{"next_cursor":""}}' + http_version: + recorded_at: Thu, 12 Sep 2019 23:02:55 GMT recorded_with: VCR 5.0.0 diff --git a/test/channel_test.rb b/test/channel_test.rb index 2431d50c..1c3068ca 100644 --- a/test/channel_test.rb +++ b/test/channel_test.rb @@ -1,41 +1,41 @@ -require_relative 'test_helper' -require 'pry' +# require_relative 'test_helper' +# require 'pry' -describe "Channel class" do - before do - BASE_URL = "https://slack.com/api/channels.list" - TOKEN = ENV["SLACK_TOKEN"] - @query = { - token: TOKEN - } - end +# describe "Channel class" do +# before do +# # BASE_URL = "https://slack.com/api/channels.list" +# # TOKEN = ENV["SLACK_TOKEN"] +# @query = { +# token: TOKEN +# } +# end - it "can create an instance of Channel" do - VCR.use_cassette("channel_instantiation") do +# it "can create an instance of Channel" do +# VCR.use_cassette("channel_instantiation") do - @response = HTTParty.get(BASE_URL, query: @query) +# @response = HTTParty.get(BASE_URL, query: @query) - id = "CN9N9ECF8" - name = "random" - topic = "Non-work banter and water cooler conversation" - member_count = 2 - channel = Channel.new(id, name, topic, member_count) +# id = "CN9N9ECF8" +# name = "random" +# topic = "Non-work banter and water cooler conversation" +# member_count = 2 +# channel = Channel.new(id, name, topic, member_count) - expect(channel).must_be_instance_of Channel - end - end +# expect(channel).must_be_instance_of Channel +# end +# end - it "can return channel details" do - VCR.use_cassette("channel_list_generation") do +# it "can return channel details" do +# VCR.use_cassette("channel_list_generation") do - @response = HTTParty.get(BASE_URL, query: @query) - #binding.pry +# @response = HTTParty.get(BASE_URL, query: @query) +# #binding.pry - expect(@response["channels"][2]["id"]).must_equal "CN9N9ECF8" - expect(@response["channels"][2]["name"]).must_equal "random" - expect(@response["channels"][2]["topic"]["value"]).must_equal "Non-work banter and water cooler conversation" - expect(@response["channels"][2]["num_members"]).must_equal 2 - end - end +# expect(@response["channels"][2]["id"]).must_equal "CN9N9ECF8" +# expect(@response["channels"][2]["name"]).must_equal "random" +# expect(@response["channels"][2]["topic"]["value"]).must_equal "Non-work banter and water cooler conversation" +# expect(@response["channels"][2]["num_members"]).must_equal 2 +# end +# end -end \ No newline at end of file +# end \ No newline at end of file diff --git a/test/user_test.rb b/test/user_test.rb index f12dafc6..4c11ae7e 100644 --- a/test/user_test.rb +++ b/test/user_test.rb @@ -1,42 +1,42 @@ -require_relative 'test_helper' -require 'pry' +# require_relative 'test_helper' +# require 'pry' -describe "User class" do - BASE_URL = "https://slack.com/api/users.list" - TOKEN = ENV["SLACK_TOKEN"] - before do +# describe "User class" do +# BASE_URL = "https://slack.com/api/users.list" +# TOKEN = ENV["SLACK_TOKEN"] +# before do - @query = { - token: TOKEN - } - end +# @query = { +# token: TOKEN +# } +# end - it "can create an instance" do - VCR.use_cassette("user_list_generation") do +# it "can create an instance" do +# VCR.use_cassette("user_list_generation") do - # @response = HTTParty.get(BASE_URL, query: @query) +# # @response = HTTParty.get(BASE_URL, query: @query) - id = "USLACKBOT" - name = "slackbot" - real_name = "Slackbot" - user = User.new(id, name, real_name) +# id = "USLACKBOT" +# name = "slackbot" +# real_name = "Slackbot" +# user = User.new(id, name, real_name) - expect(user).must_be_instance_of User - expect(user.id).must_equal "USLACKBOT" - end - end +# expect(user).must_be_instance_of User +# expect(user.id).must_equal "USLACKBOT" +# end +# end - it "can return slackbot details" do - VCR.use_cassette("user_list_generation") do - user = User.new("USLACKBOT", "slackbot", "Slackbot" ) - users = User.list +# it "can return slackbot details" do +# VCR.use_cassette("user_list_generation") do +# user = User.new("USLACKBOT", "slackbot", "Slackbot" ) +# users = User.list - expect(users[0].id).must_equal "USLACKBOT" - expect(users[0].name).must_equal "slackbot" - expect(users[0].real_name).must_equal "Slackbot" +# expect(users[0].id).must_equal "USLACKBOT" +# expect(users[0].name).must_equal "slackbot" +# expect(users[0].real_name).must_equal "Slackbot" - end - end +# end +# end -end \ No newline at end of file +# end \ No newline at end of file diff --git a/test/workspace_test.rb b/test/workspace_test.rb index e69de29b..1fabf13a 100644 --- a/test/workspace_test.rb +++ b/test/workspace_test.rb @@ -0,0 +1,49 @@ +require_relative 'test_helper' +require 'pry' + +describe "Workspace class" do + # BASE_URL = "https://slack.com/api/" + # TOKEN = ENV["SLACK_TOKEN"] + before do + + # @query = { + # token: TOKEN + # } + end + + it "can create an instance" do + VCR.use_cassette("user_list_generation") do + + user = Workspace.new + + expect(user).must_be_instance_of Workspace + #expect(user.id).must_equal "USLACKBOT" + end + end + + it "can return list of users" do + VCR.use_cassette("user_list_generation") do + + workspace = Workspace.new + users = workspace.users + + expect(users[0].id).must_equal "USLACKBOT" + expect(users[0].name).must_equal "slackbot" + expect(users[0].real_name).must_equal "Slackbot" + + end + end + + it "can return channel details" do + VCR.use_cassette("channel_list_generation") do + workspace = Workspace.new + channels = workspace.channels + + expect(channels[2].id).must_equal "CN9N9ECF8" + expect(channels[2].name).must_equal "random" + expect(channels[2].topic).must_equal "Non-work banter and water cooler conversation" + expect(channels[2].member_count).must_equal 2 + end + end + +end \ No newline at end of file From 7e3b02912791e47dc4b36bfc73a8751969981b0e Mon Sep 17 00:00:00 2001 From: Diana Han Date: Thu, 12 Sep 2019 18:04:56 -0700 Subject: [PATCH 11/20] created CLI and added methods for @selected --- lib/slack.rb | 47 ++++++++++++++++++++++++++++++++++++++--------- lib/workspace.rb | 25 +++++++++++++++++++++---- 2 files changed, 59 insertions(+), 13 deletions(-) diff --git a/lib/slack.rb b/lib/slack.rb index 15a5160b..a790fa9c 100755 --- a/lib/slack.rb +++ b/lib/slack.rb @@ -1,28 +1,57 @@ #!/usr/bin/env ruby require_relative 'workspace' - +require 'pry' def main workspace = Workspace.new - + puts "Welcome to the Ada Slack CLI!" - - puts "What would you like to do? - \n -list users - \n -list channels - \n quit" - + + + puts "What would you like to do?" +# tp [ +# { +# command: 'list users', +# description: 'list all users in workspace' +# } +# ] +# tp [["command", "descriptions"], +# ["list users", "list all users in workspace"], +# ["list channels", "list all channels in workspace"], +# ["select user", "select a user as the current recipient"], +# ["select channel", "select a channel as the current recipient"], +# ["details", "show details of the current recipient"] +# ] + + + +user_input = "" +while user_input != "quit" user_input = gets.chomp if user_input == "list users" workspace.display_users elsif user_input == "list channels" workspace.display_channels + elsif user_input == "select user" + user_input = gets.chomp + workspace.select_user(user_input) + + + elsif user_input == "select channel" + user_input = gets.chomp + workspace.select_channel(user_input) + elsif user_input == "details" + tp workspace.selected + # print details of workspace.selected + elsif user_input == "quit" exit end +end + - puts "Thank you for using the Ada Slack CLI" +puts "Thank you for using the Ada Slack CLI" end main if __FILE__ == $PROGRAM_NAME \ No newline at end of file diff --git a/lib/workspace.rb b/lib/workspace.rb index 0b3fe580..affc134f 100644 --- a/lib/workspace.rb +++ b/lib/workspace.rb @@ -14,7 +14,8 @@ class Workspace < Recipient QUERY = { token: TOKEN} - attr_reader :users, :channels, :selected + attr_reader :users, :channels + attr_accessor :selected def initialize @users = self.get_users @@ -49,16 +50,32 @@ def display_users end def display_channels - return tp @channels, :id, :name, :topic, :member_count + + tp @channels, :id, :name, :topic, :member_count end - def select_channel + def select_user(user_input) + selected_user = users.select { |user| user.name == user_input || user.id == user_input } + + if selected_user == [] + raise IndexError, "No user found" + else + @selected = selected_user + end end - def select_user + def select_channel(user_input) + selected_channel = channels.select { |channel| channel.name == user_input || channel.id == user_input } + + if selected_channel == [] + raise IndexError, "No channel found" + else + @selected = selected_channel + end end def show_details + tp @selected end def send_message From 63f789dc19494d5501e8902146c80825b2aa90a7 Mon Sep 17 00:00:00 2001 From: Diana Han Date: Fri, 13 Sep 2019 11:34:22 -0700 Subject: [PATCH 12/20] created tests for class Workspace --- lib/channel.rb | 17 ---- lib/recipient.rb | 3 - lib/user.rb | 19 ----- lib/workspace.rb | 23 +++-- test/cassettes/workspace.yml | 157 +++++++++++++++++++++++++++++++++++ test/workspace_test.rb | 97 +++++++++++++++------- 6 files changed, 234 insertions(+), 82 deletions(-) create mode 100644 test/cassettes/workspace.yml diff --git a/lib/channel.rb b/lib/channel.rb index 09a092d9..0f0c7b43 100644 --- a/lib/channel.rb +++ b/lib/channel.rb @@ -12,21 +12,4 @@ def initialize(id, name, topic, member_count) @topic = topic @member_count = member_count end - - def details - end - - - def self.list - # BASE_URL = "https://slack.com/api/channels.list" - # TOKEN = ENV["SLACK_TOKEN"] - - # query = { - # token: TOKEN - # } - - # response = HTTParty.get(BASE_URL, query: query) - - # response["slackbot"]["members".first]["id"] - end end \ No newline at end of file diff --git a/lib/recipient.rb b/lib/recipient.rb index b1de817e..9c95a7a1 100644 --- a/lib/recipient.rb +++ b/lib/recipient.rb @@ -6,13 +6,10 @@ def initialize(id, name) @name = name end - - def get(url, query) return HTTParty.get(url, query) end - # ABSTRACT METHODS def details raise NotImplementedError, "Implement me in a child class!" diff --git a/lib/user.rb b/lib/user.rb index eba7d400..3dee028d 100644 --- a/lib/user.rb +++ b/lib/user.rb @@ -1,8 +1,6 @@ require_relative 'recipient' require 'httparty' require 'dotenv' -require 'table_print' -require 'pry' Dotenv.load @@ -20,23 +18,6 @@ def initialize(id, name, real_name) @real_name = real_name end - # def self.list #list of Users - - - - # # iterate through response["members"] - - # end - # return users - # end - - def details - # p "ID: #{id}" - # tp User.list - end - # binding.pry - - end diff --git a/lib/workspace.rb b/lib/workspace.rb index affc134f..c022a633 100644 --- a/lib/workspace.rb +++ b/lib/workspace.rb @@ -10,9 +10,9 @@ class Workspace < Recipient BASE_URL = "https://slack.com/api/" TOKEN = ENV["SLACK_TOKEN"] - QUERY = { - token: TOKEN} + token: TOKEN + } attr_reader :users, :channels attr_accessor :selected @@ -31,7 +31,6 @@ def get_users end return users - end def get_channels @@ -42,7 +41,6 @@ def get_channels end return channels - end def display_users @@ -50,27 +48,26 @@ def display_users end def display_channels - tp @channels, :id, :name, :topic, :member_count end def select_user(user_input) selected_user = users.select { |user| user.name == user_input || user.id == user_input } - if selected_user == [] - raise IndexError, "No user found" - else + unless selected_user == [] @selected = selected_user + else + raise IndexError, "No user found" end end def select_channel(user_input) selected_channel = channels.select { |channel| channel.name == user_input || channel.id == user_input } - if selected_channel == [] - raise IndexError, "No channel found" - else + unless selected_channel == [] @selected = selected_channel + else + raise IndexError, "No channel found" end end @@ -78,6 +75,6 @@ def show_details tp @selected end - def send_message - end + # def send_message + # end end \ No newline at end of file diff --git a/test/cassettes/workspace.yml b/test/cassettes/workspace.yml new file mode 100644 index 00000000..c6280d99 --- /dev/null +++ b/test/cassettes/workspace.yml @@ -0,0 +1,157 @@ +--- +http_interactions: +- request: + method: get + uri: https://slack.com/api/users.list?token= + body: + encoding: US-ASCII + string: '' + headers: + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + User-Agent: + - Ruby + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json; charset=utf-8 + Content-Length: + - '936' + Connection: + - keep-alive + Date: + - Fri, 13 Sep 2019 01:45:20 GMT + Server: + - Apache + X-Content-Type-Options: + - nosniff + X-Slack-Req-Id: + - 8b942435-8c2e-46f1-9cb7-e62892a7ffff + X-Oauth-Scopes: + - identify,channels:read,users:read,chat:write:bot + Expires: + - Mon, 26 Jul 1997 05:00:00 GMT + Cache-Control: + - private, no-cache, no-store, must-revalidate + Access-Control-Expose-Headers: + - x-slack-req-id, retry-after + X-Xss-Protection: + - '0' + X-Accepted-Oauth-Scopes: + - users:read + Vary: + - Accept-Encoding + Pragma: + - no-cache + Access-Control-Allow-Headers: + - slack-route, x-slack-version-ts + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Referrer-Policy: + - no-referrer + Access-Control-Allow-Origin: + - "*" + X-Via: + - haproxy-www-33wb + X-Cache: + - Miss from cloudfront + Via: + - 1.1 599f04a365a179d553682d476509c389.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - SEA19-C1 + X-Amz-Cf-Id: + - Uu-hRxOGIbT7jMAt1Ynwg5gwy9k6COnoBL0kkORdnMnf0wo8damp8g== + body: + encoding: ASCII-8BIT + string: '{"ok":true,"members":[{"id":"USLACKBOT","team_id":"TN7G5G3M3","name":"slackbot","deleted":false,"color":"757575","real_name":"Slackbot","tz":null,"tz_label":"Pacific + Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Slackbot","real_name_normalized":"Slackbot","display_name":"Slackbot","display_name_normalized":"Slackbot","fields":null,"status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"sv41d8cd98f0","always_active":true,"first_name":"slackbot","last_name":"","image_24":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_24.png","image_32":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_32.png","image_48":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_48.png","image_72":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_72.png","image_192":"https:\/\/a.slack-edge.com\/80588\/marketing\/img\/avatars\/slackbot\/avatar-slackbot.png","image_512":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_512.png","status_text_canonical":"","team":"TN7G5G3M3"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":0},{"id":"UN7G5G4TF","team_id":"TN7G5G3M3","name":"dianah46","deleted":false,"color":"9f69e7","real_name":"Diana + Han","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Diana + Han","real_name_normalized":"Diana Han","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"gb342b6bf000","first_name":"Diana","last_name":"Han","image_24":"https:\/\/secure.gravatar.com\/avatar\/b342b6bf0000c042ed016ac628b2dd26.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/b342b6bf0000c042ed016ac628b2dd26.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/b342b6bf0000c042ed016ac628b2dd26.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/b342b6bf0000c042ed016ac628b2dd26.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/b342b6bf0000c042ed016ac628b2dd26.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/b342b6bf0000c042ed016ac628b2dd26.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-512.png","status_text_canonical":"","team":"TN7G5G3M3"},"is_admin":true,"is_owner":true,"is_primary_owner":true,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1568143240,"has_2fa":false},{"id":"UN9N9T9LN","team_id":"TN7G5G3M3","name":"linnea.johnson1","deleted":false,"color":"4bbe2e","real_name":"Linnea + Johnson","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Linnea + Johnson","real_name_normalized":"Linnea Johnson","display_name":"Linnea Johnson","display_name_normalized":"Linnea + Johnson","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g62a333e3c5a","image_24":"https:\/\/secure.gravatar.com\/avatar\/62a333e3c5a3b0eb455d4fa82c117c9d.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0009-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/62a333e3c5a3b0eb455d4fa82c117c9d.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0009-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/62a333e3c5a3b0eb455d4fa82c117c9d.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0009-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/62a333e3c5a3b0eb455d4fa82c117c9d.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0009-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/62a333e3c5a3b0eb455d4fa82c117c9d.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0009-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/62a333e3c5a3b0eb455d4fa82c117c9d.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0009-512.png","status_text_canonical":"","team":"TN7G5G3M3"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1568143209,"has_2fa":false}],"cache_ts":1568339120,"response_metadata":{"next_cursor":""}}' + http_version: + recorded_at: Fri, 13 Sep 2019 01:45:21 GMT +- request: + method: get + uri: https://slack.com/api/channels.list?token= + body: + encoding: US-ASCII + string: '' + headers: + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + User-Agent: + - Ruby + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json; charset=utf-8 + Content-Length: + - '543' + Connection: + - keep-alive + Date: + - Fri, 13 Sep 2019 01:45:21 GMT + Server: + - Apache + X-Content-Type-Options: + - nosniff + X-Slack-Req-Id: + - ff724f1b-6a80-4da6-8500-efec4bcfe58f + X-Oauth-Scopes: + - identify,channels:read,users:read,chat:write:bot + Expires: + - Mon, 26 Jul 1997 05:00:00 GMT + Cache-Control: + - private, no-cache, no-store, must-revalidate + Access-Control-Expose-Headers: + - x-slack-req-id, retry-after + X-Xss-Protection: + - '0' + X-Accepted-Oauth-Scopes: + - channels:read + Vary: + - Accept-Encoding + Pragma: + - no-cache + Access-Control-Allow-Headers: + - slack-route, x-slack-version-ts + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Referrer-Policy: + - no-referrer + Access-Control-Allow-Origin: + - "*" + X-Via: + - haproxy-www-e4y4 + X-Cache: + - Miss from cloudfront + Via: + - 1.1 0bb842bd5868b86440983b936bb0adef.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - SEA19-C1 + X-Amz-Cf-Id: + - q0TTvlLcz7MbePLHi8ickwy1QNkJLGqO1wryvPZEahURwvv9Zy2l0g== + body: + encoding: ASCII-8BIT + string: '{"ok":true,"channels":[{"id":"CN1416ABB","name":"general","is_channel":true,"created":1568143132,"is_archived":false,"is_general":true,"unlinked":0,"creator":"UN7G5G4TF","name_normalized":"general","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UN7G5G4TF","UN9N9T9LN"],"topic":{"value":"Company-wide + announcements and work-based matters","creator":"UN7G5G4TF","last_set":1568143132},"purpose":{"value":"This + channel is for workspace-wide communication and announcements. All members + are in this channel.","creator":"UN7G5G4TF","last_set":1568143132},"previous_names":[],"num_members":2},{"id":"CN7G5GYGM","name":"slack-api","is_channel":true,"created":1568143132,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UN7G5G4TF","name_normalized":"slack-api","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UN7G5G4TF","UN9N9T9LN"],"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"","creator":"","last_set":0},"previous_names":[],"num_members":2},{"id":"CN9N9ECF8","name":"random","is_channel":true,"created":1568143132,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UN7G5G4TF","name_normalized":"random","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UN7G5G4TF","UN9N9T9LN"],"topic":{"value":"Non-work + banter and water cooler conversation","creator":"UN7G5G4TF","last_set":1568143132},"purpose":{"value":"A + place for non-work-related flimflam, faffing, hodge-podge or jibber-jabber + you''d prefer to keep out of more focused work-related channels.","creator":"UN7G5G4TF","last_set":1568143132},"previous_names":[],"num_members":2}],"response_metadata":{"next_cursor":""}}' + http_version: + recorded_at: Fri, 13 Sep 2019 01:45:21 GMT +recorded_with: VCR 5.0.0 diff --git a/test/workspace_test.rb b/test/workspace_test.rb index 1fabf13a..f453fac6 100644 --- a/test/workspace_test.rb +++ b/test/workspace_test.rb @@ -2,48 +2,85 @@ require 'pry' describe "Workspace class" do - # BASE_URL = "https://slack.com/api/" - # TOKEN = ENV["SLACK_TOKEN"] before do - - # @query = { - # token: TOKEN - # } + VCR.use_cassette("workspace") do + @workspace = Workspace.new + end end - it "can create an instance" do - VCR.use_cassette("user_list_generation") do - - user = Workspace.new + describe "initializer" do + it "can create an instance" do + + expect(@workspace).must_be_instance_of Workspace + end + + it "establishes the base data structures when instantiated" do + + expect(@workspace.users).must_be_kind_of Array + expect(@workspace.channels).must_be_kind_of Array + end + + describe "get_users method" do + it "can return user data from Slack API" do - expect(user).must_be_instance_of Workspace - #expect(user.id).must_equal "USLACKBOT" + users = @workspace.users + + expect(users[0].id).must_equal "USLACKBOT" + expect(users[0].name).must_equal "slackbot" + expect(users[0].real_name).must_equal "Slackbot" end end - it "can return list of users" do - VCR.use_cassette("user_list_generation") do - - workspace = Workspace.new - users = workspace.users - - expect(users[0].id).must_equal "USLACKBOT" - expect(users[0].name).must_equal "slackbot" - expect(users[0].real_name).must_equal "Slackbot" + describe "get_channels method" do + it "can return channel data from Slack API" do + + channels = @workspace.channels + expect(channels[2].id).must_equal "CN9N9ECF8" + expect(channels[2].name).must_equal "random" + expect(channels[2].topic).must_equal "Non-work banter and water cooler conversation" + expect(channels[2].member_count).must_equal 2 end end - it "can return channel details" do - VCR.use_cassette("channel_list_generation") do - workspace = Workspace.new - channels = workspace.channels + describe "select_user method" do + it "can return a valid user from list based on user input" do + VCR.use_cassette("workspace") do + workspace = Workspace.new + + user = workspace.select_user("slackbot") - expect(channels[2].id).must_equal "CN9N9ECF8" - expect(channels[2].name).must_equal "random" - expect(channels[2].topic).must_equal "Non-work banter and water cooler conversation" - expect(channels[2].member_count).must_equal 2 + expect(user[0]).must_be_instance_of User + end + end + + it "will raise an IndexError if invalid user input was provided" do + VCR.use_cassette("workspace") do + workspace = Workspace.new + + proc{workspace.select_user("fasdf")}.must_raise IndexError + end end end -end \ No newline at end of file + describe "select_channel method" do + it "can return a valid channel from list based on user input" do + VCR.use_cassette("workspace") do + workspace = Workspace.new + + channel = workspace.select_channel("random") + + expect(channel[0]).must_be_instance_of Channel + end + end + + it "will raise an IndexError if invalid user input was provided" do + VCR.use_cassette("workspace") do + workspace = Workspace.new + + proc{workspace.select_channel("asdf")}.must_raise IndexError + end + end + end +end +end From d51ccf62f62fc3b0f851291b1cfab49d7183042e Mon Sep 17 00:00:00 2001 From: Linnea Johnson Date: Fri, 13 Sep 2019 11:40:18 -0700 Subject: [PATCH 13/20] updated command line prompts, cleaned up methods in recipient class --- lib/recipient.rb | 3 +- lib/slack.rb | 90 +++++++++++++++++++++--------------------- lib/workspace.rb | 23 +++-------- test/workspace_test.rb | 13 +++++- 4 files changed, 64 insertions(+), 65 deletions(-) diff --git a/lib/recipient.rb b/lib/recipient.rb index b1de817e..f964430b 100644 --- a/lib/recipient.rb +++ b/lib/recipient.rb @@ -7,11 +7,10 @@ def initialize(id, name) end - def get(url, query) return HTTParty.get(url, query) end - + # ABSTRACT METHODS def details diff --git a/lib/slack.rb b/lib/slack.rb index a790fa9c..e3b2186a 100755 --- a/lib/slack.rb +++ b/lib/slack.rb @@ -3,55 +3,57 @@ require 'pry' def main workspace = Workspace.new + + command_table = [{command: 'list users', description: 'lists all users in workspace'}, {command: 'list channels', description: 'lists all channels in workspace'}, {command: 'select user', description: 'selects a user'}, {command: 'select channel', description: 'selects a channel'}, {command: 'details', description: 'shows details of the current recipient'}] - puts "Welcome to the Ada Slack CLI!" - + puts "Welcome to the Ada Slack CLI!\n\n" - puts "What would you like to do?" -# tp [ -# { -# command: 'list users', -# description: 'list all users in workspace' -# } -# ] -# tp [["command", "descriptions"], -# ["list users", "list all users in workspace"], -# ["list channels", "list all channels in workspace"], -# ["select user", "select a user as the current recipient"], -# ["select channel", "select a channel as the current recipient"], -# ["details", "show details of the current recipient"] -# ] - - - -user_input = "" -while user_input != "quit" - user_input = gets.chomp - - if user_input == "list users" - workspace.display_users - elsif user_input == "list channels" - workspace.display_channels - elsif user_input == "select user" - user_input = gets.chomp - workspace.select_user(user_input) - + tp command_table + puts "\n\nWhat would you like to do? Enter a command from the list above: " - elsif user_input == "select channel" - user_input = gets.chomp - workspace.select_channel(user_input) - elsif user_input == "details" - tp workspace.selected - # print details of workspace.selected - - elsif user_input == "quit" - exit - end - -end + user_input = "" + while user_input != "quit" + user_input = gets.chomp -puts "Thank you for using the Ada Slack CLI" + case user_input + when "list users" + workspace.display_users + + when "list channels" + workspace.display_channels + + when "select user" + puts "Enter the name or slack id of the user: " + user_input = gets.chomp + if workspace.select_user(user_input) == [] + puts "Invalid entry! Please enter another user: " + user_input = gets.chomp + end + + when "select channel" + puts "Enter the name or slack id of the channel: " + user_input = gets.chomp + if workspace.select_channel(user_input) == [] + puts "Invalid entry! Please enter another channel: " + user_input = gets.chomp + end + + when "details" + if workspace.selected == nil + puts "No recipient selected! Enter another command: " + #user_input = gets.chomp + else + workspace.show_details + puts "\n\n" + end + + when "quit" + puts "Thank you for using the Ada Slack CLI!" + exit + end + #puts "Enter another command or type 'quit' to exit the program." + end end main if __FILE__ == $PROGRAM_NAME \ No newline at end of file diff --git a/lib/workspace.rb b/lib/workspace.rb index affc134f..37d92eb3 100644 --- a/lib/workspace.rb +++ b/lib/workspace.rb @@ -40,38 +40,25 @@ def get_channels channels = response["channels"].map do |channel| Channel.new(channel["id"], channel["name"], channel["topic"]["value"], channel["num_members"]) end - return channels - end def display_users - return tp @users, :id, :name, :real_name + tp @users, :id, :name, :real_name + puts "\n\n" end def display_channels - tp @channels, :id, :name, :topic, :member_count + puts "\n\n" end def select_user(user_input) - selected_user = users.select { |user| user.name == user_input || user.id == user_input } - - if selected_user == [] - raise IndexError, "No user found" - else - @selected = selected_user - end + @selected = users.select { |user| user.name == user_input || user.id == user_input } end def select_channel(user_input) - selected_channel = channels.select { |channel| channel.name == user_input || channel.id == user_input } - - if selected_channel == [] - raise IndexError, "No channel found" - else - @selected = selected_channel - end + @selected = channels.select { |channel| channel.name == user_input || channel.id == user_input } end def show_details diff --git a/test/workspace_test.rb b/test/workspace_test.rb index 1fabf13a..c883c062 100644 --- a/test/workspace_test.rb +++ b/test/workspace_test.rb @@ -30,7 +30,18 @@ expect(users[0].id).must_equal "USLACKBOT" expect(users[0].name).must_equal "slackbot" expect(users[0].real_name).must_equal "Slackbot" - + end + end + + it "can return channel details" do + VCR.use_cassette("channel_list_generation") do + workspace = Workspace.new + channels = workspace.channels + + expect(channels[2].id).must_equal "CN9N9ECF8" + expect(channels[2].name).must_equal "random" + expect(channels[2].topic).must_equal "Non-work banter and water cooler conversation" + expect(channels[2].member_count).must_equal 2 end end From 9a17cfd704728cc332a92628156098043e526884 Mon Sep 17 00:00:00 2001 From: Linnea Johnson Date: Fri, 13 Sep 2019 12:02:12 -0700 Subject: [PATCH 14/20] updated channel and user tests --- test/cassettes/channel_instantiation.yml | 77 ++++++++++++++++++++++++ test/channel_test.rb | 50 ++++----------- test/user_test.rb | 52 +++++----------- 3 files changed, 104 insertions(+), 75 deletions(-) diff --git a/test/cassettes/channel_instantiation.yml b/test/cassettes/channel_instantiation.yml index a340abf0..cf069a70 100644 --- a/test/cassettes/channel_instantiation.yml +++ b/test/cassettes/channel_instantiation.yml @@ -77,4 +77,81 @@ http_interactions: you''d prefer to keep out of more focused work-related channels.","creator":"UN7G5G4TF","last_set":1568143132},"previous_names":[],"num_members":2}],"response_metadata":{"next_cursor":""}}' http_version: recorded_at: Wed, 11 Sep 2019 20:52:16 GMT +- request: + method: get + uri: https://slack.com/api/users.list?token= + body: + encoding: US-ASCII + string: '' + headers: + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + User-Agent: + - Ruby + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json; charset=utf-8 + Content-Length: + - '934' + Connection: + - keep-alive + Date: + - Fri, 13 Sep 2019 18:54:43 GMT + Server: + - Apache + X-Content-Type-Options: + - nosniff + X-Slack-Req-Id: + - 220861a4-3307-4dbd-8c33-f1cab4adc367 + X-Oauth-Scopes: + - identify,channels:read,users:read,chat:write:bot + Expires: + - Mon, 26 Jul 1997 05:00:00 GMT + Cache-Control: + - private, no-cache, no-store, must-revalidate + Access-Control-Expose-Headers: + - x-slack-req-id, retry-after + X-Xss-Protection: + - '0' + X-Accepted-Oauth-Scopes: + - users:read + Vary: + - Accept-Encoding + Pragma: + - no-cache + Access-Control-Allow-Headers: + - slack-route, x-slack-version-ts + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Referrer-Policy: + - no-referrer + Access-Control-Allow-Origin: + - "*" + X-Via: + - haproxy-www-wycu + X-Cache: + - Miss from cloudfront + Via: + - 1.1 6bd725b6233f3b787d5f5373be153d66.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - HIO51-C1 + X-Amz-Cf-Id: + - zZ-GhiXLpWYMMlaSs2oHHLRjfeSAD6I83aMPISF-mJmhPwPnpOqUGw== + body: + encoding: ASCII-8BIT + string: '{"ok":true,"members":[{"id":"USLACKBOT","team_id":"TN7G5G3M3","name":"slackbot","deleted":false,"color":"757575","real_name":"Slackbot","tz":null,"tz_label":"Pacific + Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Slackbot","real_name_normalized":"Slackbot","display_name":"Slackbot","display_name_normalized":"Slackbot","fields":null,"status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"sv41d8cd98f0","always_active":true,"first_name":"slackbot","last_name":"","image_24":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_24.png","image_32":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_32.png","image_48":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_48.png","image_72":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_72.png","image_192":"https:\/\/a.slack-edge.com\/80588\/marketing\/img\/avatars\/slackbot\/avatar-slackbot.png","image_512":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_512.png","status_text_canonical":"","team":"TN7G5G3M3"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":0},{"id":"UN7G5G4TF","team_id":"TN7G5G3M3","name":"dianah46","deleted":false,"color":"9f69e7","real_name":"Diana + Han","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Diana + Han","real_name_normalized":"Diana Han","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"gb342b6bf000","first_name":"Diana","last_name":"Han","image_24":"https:\/\/secure.gravatar.com\/avatar\/b342b6bf0000c042ed016ac628b2dd26.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/b342b6bf0000c042ed016ac628b2dd26.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/b342b6bf0000c042ed016ac628b2dd26.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/b342b6bf0000c042ed016ac628b2dd26.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/b342b6bf0000c042ed016ac628b2dd26.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/b342b6bf0000c042ed016ac628b2dd26.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-512.png","status_text_canonical":"","team":"TN7G5G3M3"},"is_admin":true,"is_owner":true,"is_primary_owner":true,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1568143240},{"id":"UN9N9T9LN","team_id":"TN7G5G3M3","name":"linnea.johnson1","deleted":false,"color":"4bbe2e","real_name":"Linnea + Johnson","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Linnea + Johnson","real_name_normalized":"Linnea Johnson","display_name":"Linnea Johnson","display_name_normalized":"Linnea + Johnson","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g62a333e3c5a","image_24":"https:\/\/secure.gravatar.com\/avatar\/62a333e3c5a3b0eb455d4fa82c117c9d.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0009-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/62a333e3c5a3b0eb455d4fa82c117c9d.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0009-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/62a333e3c5a3b0eb455d4fa82c117c9d.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0009-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/62a333e3c5a3b0eb455d4fa82c117c9d.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0009-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/62a333e3c5a3b0eb455d4fa82c117c9d.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0009-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/62a333e3c5a3b0eb455d4fa82c117c9d.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0009-512.png","status_text_canonical":"","team":"TN7G5G3M3"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1568143209,"has_2fa":false}],"cache_ts":1568400883,"response_metadata":{"next_cursor":""}}' + http_version: + recorded_at: Fri, 13 Sep 2019 18:54:43 GMT recorded_with: VCR 5.0.0 diff --git a/test/channel_test.rb b/test/channel_test.rb index 1c3068ca..5d8cf29a 100644 --- a/test/channel_test.rb +++ b/test/channel_test.rb @@ -1,41 +1,17 @@ -# require_relative 'test_helper' -# require 'pry' +require_relative 'test_helper' -# describe "Channel class" do -# before do -# # BASE_URL = "https://slack.com/api/channels.list" -# # TOKEN = ENV["SLACK_TOKEN"] -# @query = { -# token: TOKEN -# } -# end +describe "Channel class" do -# it "can create an instance of Channel" do -# VCR.use_cassette("channel_instantiation") do - -# @response = HTTParty.get(BASE_URL, query: @query) - -# id = "CN9N9ECF8" -# name = "random" -# topic = "Non-work banter and water cooler conversation" -# member_count = 2 -# channel = Channel.new(id, name, topic, member_count) - -# expect(channel).must_be_instance_of Channel -# end -# end + it "can create an instance of Channel" do + VCR.use_cassette("channel_instantiation") do -# it "can return channel details" do -# VCR.use_cassette("channel_list_generation") do + id = "CN9N9ECF8" + name = "random" + topic = "Non-work banter and water cooler conversation" + member_count = 2 + channel = Channel.new(id, name, topic, member_count) -# @response = HTTParty.get(BASE_URL, query: @query) -# #binding.pry - -# expect(@response["channels"][2]["id"]).must_equal "CN9N9ECF8" -# expect(@response["channels"][2]["name"]).must_equal "random" -# expect(@response["channels"][2]["topic"]["value"]).must_equal "Non-work banter and water cooler conversation" -# expect(@response["channels"][2]["num_members"]).must_equal 2 -# end -# end - -# end \ No newline at end of file + expect(channel).must_be_instance_of Channel + end + end +end \ No newline at end of file diff --git a/test/user_test.rb b/test/user_test.rb index 4c11ae7e..47ba202b 100644 --- a/test/user_test.rb +++ b/test/user_test.rb @@ -1,42 +1,18 @@ -# require_relative 'test_helper' -# require 'pry' +require_relative 'test_helper' +require 'pry' -# describe "User class" do -# BASE_URL = "https://slack.com/api/users.list" -# TOKEN = ENV["SLACK_TOKEN"] -# before do - -# @query = { -# token: TOKEN -# } -# end +describe "User class" do -# it "can create an instance" do -# VCR.use_cassette("user_list_generation") do + it "can create an instance" do + VCR.use_cassette("user_list_generation") do -# # @response = HTTParty.get(BASE_URL, query: @query) - -# id = "USLACKBOT" -# name = "slackbot" -# real_name = "Slackbot" -# user = User.new(id, name, real_name) + id = "USLACKBOT" + name = "slackbot" + real_name = "Slackbot" + user = User.new(id, name, real_name) -# expect(user).must_be_instance_of User -# expect(user.id).must_equal "USLACKBOT" -# end -# end - -# it "can return slackbot details" do -# VCR.use_cassette("user_list_generation") do -# user = User.new("USLACKBOT", "slackbot", "Slackbot" ) -# users = User.list - - -# expect(users[0].id).must_equal "USLACKBOT" -# expect(users[0].name).must_equal "slackbot" -# expect(users[0].real_name).must_equal "Slackbot" - -# end -# end - -# end \ No newline at end of file + expect(user).must_be_instance_of User + expect(user.id).must_equal "USLACKBOT" + end + end +end \ No newline at end of file From 200e9f136ef6e79f24e316fd8bc5360d599d8444 Mon Sep 17 00:00:00 2001 From: Diana Han Date: Fri, 13 Sep 2019 12:22:39 -0700 Subject: [PATCH 15/20] created tests for Recipient class --- test/cassettes/workspace.yml | 63 ++++++++++++++++++++++++++++++++++++ test/recipient_test.rb | 41 +++++++++++++++++++++++ 2 files changed, 104 insertions(+) diff --git a/test/cassettes/workspace.yml b/test/cassettes/workspace.yml index c6280d99..b4bc9964 100644 --- a/test/cassettes/workspace.yml +++ b/test/cassettes/workspace.yml @@ -154,4 +154,67 @@ http_interactions: you''d prefer to keep out of more focused work-related channels.","creator":"UN7G5G4TF","last_set":1568143132},"previous_names":[],"num_members":2}],"response_metadata":{"next_cursor":""}}' http_version: recorded_at: Fri, 13 Sep 2019 01:45:21 GMT +- request: + method: get + uri: https://slack.com/api/users.list + body: + encoding: US-ASCII + string: '' + headers: + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + User-Agent: + - Ruby + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json; charset=utf-8 + Content-Length: + - '53' + Connection: + - keep-alive + Date: + - Fri, 13 Sep 2019 19:19:26 GMT + Server: + - Apache + Access-Control-Expose-Headers: + - x-slack-req-id, retry-after + Access-Control-Allow-Headers: + - slack-route, x-slack-version-ts + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Referrer-Policy: + - no-referrer + X-Accepted-Oauth-Scopes: + - users:read + Vary: + - Accept-Encoding + X-Slack-Req-Id: + - '09de2226-d01b-45a5-9ede-33edc331f70e' + X-Xss-Protection: + - '0' + X-Content-Type-Options: + - nosniff + Access-Control-Allow-Origin: + - "*" + X-Via: + - haproxy-www-m81p + X-Cache: + - Miss from cloudfront + Via: + - 1.1 098a28c90e7d4eca5d6cebe57828e74d.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - HIO51-C1 + X-Amz-Cf-Id: + - 8l0IxGRxUXxZy207w73clG56JlOPEF3Zt6lILPBAhHuJujZ1PU8epg== + body: + encoding: ASCII-8BIT + string: '{"ok":false,"error":"not_authed"}' + http_version: + recorded_at: Fri, 13 Sep 2019 19:19:25 GMT recorded_with: VCR 5.0.0 diff --git a/test/recipient_test.rb b/test/recipient_test.rb index 3e7cbe65..8c423eda 100644 --- a/test/recipient_test.rb +++ b/test/recipient_test.rb @@ -1,4 +1,45 @@ require_relative 'test_helper' describe "Recipient class" do + describe "initializer method" do + it "can create an instance" do + recipient = Recipient.new("USLACKBOT", "slackbot") + + expect(recipient).must_be_instance_of Recipient + expect(recipient.id).must_equal "USLACKBOT" + expect(recipient.name).must_equal "slackbot" + end + end + + # describe "get method" do + # it "can return a valid response" do + # BASE_URL = "https://slack.com/api/users.list" + # TOKEN = ENV["SLACK_TOKEN"] + # QUERY = { + # token: TOKEN + # } + # # VCR.use_cassette("workspace") do + + # recipient = Recipient.new("USLACKBOT", "slackbot") + # recipient.get(BASE_URL, QUERY) + + # expect(recipient.get).must_be_true + # # end + # end + # end + + describe "details method" do + it "will raise an error if this method is called" do + recipient = Recipient.new("USLACKBOT", "slackbot") + + proc{recipient.details}.must_raise NotImplementedError + end + end + + describe "self.list method" do + it "will raise an error if this method is called" do + + proc{Recipient.list}.must_raise NotImplementedError + end + end end \ No newline at end of file From 0a9f4eeef7a6128c4ab3aba8cd8a102dc1469bbb Mon Sep 17 00:00:00 2001 From: Linnea Johnson Date: Fri, 13 Sep 2019 14:55:25 -0700 Subject: [PATCH 16/20] added send message method and we are receiving messages to our workspace --- lib/slack.rb | 15 +++++++++++++-- lib/workspace.rb | 11 +++++++++-- 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/lib/slack.rb b/lib/slack.rb index e3b2186a..e03be66a 100755 --- a/lib/slack.rb +++ b/lib/slack.rb @@ -1,10 +1,12 @@ #!/usr/bin/env ruby require_relative 'workspace' require 'pry' +require 'table_print' + def main workspace = Workspace.new - command_table = [{command: 'list users', description: 'lists all users in workspace'}, {command: 'list channels', description: 'lists all channels in workspace'}, {command: 'select user', description: 'selects a user'}, {command: 'select channel', description: 'selects a channel'}, {command: 'details', description: 'shows details of the current recipient'}] + command_table = [{command: 'list users', description: 'lists all users in workspace'}, {command: 'list channels', description: 'lists all channels in workspace'}, {command: 'select user', description: 'selects a user'}, {command: 'select channel', description: 'selects a channel'}, {command: 'details', description: 'shows details of the current recipient'}, {command: 'send message', description: 'sends message to selected recipient'}] puts "Welcome to the Ada Slack CLI!\n\n" @@ -47,12 +49,21 @@ def main workspace.show_details puts "\n\n" end + + when "send message" + if workspace.selected == nil + puts "No recipient selected! Enter another command: " + else + puts "What do you want to send to #{workspace.selected[0].name}?" + message = gets.chomp + workspace.send_message(message) + end when "quit" puts "Thank you for using the Ada Slack CLI!" exit end - #puts "Enter another command or type 'quit' to exit the program." + puts "Enter another command or type 'quit' to exit the program." end end diff --git a/lib/workspace.rb b/lib/workspace.rb index d0530a80..534f532d 100644 --- a/lib/workspace.rb +++ b/lib/workspace.rb @@ -64,6 +64,13 @@ def show_details tp @selected end - # def send_message - # end + def send_message(message) + post_query = { + token: TOKEN, + channel: @selected[0].id, + text: message + } + #binding.pry + HTTParty.post(BASE_URL + "chat.postMessage", query: post_query) + end end \ No newline at end of file From 9e61a4b8406d03e337f12da06ef8371e042224ed Mon Sep 17 00:00:00 2001 From: Diana Han Date: Fri, 13 Sep 2019 15:24:26 -0700 Subject: [PATCH 17/20] created test for send_message method --- .DS_Store | Bin 6148 -> 6148 bytes lib/slack.rb | 1 - lib/workspace.rb | 2 - test/cassettes/workspace.yml | 72 +++++++++++++++++++++++++++++++++++ test/workspace_test.rb | 19 +++++++-- 5 files changed, 88 insertions(+), 6 deletions(-) diff --git a/.DS_Store b/.DS_Store index f9941852968b2dbd8bbf3f87644966376d1d6a80..fe6d9068ae99fb7d8e48778e1de2e3f00b5845c9 100644 GIT binary patch delta 155 zcmZoMXffEJ&185osURn_xWvHVIwKP^3o9Et2L~4i7cWL^s3n;YmTm>8SY)^c))s~XyRCgfID kRoB$k&13)rMn(wDzz?Ni)U3^l%+FXRHt1|-=lIJH09(~0oB#j- delta 220 zcmZoMXffEJ&E)nqsURn_xWvHV1|t(Q3o9Et2PYRdCpRBAXKZjretB?7Vo7PSQ({rP zfJ|^^N@`MKQFvxbNk&L&o@-8OS!$ktkxybt>f{(E&-!SPhJeJ944@(oWrtJ-FyQ3i zj2Doot~NF{)lo1uF{#y2s5Un@&`~fkHmj}W + body: + encoding: UTF-8 + string: '' + headers: + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + User-Agent: + - Ruby + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json; charset=utf-8 + Content-Length: + - '160' + Connection: + - keep-alive + Date: + - Fri, 13 Sep 2019 22:04:25 GMT + Server: + - Apache + X-Content-Type-Options: + - nosniff + X-Slack-Req-Id: + - c74ec2a0-0c0a-4dcd-b382-430043819893 + X-Oauth-Scopes: + - identify,channels:read,users:read,chat:write:bot + Expires: + - Mon, 26 Jul 1997 05:00:00 GMT + Cache-Control: + - private, no-cache, no-store, must-revalidate + Access-Control-Expose-Headers: + - x-slack-req-id, retry-after + X-Xss-Protection: + - '0' + X-Accepted-Oauth-Scopes: + - chat:write:bot + Vary: + - Accept-Encoding + Pragma: + - no-cache + Access-Control-Allow-Headers: + - slack-route, x-slack-version-ts + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Referrer-Policy: + - no-referrer + Access-Control-Allow-Origin: + - "*" + X-Via: + - haproxy-www-4oho + X-Cache: + - Miss from cloudfront + Via: + - 1.1 4db3f26ee4fd9a14a343fada3315105f.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - HIO51-C1 + X-Amz-Cf-Id: + - YUYG9vmJdj9RAcXzIj5ViOQTDM6_dWmX__j8DtXQEJSjpSpct45Rrw== + body: + encoding: ASCII-8BIT + string: '{"ok":true,"channel":"DNDT2SWVD","ts":"1568412265.000100","message":{"type":"message","subtype":"bot_message","text":"hello","ts":"1568412265.000100","username":"Diana''s + App","bot_id":"BN14ERJAV"}}' + http_version: + recorded_at: Fri, 13 Sep 2019 22:04:25 GMT recorded_with: VCR 5.0.0 diff --git a/test/workspace_test.rb b/test/workspace_test.rb index 5cb78200..fa471e43 100644 --- a/test/workspace_test.rb +++ b/test/workspace_test.rb @@ -1,5 +1,4 @@ require_relative 'test_helper' -require 'pry' describe "Workspace class" do before do @@ -19,6 +18,7 @@ expect(@workspace.users).must_be_kind_of Array expect(@workspace.channels).must_be_kind_of Array end + end describe "get_users method" do it "can return user data from Slack API" do @@ -40,7 +40,6 @@ expect(channels[2].name).must_equal "random" expect(channels[2].topic).must_equal "Non-work banter and water cooler conversation" expect(channels[2].member_count).must_equal 2 - end end @@ -68,5 +67,19 @@ end end end -end + + describe "send_message method" do + it "can send a message to the selected user or channel" do + VCR.use_cassette("workspace") do + workspace = Workspace.new + + workspace.select_user("slackbot") + + message = "hello" + new_message = workspace.send_message(message) + + expect(new_message["message"]["text"]).must_equal message + end + end + end end From c2f01726868497d47307cf1e1e1b934874f0f495 Mon Sep 17 00:00:00 2001 From: Linnea Johnson Date: Fri, 13 Sep 2019 16:01:59 -0700 Subject: [PATCH 18/20] minor changes to command line, need to merge --- lib/slack.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/slack.rb b/lib/slack.rb index e03be66a..10e02510 100755 --- a/lib/slack.rb +++ b/lib/slack.rb @@ -43,7 +43,7 @@ def main when "details" if workspace.selected == nil - puts "No recipient selected! Enter another command: " + puts "No recipient selected!" #user_input = gets.chomp else workspace.show_details @@ -52,7 +52,7 @@ def main when "send message" if workspace.selected == nil - puts "No recipient selected! Enter another command: " + puts "No recipient selected!" else puts "What do you want to send to #{workspace.selected[0].name}?" message = gets.chomp From a934e3f12bd83cad7bfed52966200f9ebe237d7f Mon Sep 17 00:00:00 2001 From: Linnea Johnson Date: Fri, 13 Sep 2019 16:16:59 -0700 Subject: [PATCH 19/20] Added colorize gem to CLI for clarity --- lib/slack.rb | 29 +++++++++++++++-------------- lib/user.rb | 1 - test/recipient_test.rb | 17 ----------------- test/user_test.rb | 1 - 4 files changed, 15 insertions(+), 33 deletions(-) diff --git a/lib/slack.rb b/lib/slack.rb index 10e02510..3c2eb998 100755 --- a/lib/slack.rb +++ b/lib/slack.rb @@ -1,17 +1,16 @@ -#!/usr/bin/env ruby require_relative 'workspace' -require 'pry' require 'table_print' +require 'colorize' def main workspace = Workspace.new - command_table = [{command: 'list users', description: 'lists all users in workspace'}, {command: 'list channels', description: 'lists all channels in workspace'}, {command: 'select user', description: 'selects a user'}, {command: 'select channel', description: 'selects a channel'}, {command: 'details', description: 'shows details of the current recipient'}, {command: 'send message', description: 'sends message to selected recipient'}] + command_table = [{command: 'list users', description: 'lists all users'}, {command: 'list channels', description: 'lists all channels'}, {command: 'select user', description: 'selects a user'}, {command: 'select channel', description: 'selects a channel'}, {command: 'details', description: 'shows recipient details'}, {command: 'send message', description: 'sends message to recipient'}] - puts "Welcome to the Ada Slack CLI!\n\n" + puts "Welcome to the Ada Slack CLI!\n\n".colorize(:light_cyan) tp command_table - puts "\n\nWhat would you like to do? Enter a command from the list above: " + puts "\n\nWhat would you like to do? Enter a command from the list above: ".colorize(:light_cyan) user_input = "" @@ -26,25 +25,24 @@ def main workspace.display_channels when "select user" - puts "Enter the name or slack id of the user: " + puts "Enter the name or slack id of the user: ".colorize(:light_cyan) user_input = gets.chomp if workspace.select_user(user_input) == [] - puts "Invalid entry! Please enter another user: " + puts "Invalid entry! Please enter another user: ".colorize(:red) user_input = gets.chomp end when "select channel" - puts "Enter the name or slack id of the channel: " + puts "Enter the name or slack id of the channel: ".colorize(:light_cyan) user_input = gets.chomp if workspace.select_channel(user_input) == [] - puts "Invalid entry! Please enter another channel: " + puts "Invalid entry! Please enter another channel: ".colorize(:red) user_input = gets.chomp end when "details" if workspace.selected == nil - puts "No recipient selected!" - #user_input = gets.chomp + puts "No recipient selected!".colorize(:red) else workspace.show_details puts "\n\n" @@ -52,7 +50,7 @@ def main when "send message" if workspace.selected == nil - puts "No recipient selected!" + puts "No recipient selected!".colorize(:red) else puts "What do you want to send to #{workspace.selected[0].name}?" message = gets.chomp @@ -60,10 +58,13 @@ def main end when "quit" - puts "Thank you for using the Ada Slack CLI!" + puts "Thank you for using the Ada Slack CLI!".colorize(:light_cyan) exit + + else + puts "Invalid command!".colorize(:red) end - puts "Enter another command or type 'quit' to exit the program." + puts "Enter another command or type 'quit' to exit the program.".colorize(:light_cyan) end end diff --git a/lib/user.rb b/lib/user.rb index 3dee028d..e5c0850a 100644 --- a/lib/user.rb +++ b/lib/user.rb @@ -17,7 +17,6 @@ def initialize(id, name, real_name) super(id, name) @real_name = real_name end - end diff --git a/test/recipient_test.rb b/test/recipient_test.rb index 8c423eda..29e252ae 100644 --- a/test/recipient_test.rb +++ b/test/recipient_test.rb @@ -11,23 +11,6 @@ end end - # describe "get method" do - # it "can return a valid response" do - # BASE_URL = "https://slack.com/api/users.list" - # TOKEN = ENV["SLACK_TOKEN"] - # QUERY = { - # token: TOKEN - # } - # # VCR.use_cassette("workspace") do - - # recipient = Recipient.new("USLACKBOT", "slackbot") - # recipient.get(BASE_URL, QUERY) - - # expect(recipient.get).must_be_true - # # end - # end - # end - describe "details method" do it "will raise an error if this method is called" do recipient = Recipient.new("USLACKBOT", "slackbot") diff --git a/test/user_test.rb b/test/user_test.rb index 47ba202b..8218afa3 100644 --- a/test/user_test.rb +++ b/test/user_test.rb @@ -1,5 +1,4 @@ require_relative 'test_helper' -require 'pry' describe "User class" do From d8485316a3229a1fc783abe8f409176eac6ff8e6 Mon Sep 17 00:00:00 2001 From: Linnea Johnson Date: Wed, 13 Nov 2019 23:40:10 -0800 Subject: [PATCH 20/20] Made changes to original pair project to match instructor design more closely --- lib/channel.rb | 32 +++++++++++++---- lib/recipient.rb | 35 ++++++++++--------- lib/slack.rb | 2 +- lib/user.rb | 41 ++++++++++++++-------- lib/workspace.rb | 91 ++++++++++++++++++++---------------------------- 5 files changed, 110 insertions(+), 91 deletions(-) diff --git a/lib/channel.rb b/lib/channel.rb index 0f0c7b43..f37a8072 100644 --- a/lib/channel.rb +++ b/lib/channel.rb @@ -4,12 +4,32 @@ Dotenv.load -class Channel < Recipient - attr_reader :id, :name, :topic, :member_count +module Slack + class Channel < Recipient + BASE_URL = "https://slack.com/api/channels.list" + TOKEN = ENV["SLACK_TOKEN"] + QUERY = { + token: TOKEN + } + attr_reader :id, :name, :topic, :member_count - def initialize(id, name, topic, member_count) - super(id, name) - @topic = topic - @member_count = member_count + def initialize(id, name, topic, member_count) + super(id, name) + @topic = topic + @member_count = member_count + end + end + + def self.list + response = self.get(BASE_URL + "channels.list", query: QUERY) + + channels = response["channels"].map do |channel| + self.new(channel["id"], channel["name"], channel["topic"]["value"], channel["num_members"]) + end + return channels + end + + def details + super.push("topic", "member_count") end end \ No newline at end of file diff --git a/lib/recipient.rb b/lib/recipient.rb index 9c95a7a1..e9f1b414 100644 --- a/lib/recipient.rb +++ b/lib/recipient.rb @@ -1,23 +1,26 @@ -class Recipient - attr_reader :id, :name +module Slack + class Recipient + URL = "https://slack.com/api/chat.postMessage" - def initialize(id, name) - @id = id - @name = name - end + attr_reader :id, :name - def get(url, query) - return HTTParty.get(url, query) - end + def initialize(id, name) + @id = id + @name = name + end - # ABSTRACT METHODS - def details - raise NotImplementedError, "Implement me in a child class!" - end + def get(url, query) + return HTTParty.get(url, query) + end - def self.list - raise NotImplementedError, "Implement me in a child class!" + # ABSTRACT METHODS + def details + raise NotImplementedError, "Implement me in a child class!" + end + + def self.list + raise NotImplementedError, "Implement me in a child class!" + end end end - diff --git a/lib/slack.rb b/lib/slack.rb index 3c2eb998..7bd65c38 100755 --- a/lib/slack.rb +++ b/lib/slack.rb @@ -3,7 +3,7 @@ require 'colorize' def main - workspace = Workspace.new + workspace = Slack::Workspace.new command_table = [{command: 'list users', description: 'lists all users'}, {command: 'list channels', description: 'lists all channels'}, {command: 'select user', description: 'selects a user'}, {command: 'select channel', description: 'selects a channel'}, {command: 'details', description: 'shows recipient details'}, {command: 'send message', description: 'sends message to recipient'}] diff --git a/lib/user.rb b/lib/user.rb index e5c0850a..52769c0d 100644 --- a/lib/user.rb +++ b/lib/user.rb @@ -4,21 +4,34 @@ Dotenv.load -class User < Recipient - BASE_URL = "https://slack.com/api/users.list" - TOKEN = ENV["SLACK_TOKEN"] - - QUERY = { - token: TOKEN} - - attr_reader :id, :name, :real_name - - def initialize(id, name, real_name) - super(id, name) - @real_name = real_name - end -end +module Slack + class User < Recipient + BASE_URL = "https://slack.com/api/users.list" + TOKEN = ENV["SLACK_TOKEN"] + + QUERY = { + token: TOKEN} + + attr_reader :id, :name, :real_name + + def initialize(id, name, real_name) + super(id, name) + @real_name = real_name + end + + def self.list + response = self.get(BASE_URL, query: QUERY) + users = response["members"].map do |member| + self.new(member["id"], member["name"], member["real_name"]) + end + return users + end + def details + super << "real_name" + end + end +end diff --git a/lib/workspace.rb b/lib/workspace.rb index 80f1e511..4c56b2dd 100644 --- a/lib/workspace.rb +++ b/lib/workspace.rb @@ -6,69 +6,52 @@ Dotenv.load -class Workspace < Recipient - BASE_URL = "https://slack.com/api/" - TOKEN = ENV["SLACK_TOKEN"] - QUERY = { - token: TOKEN - } - - attr_reader :users, :channels - attr_accessor :selected - - def initialize - @users = self.get_users - @channels = self.get_channels - @selected = nil - end +module Slack + class Workspace < Recipient + BASE_URL = "https://slack.com/api/" + TOKEN = ENV["SLACK_TOKEN"] + QUERY = { + token: TOKEN + } - def get_users - response = self.get(BASE_URL + "users.list", query: QUERY) + attr_reader :users, :channels + attr_accessor :selected - users = response["members"].map do |member| - User.new(member["id"], member["name"], member["real_name"]) + def initialize + @users = User.list + @channels = Channel.list + @selected = nil end - return users - end - - def get_channels - response = self.get(BASE_URL + "channels.list", query: QUERY) - - channels = response["channels"].map do |channel| - Channel.new(channel["id"], channel["name"], channel["topic"]["value"], channel["num_members"]) + def display_users + tp @users, :id, :name, :real_name + puts "\n\n" end - return channels - end - - def display_users - tp @users, :id, :name, :real_name - puts "\n\n" - end - def display_channels - tp @channels, :id, :name, :topic, :member_count - puts "\n\n" - end + def display_channels + tp @channels, :id, :name, :topic, :member_count + puts "\n\n" + end - def select_user(user_input) - @selected = users.select { |user| user.name == user_input || user.id == user_input } - end + def select_user(user_input) + @selected = users.select { |user| user.name == user_input || user.id == user_input } + end - def select_channel(user_input) - @selected = channels.select { |channel| channel.name == user_input || channel.id == user_input } - end + def select_channel(user_input) + @selected = channels.select { |channel| channel.name == user_input || channel.id == user_input } + end - def show_details - tp @selected - end + def show_details + tp @selected + end - def send_message(message) - post_query = { - token: TOKEN, - channel: @selected[0].id, - text: message - } - HTTParty.post(BASE_URL + "chat.postMessage", query: post_query) + def send_message(message) + post_query = { + token: TOKEN, + channel: @selected[0].id, + text: message + } + HTTParty.post(BASE_URL + "chat.postMessage", query: post_query) + end end end \ No newline at end of file