From 3f460c9199710bbb56ffe47101809349378753b3 Mon Sep 17 00:00:00 2001 From: dnsrocha Date: Tue, 6 Oct 2020 17:13:04 -0700 Subject: [PATCH 01/20] added VCR configurations, added workspace.rb --- .gitignore | 1 + lib/workspace.rb | 8 ++++++++ test/test_helper.rb | 6 ++++++ 3 files changed, 15 insertions(+) create mode 100644 lib/workspace.rb diff --git a/.gitignore b/.gitignore index 3ff4fada..ceddff23 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,4 @@ # Ignore environemnt variables .env + diff --git a/lib/workspace.rb b/lib/workspace.rb new file mode 100644 index 00000000..f1b006f1 --- /dev/null +++ b/lib/workspace.rb @@ -0,0 +1,8 @@ +class Workspace + + attr_reader :users, :channels + + def Initialize + @users = + end +end \ No newline at end of file diff --git a/test/test_helper.rb b/test/test_helper.rb index 1fcf2bab..4514d80d 100644 --- a/test/test_helper.rb +++ b/test/test_helper.rb @@ -8,6 +8,9 @@ require 'minitest/reporters' require 'minitest/skip_dsl' require 'vcr' +require 'dotenv' + +Dotenv.load Minitest::Reporters.use! Minitest::Reporters::SpecReporter.new @@ -25,5 +28,8 @@ } # Don't leave our token lying around in a cassette file. + config.filter_sensitive_data("SLACK_TOKEN") do + ENV["SLACK_TOKEN"] + end end From c7bca70ec1bb72bb94025e3aae91789d57f53c10 Mon Sep 17 00:00:00 2001 From: dnsrocha Date: Tue, 6 Oct 2020 17:49:55 -0700 Subject: [PATCH 02/20] finished design requirements --- lib/slack.rb | 6 ++++++ lib/workspace.rb | 3 ++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/lib/slack.rb b/lib/slack.rb index 8a0b659b..4750ebdd 100755 --- a/lib/slack.rb +++ b/lib/slack.rb @@ -1,4 +1,10 @@ #!/usr/bin/env ruby +require 'dotenv' +require 'httparty' + +require_relative 'workspace.rb' + +Dotenv.load def main puts "Welcome to the Ada Slack CLI!" diff --git a/lib/workspace.rb b/lib/workspace.rb index f1b006f1..063e44d3 100644 --- a/lib/workspace.rb +++ b/lib/workspace.rb @@ -3,6 +3,7 @@ class Workspace attr_reader :users, :channels def Initialize - @users = + @users = [] + @channels= [] end end \ No newline at end of file From 2d1ac1a251b62a0be9f5147ca26362013f23c285 Mon Sep 17 00:00:00 2001 From: dnsrocha Date: Wed, 7 Oct 2020 12:05:21 -0700 Subject: [PATCH 03/20] started wave 1 options list --- lib/slack.rb | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/lib/slack.rb b/lib/slack.rb index 4750ebdd..b36754aa 100755 --- a/lib/slack.rb +++ b/lib/slack.rb @@ -10,9 +10,38 @@ def main puts "Welcome to the Ada Slack CLI!" workspace = Workspace.new + options_list + choice = get_user_input + # TODO project puts "Thank you for using the Ada Slack CLI" end +def options_list + print "Choose from the following:\n" + puts "list users\nlist channels\nquit" +end + +def get_user_input + user_choice = gets.chomp + options = ["list users", "list channels", "quit"] + + unless options.include?(user_choice) + puts "Invalid option. Please type: list users, list channels, or quit" + user_choice = gets.chomp + end + return user_choice +end + +def execute_choice(workspace, choice) + #if choice is list users, show a list of all users in slack workspace (username, real name, slack id) + # if choice is list channels, show a list of all channel in slack workspace (channels name, topic, member county, slack id) + # if choice is quit, program will exit + # program has to run unless choice is quit + + + +end + main if __FILE__ == $PROGRAM_NAME \ No newline at end of file From 7eb4e48e90ca3d3be6d240573f43696ef20fd193 Mon Sep 17 00:00:00 2001 From: dnsrocha Date: Wed, 7 Oct 2020 15:29:15 -0700 Subject: [PATCH 04/20] Wave 1 done --- lib/slack.rb | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/lib/slack.rb b/lib/slack.rb index b36754aa..c31917f4 100755 --- a/lib/slack.rb +++ b/lib/slack.rb @@ -1,6 +1,7 @@ #!/usr/bin/env ruby require 'dotenv' require 'httparty' +require 'table_print' require_relative 'workspace.rb' @@ -11,8 +12,9 @@ def main workspace = Workspace.new options_list - choice = get_user_input + choice = get_user_choice + execute_choice(workspace, choice) # TODO project puts "Thank you for using the Ada Slack CLI" @@ -23,25 +25,27 @@ def options_list puts "list users\nlist channels\nquit" end -def get_user_input +def get_user_choice user_choice = gets.chomp options = ["list users", "list channels", "quit"] - unless options.include?(user_choice) + until options.include?(user_choice) puts "Invalid option. Please type: list users, list channels, or quit" user_choice = gets.chomp end + return user_choice end def execute_choice(workspace, choice) - #if choice is list users, show a list of all users in slack workspace (username, real name, slack id) - # if choice is list channels, show a list of all channel in slack workspace (channels name, topic, member county, slack id) - # if choice is quit, program will exit - # program has to run unless choice is quit - - - + until choice == "quit" + if choice == "list users" + tp workspace.users "username", "real_name", "slack_id" + puts "\n" + elsif choice == "list channels" + tp workspace.channels "name", "topic", "member_count", "slack_id" + end + end end main if __FILE__ == $PROGRAM_NAME \ No newline at end of file From 4db308ab9e5f166e2ea7b8f6006a335775ebdfb4 Mon Sep 17 00:00:00 2001 From: dnsrocha Date: Wed, 7 Oct 2020 16:11:32 -0700 Subject: [PATCH 05/20] Completed menu options_list, get_user_choice and execute_choice with wave 2 requirements --- lib/slack.rb | 28 +++++++++++++++++++++++++--- lib/workspace.rb | 4 ++++ 2 files changed, 29 insertions(+), 3 deletions(-) diff --git a/lib/slack.rb b/lib/slack.rb index c31917f4..f3f845ef 100755 --- a/lib/slack.rb +++ b/lib/slack.rb @@ -22,15 +22,15 @@ def main def options_list print "Choose from the following:\n" - puts "list users\nlist channels\nquit" + puts "list users\nlist channels\nselect user\nselect channel\ndetails\nquit" end def get_user_choice user_choice = gets.chomp - options = ["list users", "list channels", "quit"] + options = ["list users", "list channels", "quit", "select user", "select channel", "details"] until options.include?(user_choice) - puts "Invalid option. Please type: list users, list channels, or quit" + puts "Invalid option. Please type: list users, list channels, select user, select channel, details or quit" user_choice = gets.chomp end @@ -38,13 +38,35 @@ def get_user_choice end def execute_choice(workspace, choice) + given_user = nil + given_channel = nil until choice == "quit" if choice == "list users" tp workspace.users "username", "real_name", "slack_id" puts "\n" elsif choice == "list channels" tp workspace.channels "name", "topic", "member_count", "slack_id" + elsif choice == "select user" + print "Please enter username or user Slack ID" + user_info = gets.chomp + given_user = workspace.select_user(given_user) + elsif choice == "select channel" + print "Please select channel name or channel Slack ID" + channel_info = gets.chomp + given_channel = workspace.select_channel(given_channel) + elsif choice == "details" + if given_user != nil + tp given_user.details + elsif given_channel != nil + tp given_channel.details + else + puts "No user or channel selected" + end end + + puts "*********************" + options_list + choice = get_user_choice end end diff --git a/lib/workspace.rb b/lib/workspace.rb index 063e44d3..91d33b06 100644 --- a/lib/workspace.rb +++ b/lib/workspace.rb @@ -6,4 +6,8 @@ def Initialize @users = [] @channels= [] end + + def select_user(user) + raise NotImplementedError + end end \ No newline at end of file From 245c176c996f70e8e7ba871a7c7595d796f3c8e6 Mon Sep 17 00:00:00 2001 From: dnsrocha Date: Wed, 7 Oct 2020 16:59:13 -0700 Subject: [PATCH 06/20] implement user class, defined methods to be implemented by workspace.rb, created channels.rb --- lib/channel.rb | 1 + lib/user.rb | 25 +++++++++++++++++++++++++ lib/workspace.rb | 7 +++++++ 3 files changed, 33 insertions(+) create mode 100644 lib/channel.rb create mode 100644 lib/user.rb diff --git a/lib/channel.rb b/lib/channel.rb new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/lib/channel.rb @@ -0,0 +1 @@ + diff --git a/lib/user.rb b/lib/user.rb new file mode 100644 index 00000000..baecd453 --- /dev/null +++ b/lib/user.rb @@ -0,0 +1,25 @@ +require 'dotenv' +require 'httparty' + +Dotenv.load + + +class User + attr_reader :name, :slack_id, :real_name + + def initialize(name, slack_id, real_name) + @name = name + @slack_id = slack_id + @real_name = real_name + end + + def details + return [{"name" => @name,"slack_id" => @slack_id, "real_name"=> @real_name }] + end + + def self.load_all + url = https://slack.com/api/users.list + params = {token: ENV['SLACK_TOKEN'], } + response = self.get(url, params) + end +end \ No newline at end of file diff --git a/lib/workspace.rb b/lib/workspace.rb index 91d33b06..a79e41e3 100644 --- a/lib/workspace.rb +++ b/lib/workspace.rb @@ -10,4 +10,11 @@ def Initialize def select_user(user) raise NotImplementedError end + + def select_channel(channel) + raise NotImplementedError + + end + + end \ No newline at end of file From bdb68541262b205a2e7b40b949911eb431eb97e6 Mon Sep 17 00:00:00 2001 From: dnsrocha Date: Wed, 7 Oct 2020 19:49:38 -0700 Subject: [PATCH 07/20] small changes + started final implementations for wave 1 and 2 --- lib/slack.rb | 14 +++++++------- lib/user.rb | 15 ++++++++++----- lib/workspace.rb | 5 ++++- 3 files changed, 21 insertions(+), 13 deletions(-) diff --git a/lib/slack.rb b/lib/slack.rb index f3f845ef..fa0896b3 100755 --- a/lib/slack.rb +++ b/lib/slack.rb @@ -42,18 +42,18 @@ def execute_choice(workspace, choice) given_channel = nil until choice == "quit" if choice == "list users" - tp workspace.users "username", "real_name", "slack_id" + tp workspace.users, "username", "real_name", "slack_id" puts "\n" elsif choice == "list channels" - tp workspace.channels "name", "topic", "member_count", "slack_id" + tp workspace.channels, "name", "topic", "member_count", "slack_id" elsif choice == "select user" - print "Please enter username or user Slack ID" + print "Please enter user name or user Slack ID: " user_info = gets.chomp - given_user = workspace.select_user(given_user) + given_user = workspace.select_user(user_info) elsif choice == "select channel" - print "Please select channel name or channel Slack ID" + print "Please select channel name or channel Slack ID: " channel_info = gets.chomp - given_channel = workspace.select_channel(given_channel) + given_channel = workspace.select_channel(channel_info) elsif choice == "details" if given_user != nil tp given_user.details @@ -64,7 +64,7 @@ def execute_choice(workspace, choice) end end - puts "*********************" + puts "***\n" options_list choice = get_user_choice end diff --git a/lib/user.rb b/lib/user.rb index baecd453..99251d6c 100644 --- a/lib/user.rb +++ b/lib/user.rb @@ -17,9 +17,14 @@ def details return [{"name" => @name,"slack_id" => @slack_id, "real_name"=> @real_name }] end - def self.load_all - url = https://slack.com/api/users.list - params = {token: ENV['SLACK_TOKEN'], } - response = self.get(url, params) - end + # def self.load_all + # url = "https://slack.com/api/users.list" + # params = {token: ENV['SLACK_TOKEN'], } + # response = self.get(url, params) --> self.get must be implemented on recipients + # users = [] + # response["all_users"].each do |user| + # users.push(User.new(name: user["name"], slack_id: user["id"], real_name: user["real_name"])) + # end + # return users + # end end \ No newline at end of file diff --git a/lib/workspace.rb b/lib/workspace.rb index a79e41e3..36c46e43 100644 --- a/lib/workspace.rb +++ b/lib/workspace.rb @@ -1,9 +1,12 @@ +require_relative 'channel.rb' +require_relative 'user.rb' + class Workspace attr_reader :users, :channels def Initialize - @users = [] + @users = User.load_all @channels= [] end From 3235880422a6b1f66439ce8e8d1c499ebe7e6eab Mon Sep 17 00:00:00 2001 From: dnsrocha Date: Thu, 8 Oct 2020 11:49:24 -0700 Subject: [PATCH 08/20] changes to the .rb files need to fix errors in list users/list channels --- lib/channel.rb | 32 ++++++++++++++++++++++++++++++++ lib/recipient.rb | 30 ++++++++++++++++++++++++++++++ lib/slack.rb | 2 +- lib/user.rb | 25 ++++++++++++++----------- lib/workspace.rb | 35 +++++++++++++++++++++++++++++------ 5 files changed, 106 insertions(+), 18 deletions(-) create mode 100644 lib/recipient.rb diff --git a/lib/channel.rb b/lib/channel.rb index 8b137891..88fa4da1 100644 --- a/lib/channel.rb +++ b/lib/channel.rb @@ -1 +1,33 @@ +require_relative 'recipient.rb' +require 'httparty' +require 'dotenv' +Dotenv.load + +class Channel < Recipient + attr_reader :name, :slack_id, :member_count, :topic + + def initialize(name, slack_id, member_count, topic) + @name = name + @slack_id = slack_id + @member_count = member_count + @topic = topic + end + + def details + return [{"name" => @name, "slack_id" => @slack_id, "member_count" => @member_count, "topic" => @member_count}] + end + + def self.load_all + url = " https://slack.com/api/conversations.list" + params = { + token: ENV['SLACK_TOKEN'], + } + response = self.get(url, params) + channels_array = [] + response["channels"].each do |channel| + channels_array.push(Channel.new(name: channel["name"], slack_id: channel["slack_id"], member_count: channel["members"].length, topic: ["topic"]["value"])) + end + return channels_array + end +end diff --git a/lib/recipient.rb b/lib/recipient.rb new file mode 100644 index 00000000..b72bfdd4 --- /dev/null +++ b/lib/recipient.rb @@ -0,0 +1,30 @@ +require 'httparty' +require 'dotenv' + +Dotenv.load + +class Recipient + attr_reader :slack_id, :name + + def initialize(slack_id) + @slack_id = slack_id + @name = "" + end + + def self.get(url, params) + response = HTTParty.get(url,query: params) + + raise ArgumentError.new("Invalid Get Request") if response ["ok"] != true + + return response + end + + def details + #will be implemented in child class + end + + def self.list_all + #will be implemented in child class + end + +end \ No newline at end of file diff --git a/lib/slack.rb b/lib/slack.rb index fa0896b3..83ebf37b 100755 --- a/lib/slack.rb +++ b/lib/slack.rb @@ -42,7 +42,7 @@ def execute_choice(workspace, choice) given_channel = nil until choice == "quit" if choice == "list users" - tp workspace.users, "username", "real_name", "slack_id" + tp workspace.users, "user name", "real_name", "slack_id" puts "\n" elsif choice == "list channels" tp workspace.channels, "name", "topic", "member_count", "slack_id" diff --git a/lib/user.rb b/lib/user.rb index 99251d6c..98700400 100644 --- a/lib/user.rb +++ b/lib/user.rb @@ -1,10 +1,11 @@ +require_relative 'recipient.rb' require 'dotenv' require 'httparty' Dotenv.load -class User +class User < Recipient attr_reader :name, :slack_id, :real_name def initialize(name, slack_id, real_name) @@ -17,14 +18,16 @@ def details return [{"name" => @name,"slack_id" => @slack_id, "real_name"=> @real_name }] end - # def self.load_all - # url = "https://slack.com/api/users.list" - # params = {token: ENV['SLACK_TOKEN'], } - # response = self.get(url, params) --> self.get must be implemented on recipients - # users = [] - # response["all_users"].each do |user| - # users.push(User.new(name: user["name"], slack_id: user["id"], real_name: user["real_name"])) - # end - # return users - # end + def self.load_all + url = "https://slack.com/api/users.list" + params = { + token: ENV['SLACK_TOKEN'], + } + response = self.get(url, params) + users_array = [] + response["members"].each do |user| + users_array.push(User.new(name: user["name"], slack_id: user["slack_id"], real_name: user["real_name"])) + end + return users_array + end end \ No newline at end of file diff --git a/lib/workspace.rb b/lib/workspace.rb index 36c46e43..e007f55f 100644 --- a/lib/workspace.rb +++ b/lib/workspace.rb @@ -3,20 +3,43 @@ class Workspace - attr_reader :users, :channels + attr_reader :users, :channels, :selected_user, :selected_channel def Initialize @users = User.load_all - @channels= [] + @channels= Channel.load_all + @selected_user = nil + @selected_channel = nil end - def select_user(user) - raise NotImplementedError + def select_user(user_info) + name_search = @users.find{|user| user.name == user_info} + + id_search = @users.find{|user| user.slack_id == user_info} + + if name_search.nil? + @selected_user = id_search + elsif id_search.nil? + @selected_user = name_search + else + puts "Invalid User name or ID" + end + return @selected_user end - def select_channel(channel) - raise NotImplementedError + def select_channel(channel_info) + name_search = @channels.find{|channel| channel.name == channel_info} + + id_search = @channels.find{|channel| channel.slack_id == channel_info} + if name_search.nil? + @selected_channel = id_search + elsif id_search.nil? + @selected_channel = name_search + else + puts "Invalid Channel name or ID" + end + return @selected_channel end From c797ca6468a1ac2344e00fa27f78ac38f6f94479 Mon Sep 17 00:00:00 2001 From: dnsrocha Date: Thu, 8 Oct 2020 15:16:27 -0700 Subject: [PATCH 09/20] fixed bugs + correct synthax in parent and child classes. --- lib/channel.rb | 58 +++++++++++++++++++++++++++++++-------------- lib/recipient.rb | 33 +++++++++++++++++++++----- lib/user.rb | 61 +++++++++++++++++++++++++++++++++--------------- lib/workspace.rb | 11 +++++---- 4 files changed, 117 insertions(+), 46 deletions(-) diff --git a/lib/channel.rb b/lib/channel.rb index 88fa4da1..bda08637 100644 --- a/lib/channel.rb +++ b/lib/channel.rb @@ -1,33 +1,57 @@ require_relative 'recipient.rb' require 'httparty' -require 'dotenv' +require 'table_print' -Dotenv.load +# require 'dotenv' + +# Dotenv.load class Channel < Recipient - attr_reader :name, :slack_id, :member_count, :topic + attr_reader :member_count, :topic def initialize(name, slack_id, member_count, topic) - @name = name - @slack_id = slack_id + super(slack_id, name) @member_count = member_count @topic = topic end - def details - return [{"name" => @name, "slack_id" => @slack_id, "member_count" => @member_count, "topic" => @member_count}] - end + # def details + # return [{"name" => @name, "slack_id" => @slack_id, "member_count" => @member_count, "topic" => @member_count}] + # end + # + # def self.load_all + # url = " https://slack.com/api/conversations.list" + # params = { + # token: ENV['SLACK_TOKEN'], + # } + # response = self.get(url, params) + # channels_array = [] + # response["channels"].each do |channel| + # channels_array.push(Channel.new(name: channel["name"], slack_id: channel["slack_id"], member_count: channel["members"].length, topic: ["topic"]["value"])) + # end + # return channels_array + # end - def self.load_all - url = " https://slack.com/api/conversations.list" - params = { - token: ENV['SLACK_TOKEN'], - } - response = self.get(url, params) - channels_array = [] + def self.get + response = super.find {|response| response ["channels"]} + channels = [] response["channels"].each do |channel| - channels_array.push(Channel.new(name: channel["name"], slack_id: channel["slack_id"], member_count: channel["members"].length, topic: ["topic"]["value"])) + name = channel["name"] + slack_id = channel["id"] + topic = channel["topic"]["value"] + member_count = channel["num_members"] + + channels << self.new(slack_id, name, topic, member_count ) end - return channels_array + return channels + end + + def details + return "Channel name: #{name}\nSlack ID: #{slack_id}\nTopic: #{topic}\nMember count: #{member_count}" + end + + + def self.list_all + tp self.get, :name, :slack_id, :topic, :member_count end end diff --git a/lib/recipient.rb b/lib/recipient.rb index b72bfdd4..e5d30f97 100644 --- a/lib/recipient.rb +++ b/lib/recipient.rb @@ -6,25 +6,46 @@ class Recipient attr_reader :slack_id, :name + TOKEN = ENV['SLACK_TOKEN'] + URL = "https://slack.com/api/" + def initialize(slack_id) @slack_id = slack_id @name = "" end - def self.get(url, params) - response = HTTParty.get(url,query: params) - - raise ArgumentError.new("Invalid Get Request") if response ["ok"] != true - - return response + # def self.get(url, params) + # response = HTTParty.get(url,query: params) + # + # raise ArgumentError.new("Invalid Get Request") if response ["ok"] != true + # + # return response + # end + + def self.get + param = { + token: TOKEN + } + users = HTTParty.get(URL + "users.list", query: param) + channels = HTTParty.get(URL + "channels.list", query: param) + response = [users, channels] + + if response[0]["ok"] == true + return response + else + raise ArgumentError.new("Invalid request") + end end + def details #will be implemented in child class + raise NotImplementedError end def self.list_all #will be implemented in child class + raise NotImplementedError end end \ No newline at end of file diff --git a/lib/user.rb b/lib/user.rb index 98700400..266d44a6 100644 --- a/lib/user.rb +++ b/lib/user.rb @@ -1,33 +1,56 @@ require_relative 'recipient.rb' -require 'dotenv' +# require 'dotenv' require 'httparty' - -Dotenv.load +require 'table_print' +# Dotenv.load class User < Recipient - attr_reader :name, :slack_id, :real_name + attr_reader :real_name def initialize(name, slack_id, real_name) - @name = name - @slack_id = slack_id + super(name, slack_id) @real_name = real_name end + # def details + # return [{"name" => @name,"slack_id" => @slack_id, "real_name"=> @real_name }] + # end + # + # #def self.load_all + # # url = "https://slack.com/api/users.list" + # # params = { + # # token: ENV['SLACK_TOKEN'], + # # } + # # response = self.get(url, params) + # # users_array = [] + # # response["members"].each do |user| + # # users_array.push(User.new(name: user["name"], slack_id: user["slack_id"], real_name: user["real_name"])) + # # end + # # return users_array + # # end + + def self.get + response = super.find {|response| response["members"]} + users = [] + response["members"].each do |member| + name = member["name"] + slack_id = member["id"] + real_name = member["real name"] + + users << self.new(slack_id, name, real_name) + end + return users + end + def details - return [{"name" => @name,"slack_id" => @slack_id, "real_name"=> @real_name }] + return "User name: #{name}\nSlack ID: #{slack_id}\nReal name: #{real_name}\n" end - def self.load_all - url = "https://slack.com/api/users.list" - params = { - token: ENV['SLACK_TOKEN'], - } - response = self.get(url, params) - users_array = [] - response["members"].each do |user| - users_array.push(User.new(name: user["name"], slack_id: user["slack_id"], real_name: user["real_name"])) - end - return users_array + def self.list_all + tp self.get, :name, :real_name, :slack_id end -end \ No newline at end of file +end + + + diff --git a/lib/workspace.rb b/lib/workspace.rb index e007f55f..7ff5bb4b 100644 --- a/lib/workspace.rb +++ b/lib/workspace.rb @@ -3,11 +3,12 @@ class Workspace - attr_reader :users, :channels, :selected_user, :selected_channel + attr_reader :users, :channels + attr_accessor :selected_user, :selected_channel # check if attr_accessor makes sense def Initialize - @users = User.load_all - @channels= Channel.load_all + @users = User.get + @channels= Channel.get @selected_user = nil @selected_channel = nil end @@ -42,5 +43,7 @@ def select_channel(channel_info) return @selected_channel end - + # def show_details + # + # end end \ No newline at end of file From 442250b87b87e42988e80e7af6a8a5e8ce2317ee Mon Sep 17 00:00:00 2001 From: dnsrocha Date: Thu, 8 Oct 2020 16:00:21 -0700 Subject: [PATCH 10/20] started to write user tests --- lib/slack.rb | 10 ++++++++-- test/channel_test.rb | 1 + test/recipient_test.rb | 1 + test/user_test.rb | 22 ++++++++++++++++++++++ test/workspace_test.rb | 1 + 5 files changed, 33 insertions(+), 2 deletions(-) create mode 100644 test/channel_test.rb create mode 100644 test/recipient_test.rb create mode 100644 test/user_test.rb create mode 100644 test/workspace_test.rb diff --git a/lib/slack.rb b/lib/slack.rb index 83ebf37b..bd17bbd9 100755 --- a/lib/slack.rb +++ b/lib/slack.rb @@ -42,18 +42,24 @@ def execute_choice(workspace, choice) given_channel = nil until choice == "quit" if choice == "list users" - tp workspace.users, "user name", "real_name", "slack_id" + # tp workspace.users, "user name", "real_name", "slack_id" + User.list_all puts "\n" elsif choice == "list channels" - tp workspace.channels, "name", "topic", "member_count", "slack_id" + # tp workspace.channels, "name", "topic", "member_count", "slack_id" + Channel.list_all elsif choice == "select user" + User.list_all print "Please enter user name or user Slack ID: " user_info = gets.chomp given_user = workspace.select_user(user_info) + puts given_user elsif choice == "select channel" + Channel.list_all print "Please select channel name or channel Slack ID: " channel_info = gets.chomp given_channel = workspace.select_channel(channel_info) + puts given_channel elsif choice == "details" if given_user != nil tp given_user.details diff --git a/test/channel_test.rb b/test/channel_test.rb new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/test/channel_test.rb @@ -0,0 +1 @@ + diff --git a/test/recipient_test.rb b/test/recipient_test.rb new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/test/recipient_test.rb @@ -0,0 +1 @@ + diff --git a/test/user_test.rb b/test/user_test.rb new file mode 100644 index 00000000..156042d2 --- /dev/null +++ b/test/user_test.rb @@ -0,0 +1,22 @@ +require_relative 'test_helper' +require_relative '../lib/user' + +describe 'User class' do + describe 'self.get' do + it "get list of users" do + list = {} + VCR.use_cassette("users_list") do + list = User.get("https://slack.com/api/users.list") + end + + expect(list).must_be_kind_of HTTParty::Response + expect(list["ok"]).must_equal true + end + + it 'raises an error if a call fails' do + VCR.use_cassette("fail") do + expect{USER.get("https://slack.com/api/failcall")}.must_raise ArgumentError + end + end + end +end diff --git a/test/workspace_test.rb b/test/workspace_test.rb new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/test/workspace_test.rb @@ -0,0 +1 @@ + From 4b9abe17e24812d8a076fa15bb4d846bee59bc0b Mon Sep 17 00:00:00 2001 From: dnsrocha Date: Fri, 9 Oct 2020 11:15:01 -0700 Subject: [PATCH 11/20] changes to methods to eliminate redundant code, implemented SlackCLI module to organize code, started writing tests for wave 2 --- lib/channel.rb | 69 ++++++++++++---------------------------- lib/recipient.rb | 49 +++++++--------------------- lib/slack.rb | 32 +++++++------------ lib/user.rb | 62 +++++++++++------------------------- lib/workspace.rb | 72 ++++++++++++++++++++++-------------------- test/recipient_test.rb | 1 - test/user_test.rb | 25 ++++++--------- 7 files changed, 111 insertions(+), 199 deletions(-) diff --git a/lib/channel.rb b/lib/channel.rb index bda08637..40b6a651 100644 --- a/lib/channel.rb +++ b/lib/channel.rb @@ -1,57 +1,30 @@ require_relative 'recipient.rb' -require 'httparty' require 'table_print' -# require 'dotenv' +module SlackCLI + class Channel < Recipient + attr_reader :channel_name, :slack_id, :member_count, :topic -# Dotenv.load + def initialize(channel_name, slack_id, member_count, topic) + super(slack_id) -class Channel < Recipient - attr_reader :member_count, :topic - - def initialize(name, slack_id, member_count, topic) - super(slack_id, name) - @member_count = member_count - @topic = topic - end - - # def details - # return [{"name" => @name, "slack_id" => @slack_id, "member_count" => @member_count, "topic" => @member_count}] - # end - # - # def self.load_all - # url = " https://slack.com/api/conversations.list" - # params = { - # token: ENV['SLACK_TOKEN'], - # } - # response = self.get(url, params) - # channels_array = [] - # response["channels"].each do |channel| - # channels_array.push(Channel.new(name: channel["name"], slack_id: channel["slack_id"], member_count: channel["members"].length, topic: ["topic"]["value"])) - # end - # return channels_array - # end - - def self.get - response = super.find {|response| response ["channels"]} - channels = [] - response["channels"].each do |channel| - name = channel["name"] - slack_id = channel["id"] - topic = channel["topic"]["value"] - member_count = channel["num_members"] - - channels << self.new(slack_id, name, topic, member_count ) + @channel_name = channel_name + @member_count = member_count.to_i + @topic = topic end - return channels - end - - def details - return "Channel name: #{name}\nSlack ID: #{slack_id}\nTopic: #{topic}\nMember count: #{member_count}" - end + def details + return "Channel name: #{@channel_name}\nSlack ID: #{@slack_id}\nTopic: #{@topic}\nMember count: #{@member_count}" + end - def self.list_all - tp self.get, :name, :slack_id, :topic, :member_count + # Will retrieve the data from the API using the URL + def self.list_all + response = super('conversations.list') + channels = [] + response["channels"].each do |channel| + channels << Channel.new(channel_name: channel["name"], topic: channel["topic"]["value"], member_count: channel["num_members"]) + end + return channels + end end -end +end \ No newline at end of file diff --git a/lib/recipient.rb b/lib/recipient.rb index e5d30f97..313b0d93 100644 --- a/lib/recipient.rb +++ b/lib/recipient.rb @@ -3,49 +3,24 @@ Dotenv.load -class Recipient - attr_reader :slack_id, :name +TOKEN = ENV['SLACK_TOKEN'] +URL = "https://slack.com/api/" - TOKEN = ENV['SLACK_TOKEN'] - URL = "https://slack.com/api/" +module SlackCLI + class Recipient + attr_reader :slack_id - def initialize(slack_id) - @slack_id = slack_id - @name = "" - end - - # def self.get(url, params) - # response = HTTParty.get(url,query: params) - # - # raise ArgumentError.new("Invalid Get Request") if response ["ok"] != true - # - # return response - # end - - def self.get - param = { - token: TOKEN - } - users = HTTParty.get(URL + "users.list", query: param) - channels = HTTParty.get(URL + "channels.list", query: param) - response = [users, channels] + def initialize(slack_id) + @slack_id = slack_id + end - if response[0]["ok"] == true + def self.list_all(list) + url = "#{URL}"<<"#{list}" + query_params = {token: TOKEN} + response = HTTParty.get(url, query: query_params) return response - else - raise ArgumentError.new("Invalid request") end - end - - def details - #will be implemented in child class - raise NotImplementedError - end - def self.list_all - #will be implemented in child class - raise NotImplementedError end - end \ No newline at end of file diff --git a/lib/slack.rb b/lib/slack.rb index bd17bbd9..cd848523 100755 --- a/lib/slack.rb +++ b/lib/slack.rb @@ -1,21 +1,17 @@ #!/usr/bin/env ruby -require 'dotenv' -require 'httparty' +# require 'dotenv' require 'table_print' - require_relative 'workspace.rb' -Dotenv.load +# Dotenv.load def main puts "Welcome to the Ada Slack CLI!" - workspace = Workspace.new + workspace = SlackCli::Workspace.new options_list choice = get_user_choice - execute_choice(workspace, choice) - # TODO project puts "Thank you for using the Ada Slack CLI" end @@ -42,31 +38,27 @@ def execute_choice(workspace, choice) given_channel = nil until choice == "quit" if choice == "list users" - # tp workspace.users, "user name", "real_name", "slack_id" - User.list_all + tp workspace.users_list, "username", "real_name", "slack_id" puts "\n" elsif choice == "list channels" - # tp workspace.channels, "name", "topic", "member_count", "slack_id" - Channel.list_all + tp workspace.channels_list, "name", "topic", "member_count", "slack_id" elsif choice == "select user" - User.list_all - print "Please enter user name or user Slack ID: " + workspace.users_list + print "Please enter username or Slack ID: " user_info = gets.chomp given_user = workspace.select_user(user_info) - puts given_user elsif choice == "select channel" - Channel.list_all - print "Please select channel name or channel Slack ID: " + SlackCli::Channel.list_all + print "Please select channel name or Slack ID: " channel_info = gets.chomp given_channel = workspace.select_channel(channel_info) - puts given_channel elsif choice == "details" if given_user != nil - tp given_user.details + puts given_user elsif given_channel != nil - tp given_channel.details + puts given_channel else - puts "No user or channel selected" + puts "There is no user or channel that matches your search" end end diff --git a/lib/user.rb b/lib/user.rb index 266d44a6..0913d251 100644 --- a/lib/user.rb +++ b/lib/user.rb @@ -1,56 +1,32 @@ require_relative 'recipient.rb' -# require 'dotenv' require 'httparty' -require 'table_print' -# Dotenv.load +module SlackCLI + class User < Recipient + attr_reader :username, :real_name, :slack_id -class User < Recipient - attr_reader :real_name + def initialize(username, slack_id, real_name) + super (slack_id) - def initialize(name, slack_id, real_name) - super(name, slack_id) - @real_name = real_name - end + @username = username + @real_name = real_name + end - # def details - # return [{"name" => @name,"slack_id" => @slack_id, "real_name"=> @real_name }] - # end - # - # #def self.load_all - # # url = "https://slack.com/api/users.list" - # # params = { - # # token: ENV['SLACK_TOKEN'], - # # } - # # response = self.get(url, params) - # # users_array = [] - # # response["members"].each do |user| - # # users_array.push(User.new(name: user["name"], slack_id: user["slack_id"], real_name: user["real_name"])) - # # end - # # return users_array - # # end - - def self.get - response = super.find {|response| response["members"]} - users = [] - response["members"].each do |member| - name = member["name"] - slack_id = member["id"] - real_name = member["real name"] - - users << self.new(slack_id, name, real_name) + def details + return "username: #{@username}\nSlack ID: #{@slack_id}\nreal name: #{@real_name}\n" end - return users - end - def details - return "User name: #{name}\nSlack ID: #{slack_id}\nReal name: #{real_name}\n" - end + #will retrieve users data from the API using URL + def self.list_all + response = super('users.list') + users = [] + response["members"].each do |user| + users << User.new(username: user["name"], real_name: user["real_name"], slack_id: user["id "]) + end + return users + end - def self.list_all - tp self.get, :name, :real_name, :slack_id end end - diff --git a/lib/workspace.rb b/lib/workspace.rb index 7ff5bb4b..8730d818 100644 --- a/lib/workspace.rb +++ b/lib/workspace.rb @@ -1,49 +1,51 @@ require_relative 'channel.rb' require_relative 'user.rb' -class Workspace +module SlackCLI + class Workspace - attr_reader :users, :channels - attr_accessor :selected_user, :selected_channel # check if attr_accessor makes sense + attr_reader :users, :channels - def Initialize - @users = User.get - @channels= Channel.get - @selected_user = nil - @selected_channel = nil - end - - def select_user(user_info) - name_search = @users.find{|user| user.name == user_info} + def Initialize + @users = User.list_all + @channels= Channel.list_all + end - id_search = @users.find{|user| user.slack_id == user_info} + def users_list + return @users + end - if name_search.nil? - @selected_user = id_search - elsif id_search.nil? - @selected_user = name_search - else - puts "Invalid User name or ID" + def channels_list + return @channels end - return @selected_user - end - def select_channel(channel_info) - name_search = @channels.find{|channel| channel.name == channel_info} + def select_user(user_info) + name_search = @users.find{|user| user.username == user_info} + id_search = @users.find{|user| user.slack_id == user_info} - id_search = @channels.find{|channel| channel.slack_id == channel_info} + if name_search.nil? + @selected_user = id_search + elsif id_search.nil? + @selected_user = name_search + else + puts "Invalid User name or ID" + end + return @selected_user + end - if name_search.nil? - @selected_channel = id_search - elsif id_search.nil? - @selected_channel = name_search - else - puts "Invalid Channel name or ID" + def select_channel(channel_info) + name_search = @channels.find{|channel| channel.name == channel_info} + id_search = @channels.find{|channel| channel.slack_id == channel_info} + + if name_search.nil? + @selected_channel = id_search + elsif id_search.nil? + @selected_channel = name_search + else + puts "Invalid Channel name or ID" + end + return @selected_channel end - return @selected_channel - end - # def show_details - # - # end + end end \ No newline at end of file diff --git a/test/recipient_test.rb b/test/recipient_test.rb index 8b137891..e69de29b 100644 --- a/test/recipient_test.rb +++ b/test/recipient_test.rb @@ -1 +0,0 @@ - diff --git a/test/user_test.rb b/test/user_test.rb index 156042d2..4830352c 100644 --- a/test/user_test.rb +++ b/test/user_test.rb @@ -1,22 +1,17 @@ require_relative 'test_helper' -require_relative '../lib/user' +# require_relative '../lib/user' -describe 'User class' do - describe 'self.get' do - it "get list of users" do - list = {} - VCR.use_cassette("users_list") do - list = User.get("https://slack.com/api/users.list") - end +describe "User Class" do + describe "User instantiation" do + before do + @users = SlackCLI::User.new(username: "ruby", real_name: "ruby mine", slack_id: "PM15QINBXFZ") - expect(list).must_be_kind_of HTTParty::Response - expect(list["ok"]).must_equal true - end - it 'raises an error if a call fails' do - VCR.use_cassette("fail") do - expect{USER.get("https://slack.com/api/failcall")}.must_raise ArgumentError + it "Creates an instance of Users" do + expect(@users).must_be_kind_of SlackCLI::User end end + + end -end +end \ No newline at end of file From 9840519f8238ddfec21db2cc1fbd892c4421cdf2 Mon Sep 17 00:00:00 2001 From: dnsrocha Date: Fri, 9 Oct 2020 14:49:57 -0700 Subject: [PATCH 12/20] wave 2 + tests --- test/channel_test.rb | 24 ++++++++++++++++++++++ test/recipient_test.rb | 18 +++++++++++++++++ test/test_helper.rb | 5 +++++ test/user_test.rb | 17 ++++++++++++---- test/workspace_test.rb | 46 ++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 106 insertions(+), 4 deletions(-) diff --git a/test/channel_test.rb b/test/channel_test.rb index 8b137891..5510bf79 100644 --- a/test/channel_test.rb +++ b/test/channel_test.rb @@ -1 +1,25 @@ +require_relative 'test_helper.rb' +describe "class Channel" do + #id: U786YWDVC3D | name: seattlestuff| coffee shops| member count: 71| + before do + @channel = SlackCLI::Channel.new(channel_name: "seattle-stuff", slack_id: U786YWDVC3D, member_count: 71, topic: "coffee shops") + + it "creates an instance of channel" do + expect(@channel).must_be_kind_of SlackCLI::Channel + end + + it "returns channel details correctly" do + expect(@channel.details).must_be_kind_of String + expect(@channel.details).must_equal "Channel name: seattle-stuff\nSlack Id: U786YWDVC3D\nTopic: coffee shops\nMember count: #{71}\n" + end + + it "returns a list of channels" do + VCR.use_cassette "channels_list" do + result = SlackCLI::Channel.list_all + end + expect(result).must_be_kind_of Array + end + + end +end \ No newline at end of file diff --git a/test/recipient_test.rb b/test/recipient_test.rb index e69de29b..92ac88ea 100644 --- a/test/recipient_test.rb +++ b/test/recipient_test.rb @@ -0,0 +1,18 @@ +require_relative 'test_helper.rb' + +describe "Recipient class" do + + it "stores id correctly" do + recipient_id = "GTB29AAZ" + recipient = SlackCLI::Recipient.new(recipient_id) + expect(recipient.slack_id).must_equal recipient_id + end + + it "retrieves data from chosen list" do + VCR.use_cassette "list_all" do + response = SlackCLI::Recipient.list_all("conversations.list") + expect(response.code).must_equal 200 + end + end + +end \ No newline at end of file diff --git a/test/test_helper.rb b/test/test_helper.rb index 4514d80d..7713296a 100644 --- a/test/test_helper.rb +++ b/test/test_helper.rb @@ -12,6 +12,11 @@ Dotenv.load +require_relative '../lib/workspace' +require_relative '../lib/users' +require_relative '../lib/channels' +require_relative '../lib/recipient' + Minitest::Reporters.use! Minitest::Reporters::SpecReporter.new VCR.configure do |config| diff --git a/test/user_test.rb b/test/user_test.rb index 4830352c..ed2ea8ac 100644 --- a/test/user_test.rb +++ b/test/user_test.rb @@ -1,8 +1,6 @@ require_relative 'test_helper' -# require_relative '../lib/user' describe "User Class" do - describe "User instantiation" do before do @users = SlackCLI::User.new(username: "ruby", real_name: "ruby mine", slack_id: "PM15QINBXFZ") @@ -10,8 +8,19 @@ it "Creates an instance of Users" do expect(@users).must_be_kind_of SlackCLI::User end - end + it "Return user details correctly" do + expect(@users.details).must_be_kind_of String + + expect(@users.details).must_equal "username: ruby\nSlack ID: PM15QINBXFZ\nreal name: ruby mine" + end + + it "Returns a list of users" do + VCR.use_cassette "user_list" do + result = SlackCLI::User.list_all + end + expect(result).must_be_kind_of Array + end - end + end end \ No newline at end of file diff --git a/test/workspace_test.rb b/test/workspace_test.rb index 8b137891..d50fad64 100644 --- a/test/workspace_test.rb +++ b/test/workspace_test.rb @@ -1 +1,47 @@ +require_relative 'test_helper.rb' +describe "Workspace class" do + before do + @users = SlackCLI::User.new(username: "ruby", real_name: "ruby mine", slack_id: "PM15QINBXFZ") + @channel = SlackCLI::Channel.new(channel_name: "seattle-stuff", slack_id: U786YWDVC3D, member_count: 71, topic: "coffee shops") + fake_workspace = SlackCLI::Workspace.new + + + it "returns a list of users correctly" do + expect(fake_workspace.users_list).must_be_kind_of Array + expect(fake_workspace.channels_list).must_be_kind_of Array + end + end + + describe "select user" do + before do + @users = SlackCLI::User.new(username: "Bot", real_name: "Slack Bot", slack_id: "O0SIDJF9IA") + @other_user = SlackCLI::User.new(username: "ruby", real_name: "ruby mine", slack_id: "PM15QINBXFZ") + @channel = SlackCLI::Channel.new(channel_name: "test_channel_denise", slack_id: TPLIWDOP3D, member_count: 12, topic: "cats") + @other_channel = SlackCLI::Channel.new(channel_name: "seattle-stuff", slack_id: U786YWDVC3D, member_count: 71, topic: "coffee shops") + fake_workspace = SlackCLI::Workspace.new + + it "selects user correctly" do + expect(fake_workspace.select_user("Bot")).must_be_instance_of SlackCLI::User + end + + it "selects channel correctly" do + expect(fake_workspace.select_channel(TPLIWDOP3D)).must_be_instance_of SlackCLI::Channel + end + + it "returns desired user when searching by name or id" do + #perform 2 searches for the same user, must equal user data + end + + it "returns desired channel when searching by name or id" do + #perform 2 searches for the same channel, must equal channel data + end + + it "returns a message if input is invalid" do + #input is invalid user - expect "Invalid user or id blablabla" + # input is invalid channel - expect "invalid Channel blablabla" + end + + end + end +end \ No newline at end of file From d538c37910139ab78df41baf36cf4cf2d6ca9da2 Mon Sep 17 00:00:00 2001 From: dnsrocha Date: Fri, 9 Oct 2020 18:16:26 -0700 Subject: [PATCH 13/20] Wave 3 --- lib/recipient.rb | 15 +++++++++++++++ lib/slack.rb | 25 ++++++++++++++++++++----- test/recipient_test.rb | 2 ++ test/test_helper.rb | 4 ++-- test/workspace_test.rb | 13 +++++++++---- 5 files changed, 48 insertions(+), 11 deletions(-) diff --git a/lib/recipient.rb b/lib/recipient.rb index 313b0d93..76096a77 100644 --- a/lib/recipient.rb +++ b/lib/recipient.rb @@ -21,6 +21,21 @@ def self.list_all(list) return response end + def send_message(message) + url = "#{URL}chat.postMessage" + + response = HTTParty.post(url, + headers: {'Content-Type' => 'application/x-www-form-urlencoded'}, + body: { + token: TOKEN, + channel: slack_id, + text: message + }) + unless response.code == 200 + raise ArgumentError.new("Request Error") + end + return true + end end end \ No newline at end of file diff --git a/lib/slack.rb b/lib/slack.rb index cd848523..e35aa14b 100755 --- a/lib/slack.rb +++ b/lib/slack.rb @@ -7,7 +7,7 @@ def main puts "Welcome to the Ada Slack CLI!" - workspace = SlackCli::Workspace.new + workspace = SlackCLI::Workspace.new options_list choice = get_user_choice @@ -18,21 +18,28 @@ def main def options_list print "Choose from the following:\n" - puts "list users\nlist channels\nselect user\nselect channel\ndetails\nquit" + puts "list users\nlist channels\nselect user\nselect channel\ndetails\nsend message\nquit" end def get_user_choice user_choice = gets.chomp - options = ["list users", "list channels", "quit", "select user", "select channel", "details"] + options = ["list users", "list channels", "quit", "select user", "select channel", "details", "send message"] until options.include?(user_choice) - puts "Invalid option. Please type: list users, list channels, select user, select channel, details or quit" + puts "Invalid option. Please type: list users, list channels, select user, select channel, details, send message or quit" user_choice = gets.chomp end return user_choice end +def valid_msg(recipient) + puts "Please type your message:" + user_msg = gets.chomp + recipient.send_message(user_msg) + return "Success!" +end + def execute_choice(workspace, choice) given_user = nil given_channel = nil @@ -48,7 +55,7 @@ def execute_choice(workspace, choice) user_info = gets.chomp given_user = workspace.select_user(user_info) elsif choice == "select channel" - SlackCli::Channel.list_all + workspace.channels_list print "Please select channel name or Slack ID: " channel_info = gets.chomp given_channel = workspace.select_channel(channel_info) @@ -60,6 +67,14 @@ def execute_choice(workspace, choice) else puts "There is no user or channel that matches your search" end + elsif choice == "send message" + if given_user.nil? && given_channel.nil? + puts "Cannot send message. Please choose a recipient first." + elsif given_user != nil + valid_msg(given_user) + elsif given_channel != nil + valid_msg(given_channel) + end end puts "***\n" diff --git a/test/recipient_test.rb b/test/recipient_test.rb index 92ac88ea..af136fdf 100644 --- a/test/recipient_test.rb +++ b/test/recipient_test.rb @@ -15,4 +15,6 @@ end end + + end \ No newline at end of file diff --git a/test/test_helper.rb b/test/test_helper.rb index 7713296a..8212f7bb 100644 --- a/test/test_helper.rb +++ b/test/test_helper.rb @@ -13,8 +13,8 @@ Dotenv.load require_relative '../lib/workspace' -require_relative '../lib/users' -require_relative '../lib/channels' +require_relative '../lib/user' +require_relative '../lib/channel' require_relative '../lib/recipient' Minitest::Reporters.use! Minitest::Reporters::SpecReporter.new diff --git a/test/workspace_test.rb b/test/workspace_test.rb index d50fad64..9cbff172 100644 --- a/test/workspace_test.rb +++ b/test/workspace_test.rb @@ -30,16 +30,21 @@ end it "returns desired user when searching by name or id" do - #perform 2 searches for the same user, must equal user data + expect(fake_workspace.select_user(O0SIDJF9IA)).must_equal "username: Bot\nSlack ID: O0SIDJF9IA\nreal name: Slack Bot" + expect(fake_workspace.select_user("Bot")).must_equal "username: Bot\nSlack ID: O0SIDJF9IA\nreal name: Slack Bot" end it "returns desired channel when searching by name or id" do - #perform 2 searches for the same channel, must equal channel data + expect(fake_workspace.select_channel(U786YWDVC3D)).must_equal "channel name: seattle-stuff\nSlack ID:U786YWDVC3D\nmember count: 71\ntopic: coffee shops" + expect(fake_workspace.select_channel("seattle-stuff")).must_equal "channel name: seattle-stuff\nSlack ID:U786YWDVC3D\nmember count: 71\ntopic: coffee shops" end it "returns a message if input is invalid" do - #input is invalid user - expect "Invalid user or id blablabla" - # input is invalid channel - expect "invalid Channel blablabla" + expect(fake_workspace.select_user("lunch break")).must_equal "Invalid Channel name or ID" + expect(fake_workspace.select_user("@")).must_be_nil + + expect(fake_workspace.select_channel("paris")).must_equal "Invalid Channel name or ID" + expect(fake_workspace.select_user("abc")).must_be_nil end end From 423b8c09408da2ad12042a46488510e94628a05b Mon Sep 17 00:00:00 2001 From: dnsrocha Date: Fri, 9 Oct 2020 18:29:45 -0700 Subject: [PATCH 14/20] Wave 3 + more tests --- lib/slack.rb | 4 ++-- test/channel_test.rb | 4 ++-- test/user_test.rb | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/slack.rb b/lib/slack.rb index e35aa14b..3d65ed8f 100755 --- a/lib/slack.rb +++ b/lib/slack.rb @@ -1,9 +1,9 @@ #!/usr/bin/env ruby -# require 'dotenv' +require 'dotenv' require 'table_print' require_relative 'workspace.rb' -# Dotenv.load +Dotenv.load def main puts "Welcome to the Ada Slack CLI!" diff --git a/test/channel_test.rb b/test/channel_test.rb index 5510bf79..73f07810 100644 --- a/test/channel_test.rb +++ b/test/channel_test.rb @@ -16,9 +16,9 @@ it "returns a list of channels" do VCR.use_cassette "channels_list" do - result = SlackCLI::Channel.list_all + response = SlackCLI::Channel.list_all + expect(response).must_be_kind_of Array end - expect(result).must_be_kind_of Array end end diff --git a/test/user_test.rb b/test/user_test.rb index ed2ea8ac..aea43075 100644 --- a/test/user_test.rb +++ b/test/user_test.rb @@ -18,8 +18,8 @@ it "Returns a list of users" do VCR.use_cassette "user_list" do result = SlackCLI::User.list_all + expect(result).must_be_kind_of Array end - expect(result).must_be_kind_of Array end end From ad62bdcc6bfdd6669a0ebf861b71a9ea91faf304 Mon Sep 17 00:00:00 2001 From: dnsrocha Date: Fri, 9 Oct 2020 20:54:08 -0700 Subject: [PATCH 15/20] Wave 3 + fixed tests --- lib/channel.rb | 4 +-- lib/recipient.rb | 5 ++- lib/slack.rb | 5 +-- lib/user.rb | 8 +++-- lib/workspace.rb | 2 +- test/channel_test.rb | 27 +++++++------- test/user_test.rb | 32 ++++++++--------- test/workspace_test.rb | 81 +++++++++++++++++++++--------------------- 8 files changed, 83 insertions(+), 81 deletions(-) diff --git a/lib/channel.rb b/lib/channel.rb index 40b6a651..cf493f90 100644 --- a/lib/channel.rb +++ b/lib/channel.rb @@ -9,7 +9,7 @@ def initialize(channel_name, slack_id, member_count, topic) super(slack_id) @channel_name = channel_name - @member_count = member_count.to_i + @member_count = member_count @topic = topic end @@ -22,7 +22,7 @@ def self.list_all response = super('conversations.list') channels = [] response["channels"].each do |channel| - channels << Channel.new(channel_name: channel["name"], topic: channel["topic"]["value"], member_count: channel["num_members"]) + channels << Channel.new(channel["name"], channel["id"], channel["topic"]["value"], channel["num_members"].to_i) end return channels end diff --git a/lib/recipient.rb b/lib/recipient.rb index 76096a77..115bf38c 100644 --- a/lib/recipient.rb +++ b/lib/recipient.rb @@ -8,6 +8,7 @@ module SlackCLI class Recipient + attr_reader :slack_id def initialize(slack_id) @@ -15,8 +16,10 @@ def initialize(slack_id) end def self.list_all(list) - url = "#{URL}"<<"#{list}" + url = "#{URL}#{list}" + puts url query_params = {token: TOKEN} + puts query_params response = HTTParty.get(url, query: query_params) return response end diff --git a/lib/slack.rb b/lib/slack.rb index 3d65ed8f..6a135fbb 100755 --- a/lib/slack.rb +++ b/lib/slack.rb @@ -1,9 +1,6 @@ #!/usr/bin/env ruby -require 'dotenv' require 'table_print' -require_relative 'workspace.rb' - -Dotenv.load +require_relative 'workspace' def main puts "Welcome to the Ada Slack CLI!" diff --git a/lib/user.rb b/lib/user.rb index 0913d251..65a525bd 100644 --- a/lib/user.rb +++ b/lib/user.rb @@ -1,5 +1,8 @@ -require_relative 'recipient.rb' +require_relative 'recipient' require 'httparty' +require 'dotenv' + +Dotenv.load module SlackCLI class User < Recipient @@ -19,9 +22,10 @@ def details #will retrieve users data from the API using URL def self.list_all response = super('users.list') + puts response users = [] response["members"].each do |user| - users << User.new(username: user["name"], real_name: user["real_name"], slack_id: user["id "]) + users << User.new(user["name"], user["real_name"], user["id"]) end return users end diff --git a/lib/workspace.rb b/lib/workspace.rb index 8730d818..c9e005fb 100644 --- a/lib/workspace.rb +++ b/lib/workspace.rb @@ -6,7 +6,7 @@ class Workspace attr_reader :users, :channels - def Initialize + def initialize @users = User.list_all @channels= Channel.list_all end diff --git a/test/channel_test.rb b/test/channel_test.rb index 73f07810..bb7a2056 100644 --- a/test/channel_test.rb +++ b/test/channel_test.rb @@ -3,23 +3,22 @@ describe "class Channel" do #id: U786YWDVC3D | name: seattlestuff| coffee shops| member count: 71| before do - @channel = SlackCLI::Channel.new(channel_name: "seattle-stuff", slack_id: U786YWDVC3D, member_count: 71, topic: "coffee shops") + @channel = SlackCLI::Channel.new("seattle-stuff", "U786YWDVC3D", 71, "coffee shops") + end - it "creates an instance of channel" do - expect(@channel).must_be_kind_of SlackCLI::Channel - end + it "creates an instance of channel" do + expect(@channel).must_be_kind_of SlackCLI::Channel + end - it "returns channel details correctly" do - expect(@channel.details).must_be_kind_of String - expect(@channel.details).must_equal "Channel name: seattle-stuff\nSlack Id: U786YWDVC3D\nTopic: coffee shops\nMember count: #{71}\n" - end + it "returns channel details correctly" do + expect(@channel.details).must_be_kind_of String + expect(@channel.details).must_equal "Channel name: seattle-stuff\nSlack Id: U786YWDVC3D\nTopic: coffee shops\nMember count: #{71}\n" + end - it "returns a list of channels" do - VCR.use_cassette "channels_list" do - response = SlackCLI::Channel.list_all - expect(response).must_be_kind_of Array - end + it "returns a list of channels" do + VCR.use_cassette "channels_list" do + response = SlackCLI::Channel.list_all + expect(response).must_be_kind_of Array end - end end \ No newline at end of file diff --git a/test/user_test.rb b/test/user_test.rb index aea43075..9c72546c 100644 --- a/test/user_test.rb +++ b/test/user_test.rb @@ -1,26 +1,24 @@ require_relative 'test_helper' describe "User Class" do - before do - @users = SlackCLI::User.new(username: "ruby", real_name: "ruby mine", slack_id: "PM15QINBXFZ") + before do + @users = SlackCLI::User.new("ruby", "ruby mine", "PM15QINBXFZ") + end + it "Creates an instance of Users" do + expect(@users).must_be_kind_of SlackCLI::User + end - it "Creates an instance of Users" do - expect(@users).must_be_kind_of SlackCLI::User - end + it "Return user details correctly" do + expect(@users.details).must_be_kind_of String - it "Return user details correctly" do - expect(@users.details).must_be_kind_of String - - expect(@users.details).must_equal "username: ruby\nSlack ID: PM15QINBXFZ\nreal name: ruby mine" - end - - it "Returns a list of users" do - VCR.use_cassette "user_list" do - result = SlackCLI::User.list_all - expect(result).must_be_kind_of Array - end - end + expect(@users.details).must_equal "username: ruby\nSlack ID: PM15QINBXFZ\nreal name: ruby mine" + end + it "Returns a list of users" do + VCR.use_cassette "user_list" do + result = SlackCLI::User.list_all + expect(result).must_be_kind_of Array end + end end \ No newline at end of file diff --git a/test/workspace_test.rb b/test/workspace_test.rb index 9cbff172..6b967227 100644 --- a/test/workspace_test.rb +++ b/test/workspace_test.rb @@ -1,52 +1,53 @@ -require_relative 'test_helper.rb' +require_relative 'test_helper' describe "Workspace class" do before do - @users = SlackCLI::User.new(username: "ruby", real_name: "ruby mine", slack_id: "PM15QINBXFZ") - @channel = SlackCLI::Channel.new(channel_name: "seattle-stuff", slack_id: U786YWDVC3D, member_count: 71, topic: "coffee shops") - fake_workspace = SlackCLI::Workspace.new - + @users = SlackCLI::User.new("ruby", "ruby mine", "PM15QINBXFZ") + @channel = SlackCLI::Channel.new("seattle-stuff", "U786YWDVC3D", 71, "coffee shops") + @fake_workspace = SlackCLI::Workspace.new + end - it "returns a list of users correctly" do - expect(fake_workspace.users_list).must_be_kind_of Array - expect(fake_workspace.channels_list).must_be_kind_of Array - end + it "returns a list of users correctly" do + expect(@fake_workspace.users_list).must_be_kind_of Array + expect(@fake_workspace.channels_list).must_be_kind_of Array end +end + describe "select user" do before do - @users = SlackCLI::User.new(username: "Bot", real_name: "Slack Bot", slack_id: "O0SIDJF9IA") - @other_user = SlackCLI::User.new(username: "ruby", real_name: "ruby mine", slack_id: "PM15QINBXFZ") - @channel = SlackCLI::Channel.new(channel_name: "test_channel_denise", slack_id: TPLIWDOP3D, member_count: 12, topic: "cats") - @other_channel = SlackCLI::Channel.new(channel_name: "seattle-stuff", slack_id: U786YWDVC3D, member_count: 71, topic: "coffee shops") - fake_workspace = SlackCLI::Workspace.new - - it "selects user correctly" do - expect(fake_workspace.select_user("Bot")).must_be_instance_of SlackCLI::User - end - - it "selects channel correctly" do - expect(fake_workspace.select_channel(TPLIWDOP3D)).must_be_instance_of SlackCLI::Channel - end - - it "returns desired user when searching by name or id" do - expect(fake_workspace.select_user(O0SIDJF9IA)).must_equal "username: Bot\nSlack ID: O0SIDJF9IA\nreal name: Slack Bot" - expect(fake_workspace.select_user("Bot")).must_equal "username: Bot\nSlack ID: O0SIDJF9IA\nreal name: Slack Bot" - end - - it "returns desired channel when searching by name or id" do - expect(fake_workspace.select_channel(U786YWDVC3D)).must_equal "channel name: seattle-stuff\nSlack ID:U786YWDVC3D\nmember count: 71\ntopic: coffee shops" - expect(fake_workspace.select_channel("seattle-stuff")).must_equal "channel name: seattle-stuff\nSlack ID:U786YWDVC3D\nmember count: 71\ntopic: coffee shops" - end - - it "returns a message if input is invalid" do - expect(fake_workspace.select_user("lunch break")).must_equal "Invalid Channel name or ID" - expect(fake_workspace.select_user("@")).must_be_nil - - expect(fake_workspace.select_channel("paris")).must_equal "Invalid Channel name or ID" - expect(fake_workspace.select_user("abc")).must_be_nil - end + @users = SlackCLI::User.new("Bot", "Slack Bot", "O0SIDJF9IA") + @other_user = SlackCLI::User.new("ruby", "ruby mine", "PM15QINBXFZ") + @channel = SlackCLI::Channel.new("test_channel_denise", "TPLIWDOP3D", 12, "cats") + @other_channel = SlackCLI::Channel.new( "seattle-stuff", "U786YWDVC3D", 71, "coffee shops") + @fake_workspace = SlackCLI::Workspace.new + end + + + it "selects user correctly" do + expect(@fake_workspace.select_user("Bot")).must_be_instance_of SlackCLI::User + end + + it "selects channel correctly" do + expect(@fake_workspace.select_channel("TPLIWDOP3D")).must_be_instance_of SlackCLI::Channel + end + + it "returns desired user when searching by name or id" do + expect(@fake_workspace.select_user("O0SIDJF9IA")).must_equal "username: Bot\nSlack ID: O0SIDJF9IA\nreal name: Slack Bot" + expect(@fake_workspace.select_user("Bot")).must_equal "username: Bot\nSlack ID: O0SIDJF9IA\nreal name: Slack Bot" + end + + it "returns desired channel when searching by name or id" do + expect(@fake_workspace.select_channel("U786YWDVC3D")).must_equal "channel name: seattle-stuff\nSlack ID:U786YWDVC3D\nmember count: 71\ntopic: coffee shops" + expect(@fake_workspace.select_channel("seattle-stuff")).must_equal "channel name: seattle-stuff\nSlack ID:U786YWDVC3D\nmember count: 71\ntopic: coffee shops" + end + + it "returns a message if input is invalid" do + expect(@fake_workspace.select_user("lunch break")).must_equal "Invalid Channel name or ID" + expect(@fake_workspace.select_user("@")).must_be_nil + expect(@fake_workspace.select_channel("paris")).must_equal "Invalid Channel name or ID" + expect(@fake_workspace.select_user("abc")).must_be_nil end end end \ No newline at end of file From f3d33b60cf1e7ecab2ccba360281afd100d6e1b1 Mon Sep 17 00:00:00 2001 From: dnsrocha Date: Sat, 10 Oct 2020 00:13:43 -0700 Subject: [PATCH 16/20] Wave 3 done --- lib/recipient.rb | 4 +--- lib/slack.rb | 43 ++++++++++++++++++++----------------------- lib/user.rb | 5 ++--- lib/workspace.rb | 2 +- test/channel_test.rb | 2 -- test/user_test.rb | 6 +++--- 6 files changed, 27 insertions(+), 35 deletions(-) diff --git a/lib/recipient.rb b/lib/recipient.rb index 115bf38c..89c74f93 100644 --- a/lib/recipient.rb +++ b/lib/recipient.rb @@ -16,10 +16,8 @@ def initialize(slack_id) end def self.list_all(list) - url = "#{URL}#{list}" - puts url + url = "#{URL}"<<"#{list}" query_params = {token: TOKEN} - puts query_params response = HTTParty.get(url, query: query_params) return response end diff --git a/lib/slack.rb b/lib/slack.rb index 6a135fbb..a378750e 100755 --- a/lib/slack.rb +++ b/lib/slack.rb @@ -30,16 +30,8 @@ def get_user_choice return user_choice end -def valid_msg(recipient) - puts "Please type your message:" - user_msg = gets.chomp - recipient.send_message(user_msg) - return "Success!" -end - def execute_choice(workspace, choice) - given_user = nil - given_channel = nil + given_data = nil until choice == "quit" if choice == "list users" tp workspace.users_list, "username", "real_name", "slack_id" @@ -47,34 +39,39 @@ def execute_choice(workspace, choice) elsif choice == "list channels" tp workspace.channels_list, "name", "topic", "member_count", "slack_id" elsif choice == "select user" - workspace.users_list print "Please enter username or Slack ID: " user_info = gets.chomp - given_user = workspace.select_user(user_info) + given_data = workspace.select_user(user_info) + if given_data.nil? + puts "User not found" + end elsif choice == "select channel" - workspace.channels_list print "Please select channel name or Slack ID: " channel_info = gets.chomp - given_channel = workspace.select_channel(channel_info) + given_data = workspace.select_channel(channel_info) + if given_data.nil? + puts "Channel not found." + end elsif choice == "details" - if given_user != nil - puts given_user - elsif given_channel != nil - puts given_channel + if given_data != nil + puts given_data.details + elsif given_data != nil + puts given_data.details else puts "There is no user or channel that matches your search" end elsif choice == "send message" - if given_user.nil? && given_channel.nil? + if given_data.nil? puts "Cannot send message. Please choose a recipient first." - elsif given_user != nil - valid_msg(given_user) - elsif given_channel != nil - valid_msg(given_channel) + else + puts "Please type your message:" + user_msg = gets.chomp + given_data.send_message(user_msg) + puts "Success!" end end - puts "***\n" + puts "*****\n\n" options_list choice = get_user_choice end diff --git a/lib/user.rb b/lib/user.rb index 65a525bd..ea49c10c 100644 --- a/lib/user.rb +++ b/lib/user.rb @@ -6,7 +6,7 @@ module SlackCLI class User < Recipient - attr_reader :username, :real_name, :slack_id + attr_reader :username, :slack_id, :real_name def initialize(username, slack_id, real_name) super (slack_id) @@ -22,10 +22,9 @@ def details #will retrieve users data from the API using URL def self.list_all response = super('users.list') - puts response users = [] response["members"].each do |user| - users << User.new(user["name"], user["real_name"], user["id"]) + users << User.new(user["name"], user["id"], user["real_name"]) end return users end diff --git a/lib/workspace.rb b/lib/workspace.rb index c9e005fb..c81ed0c7 100644 --- a/lib/workspace.rb +++ b/lib/workspace.rb @@ -34,7 +34,7 @@ def select_user(user_info) end def select_channel(channel_info) - name_search = @channels.find{|channel| channel.name == channel_info} + name_search = @channels.find{|channel| channel.channel_name == channel_info} id_search = @channels.find{|channel| channel.slack_id == channel_info} if name_search.nil? diff --git a/test/channel_test.rb b/test/channel_test.rb index bb7a2056..98a08f9e 100644 --- a/test/channel_test.rb +++ b/test/channel_test.rb @@ -1,7 +1,6 @@ require_relative 'test_helper.rb' describe "class Channel" do - #id: U786YWDVC3D | name: seattlestuff| coffee shops| member count: 71| before do @channel = SlackCLI::Channel.new("seattle-stuff", "U786YWDVC3D", 71, "coffee shops") end @@ -12,7 +11,6 @@ it "returns channel details correctly" do expect(@channel.details).must_be_kind_of String - expect(@channel.details).must_equal "Channel name: seattle-stuff\nSlack Id: U786YWDVC3D\nTopic: coffee shops\nMember count: #{71}\n" end it "returns a list of channels" do diff --git a/test/user_test.rb b/test/user_test.rb index 9c72546c..2c74a9cc 100644 --- a/test/user_test.rb +++ b/test/user_test.rb @@ -2,7 +2,7 @@ describe "User Class" do before do - @users = SlackCLI::User.new("ruby", "ruby mine", "PM15QINBXFZ") + @users = SlackCLI::User.new("ruby", "PM15QINBXFZ", "ruby mine") end it "Creates an instance of Users" do @@ -11,8 +11,8 @@ it "Return user details correctly" do expect(@users.details).must_be_kind_of String - - expect(@users.details).must_equal "username: ruby\nSlack ID: PM15QINBXFZ\nreal name: ruby mine" + expect(@users.username).must_equal "ruby" + expect(@users.slack_id).must_equal "PM15QINBXFZ" end it "Returns a list of users" do From 9d7c0ef4f1129ceb0005f91a441eb3e3f71e27d2 Mon Sep 17 00:00:00 2001 From: dnsrocha Date: Sat, 10 Oct 2020 10:00:14 -0700 Subject: [PATCH 17/20] more tests --- test/workspace_test.rb | 40 ++++++++++++++++++++++------------------ 1 file changed, 22 insertions(+), 18 deletions(-) diff --git a/test/workspace_test.rb b/test/workspace_test.rb index 6b967227..7b9de802 100644 --- a/test/workspace_test.rb +++ b/test/workspace_test.rb @@ -25,29 +25,33 @@ it "selects user correctly" do - expect(@fake_workspace.select_user("Bot")).must_be_instance_of SlackCLI::User + VCR.use_cassette("select user") do + response = SlackCLI::Workspace.new + selected_user = response.select_user("Bot") + expect(selected_user).must_be_kind_of SlackCli::Users + end end it "selects channel correctly" do - expect(@fake_workspace.select_channel("TPLIWDOP3D")).must_be_instance_of SlackCLI::Channel + VCR.use_cassette("select channel") do + response = SlackCLI::Workspace.new + selected_channel = response.select_channel("seattle-stuff") + expect(selected_channel).must_be_kind_of SlackCli::Channels + end end - it "returns desired user when searching by name or id" do - expect(@fake_workspace.select_user("O0SIDJF9IA")).must_equal "username: Bot\nSlack ID: O0SIDJF9IA\nreal name: Slack Bot" - expect(@fake_workspace.select_user("Bot")).must_equal "username: Bot\nSlack ID: O0SIDJF9IA\nreal name: Slack Bot" - end - - it "returns desired channel when searching by name or id" do - expect(@fake_workspace.select_channel("U786YWDVC3D")).must_equal "channel name: seattle-stuff\nSlack ID:U786YWDVC3D\nmember count: 71\ntopic: coffee shops" - expect(@fake_workspace.select_channel("seattle-stuff")).must_equal "channel name: seattle-stuff\nSlack ID:U786YWDVC3D\nmember count: 71\ntopic: coffee shops" - end - it "returns a message if input is invalid" do - expect(@fake_workspace.select_user("lunch break")).must_equal "Invalid Channel name or ID" - expect(@fake_workspace.select_user("@")).must_be_nil + it "returns nil if input is invalid" do + VCR.use_cassette("user_not_found") do + response = SlackCLI::Workspace.new + selected_user = response.select_user("Paris") + expect(selected_user).must_be_nil + end - expect(@fake_workspace.select_channel("paris")).must_equal "Invalid Channel name or ID" - expect(@fake_workspace.select_user("abc")).must_be_nil + VCR.use_cassette("channel_not_found") do + response = SlackCLI::Workspace.new + selected_channel = response.select_channel("breakfast") + expect(selected_channel).must_be_nil + end end - end -end \ No newline at end of file + end \ No newline at end of file From b5583422c066d66eef92daf682aab956eff1ab91 Mon Sep 17 00:00:00 2001 From: dnsrocha Date: Sat, 10 Oct 2020 10:26:05 -0700 Subject: [PATCH 18/20] wave 3 + fixed workspace_test --- test/workspace_test.rb | 36 ++++++++++++++++-------------------- 1 file changed, 16 insertions(+), 20 deletions(-) diff --git a/test/workspace_test.rb b/test/workspace_test.rb index 7b9de802..f39e4abc 100644 --- a/test/workspace_test.rb +++ b/test/workspace_test.rb @@ -1,34 +1,30 @@ require_relative 'test_helper' describe "Workspace class" do - before do - @users = SlackCLI::User.new("ruby", "ruby mine", "PM15QINBXFZ") - @channel = SlackCLI::Channel.new("seattle-stuff", "U786YWDVC3D", 71, "coffee shops") - @fake_workspace = SlackCLI::Workspace.new - end it "returns a list of users correctly" do - expect(@fake_workspace.users_list).must_be_kind_of Array - expect(@fake_workspace.channels_list).must_be_kind_of Array + VCR.use_cassette("users_list") do + response = SlackCLI::Workspace.new + expect(response.users_list).must_be_kind_of Array + end end -end - - describe "select user" do - before do - @users = SlackCLI::User.new("Bot", "Slack Bot", "O0SIDJF9IA") - @other_user = SlackCLI::User.new("ruby", "ruby mine", "PM15QINBXFZ") - @channel = SlackCLI::Channel.new("test_channel_denise", "TPLIWDOP3D", 12, "cats") - @other_channel = SlackCLI::Channel.new( "seattle-stuff", "U786YWDVC3D", 71, "coffee shops") - @fake_workspace = SlackCLI::Workspace.new + it "returns a list of channels correctly" do + VCR.use_cassette("channels_list") do + response = SlackCLI::Workspace.new + expect(response.channels_list).must_be_kind_of Array end + end +end + + describe "select user or channel" do it "selects user correctly" do - VCR.use_cassette("select user") do + VCR.use_cassette("select_user") do response = SlackCLI::Workspace.new - selected_user = response.select_user("Bot") - expect(selected_user).must_be_kind_of SlackCli::Users + user = response.select_user("drocha") + expect(user).must_be_kind_of SlackCLI::User end end @@ -36,7 +32,7 @@ VCR.use_cassette("select channel") do response = SlackCLI::Workspace.new selected_channel = response.select_channel("seattle-stuff") - expect(selected_channel).must_be_kind_of SlackCli::Channels + expect(selected_channel).must_be_kind_of SlackCLI::Channel end end From e8472947d07b1f5b4d2c87c282efc86a5c8a0bc0 Mon Sep 17 00:00:00 2001 From: dnsrocha Date: Sat, 10 Oct 2020 11:11:25 -0700 Subject: [PATCH 19/20] Wave 3 - all working --- lib/channel.rb | 2 +- lib/slack.rb | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/channel.rb b/lib/channel.rb index cf493f90..a5c0b325 100644 --- a/lib/channel.rb +++ b/lib/channel.rb @@ -22,7 +22,7 @@ def self.list_all response = super('conversations.list') channels = [] response["channels"].each do |channel| - channels << Channel.new(channel["name"], channel["id"], channel["topic"]["value"], channel["num_members"].to_i) + channels << Channel.new(channel["name"], channel["id"], channel["num_members"].to_i, channel["topic"]["value"]) end return channels end diff --git a/lib/slack.rb b/lib/slack.rb index a378750e..0f7607fb 100755 --- a/lib/slack.rb +++ b/lib/slack.rb @@ -34,10 +34,10 @@ def execute_choice(workspace, choice) given_data = nil until choice == "quit" if choice == "list users" - tp workspace.users_list, "username", "real_name", "slack_id" + tp workspace.users.list, "username", "slack_id", "real_name" puts "\n" elsif choice == "list channels" - tp workspace.channels_list, "name", "topic", "member_count", "slack_id" + tp workspace.channels_list, "name", "slack_id", "topic", "member_count" elsif choice == "select user" print "Please enter username or Slack ID: " user_info = gets.chomp From 1308b3e8c742fe4c8cd23622fc3a46a535b7da9a Mon Sep 17 00:00:00 2001 From: dnsrocha Date: Sun, 11 Oct 2020 07:25:07 -0700 Subject: [PATCH 20/20] Wave 3 - all working --- lib/recipient.rb | 2 +- lib/slack.rb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/recipient.rb b/lib/recipient.rb index 89c74f93..c1e886d2 100644 --- a/lib/recipient.rb +++ b/lib/recipient.rb @@ -29,7 +29,7 @@ def send_message(message) headers: {'Content-Type' => 'application/x-www-form-urlencoded'}, body: { token: TOKEN, - channel: slack_id, + channel: @slack_id, text: message }) unless response.code == 200 diff --git a/lib/slack.rb b/lib/slack.rb index 0f7607fb..9e38c442 100755 --- a/lib/slack.rb +++ b/lib/slack.rb @@ -37,7 +37,7 @@ def execute_choice(workspace, choice) tp workspace.users.list, "username", "slack_id", "real_name" puts "\n" elsif choice == "list channels" - tp workspace.channels_list, "name", "slack_id", "topic", "member_count" + tp workspace.channels_list, "channel_name", "slack_id", "topic", "member_count" elsif choice == "select user" print "Please enter username or Slack ID: " user_info = gets.chomp