From f9185936129192ac474df2c4da23f4b851e9eedc Mon Sep 17 00:00:00 2001 From: Jillianne Ramirez Date: Tue, 19 Mar 2019 10:54:29 -0700 Subject: [PATCH 01/10] Wave 1 complete --- lib/slack.rb | 73 +++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 70 insertions(+), 3 deletions(-) diff --git a/lib/slack.rb b/lib/slack.rb index 960cf2f7..979cde62 100755 --- a/lib/slack.rb +++ b/lib/slack.rb @@ -1,11 +1,78 @@ #!/usr/bin/env ruby +require 'httparty' +require 'awesome_print' +require 'dotenv' +Dotenv.load + + +def list_users + url = 'https://slack.com/api/users.list' + query_parameters = { + token: ENV['SLACK_API_TOKEN'] + } + + response = HTTParty.get(url, query: query_parameters).to_s + response = JSON.parse(response) + + response["members"].length.times do |i| + puts response["members"][i]["name"] + i += 1 + sleep 1 + end +end + + +def list_channels + url = 'https://slack.com/api/channels.list' + query_parameters = { + token: ENV['SLACK_API_TOKEN'] + } + + response = HTTParty.get(url, query: query_parameters).to_s + response = JSON.parse(response) + + + response["channels"].length.times do |i| + puts response["channels"][i]["name"] + i += 1 + sleep 1 + end +end + + +@response = "" + def main puts "Welcome to the Ada Slack CLI!" + puts + puts "What would you like to do? >" + puts "a. list users" + puts "b. list channels" + puts "c. quit" + @response = gets.chomp.downcase.delete(".,") +end + - # TODO project +continue = true - puts "Thank you for using the Ada Slack CLI" +while (continue) + main + if @response == "a" + puts "\nAll the users in the Slack workspace: \n\n" + list_users + elsif @response == "b" + puts "\nAll the channels in the Slack workspace: \n\n" + list_channels + elsif @response == "c" + puts "\nOkay, good-bye! Thank you for using the Ada Slack CLI \n\n" + continue = false + else + puts "\nInvalid input. To quit, choose c." + main + end end -main if __FILE__ == $PROGRAM_NAME \ No newline at end of file + + +# main if __FILE__ == $PROGRAM_NAME \ No newline at end of file From 828a06ea1a3abfb4bfd424a66d5cd580cd91e0d3 Mon Sep 17 00:00:00 2001 From: Jillianne Ramirez Date: Tue, 19 Mar 2019 11:09:04 -0700 Subject: [PATCH 02/10] Wave 2 menu and response options updated --- lib/slack.rb | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/lib/slack.rb b/lib/slack.rb index 979cde62..7df037bc 100755 --- a/lib/slack.rb +++ b/lib/slack.rb @@ -48,8 +48,11 @@ def main puts puts "What would you like to do? >" puts "a. list users" - puts "b. list channels" - puts "c. quit" + puts "b. select user" + puts "c. list channels" + puts "d. select channel" + puts "e. details for selected user and channel" + puts "f. quit" @response = gets.chomp.downcase.delete(".,") end @@ -62,9 +65,15 @@ def main puts "\nAll the users in the Slack workspace: \n\n" list_users elsif @response == "b" + # method call + elsif @response == "c" puts "\nAll the channels in the Slack workspace: \n\n" list_channels - elsif @response == "c" + elsif @response == "d" + # method call + elsif @response == "e" + # method call + elsif @response == "f" puts "\nOkay, good-bye! Thank you for using the Ada Slack CLI \n\n" continue = false else From 4fe2c0bb53f80129d363d9a99276252ed99a56b3 Mon Sep 17 00:00:00 2001 From: laneia Date: Tue, 19 Mar 2019 17:21:15 -0700 Subject: [PATCH 03/10] added methods for wave 2 & 3, mostly working --- lib/slack.rb | 159 ++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 137 insertions(+), 22 deletions(-) diff --git a/lib/slack.rb b/lib/slack.rb index 7df037bc..a2dbefa6 100755 --- a/lib/slack.rb +++ b/lib/slack.rb @@ -1,14 +1,13 @@ #!/usr/bin/env ruby -require 'httparty' -require 'awesome_print' -require 'dotenv' +require "httparty" +require "awesome_print" +require "dotenv" Dotenv.load - def list_users - url = 'https://slack.com/api/users.list' + url = "https://slack.com/api/users.list" query_parameters = { - token: ENV['SLACK_API_TOKEN'] + token: ENV["SLACK_API_TOKEN"], } response = HTTParty.get(url, query: query_parameters).to_s @@ -21,17 +20,41 @@ def list_users end end +def select_user + puts "\nWhich user would you like to select?" + selected_user = gets.chomp + + url = "https://slack.com/api/users.list" + query_parameters = { + token: ENV["SLACK_API_TOKEN"], + user: "#{selected_user}", + } + + response = HTTParty.get(url, query: query_parameters) + + response = JSON.parse(response.body) + + response["members"].length.times do |i| + if response["members"][i]["name"].include? selected_user + desired_id = response["members"][i]["id"] + ap "You have selected #{response["members"][i]["name"]} with member ID #{desired_id}" + return desired_id + else + i += 1 + end + end + ap "There is no user with that name." +end def list_channels - url = 'https://slack.com/api/channels.list' + url = "https://slack.com/api/channels.list" query_parameters = { - token: ENV['SLACK_API_TOKEN'] + token: ENV["SLACK_API_TOKEN"], } - + response = HTTParty.get(url, query: query_parameters).to_s response = JSON.parse(response) - response["channels"].length.times do |i| puts response["channels"][i]["name"] i += 1 @@ -39,9 +62,83 @@ def list_channels end end +def select_channel + puts "\nWhich channel would you like to select?" + selected_channel = gets.chomp -@response = "" + url = "https://slack.com/api/channels.list" + query_parameters = { + token: ENV["SLACK_API_TOKEN"], + user: "#{selected_channel}", + } + + response = HTTParty.get(url, query: query_parameters) + + response = JSON.parse(response.body) + + response["channels"].length.times do |i| + if response["channels"][i]["name"].include? selected_channel + desired_id = response["channels"][i]["id"] + ap "You have selected #{response["channels"][i]["name"]} with channel ID #{desired_id}" + return desired_id + else + i += 1 + end + end + ap "There is no channel with that name." +end +def user_details(select_user) + ap select_user + url = "https://slack.com/api/users.profile.get" + + query_parameters = { + token: ENV["SLACK_API_TOKEN"], + user: select_user, + } + + response = HTTParty.get(url, query: query_parameters) + #response = JSON.parse(response.body) + + ap "#{response["profile"]}" +end + +def channel_details(select_channel) + url = "https://slack.com/api/channels.info" + + query_parameters = { + token: ENV["SLACK_API_TOKEN"], + channel: select_channel, + } + + response = HTTParty.get(url, query: query_parameters) + # response = JSON.parse(response.body) + + ap "#{response["channel"]}" +end + +def send_message(id) + puts "this is id", id + puts "Please type the message you would like to send." + message = gets.chomp + + url = "https://slack.com/api/chat.postMessage" + + query_parameters = { + token: ENV["SLACK_API_TOKEN"], + channel: id, + text: message, + # as_user: true, # still will not send with as_user enabled and only slackbot w/o it + } + + response = HTTParty.post(url, query: query_parameters) + #response = JSON.parse(response.body) + + puts response + ap "Message sent!" +end + +@response = "" def main puts "Welcome to the Ada Slack CLI!" @@ -51,13 +148,13 @@ def main puts "b. select user" puts "c. list channels" puts "d. select channel" - puts "e. details for selected user and channel" - puts "f. quit" + puts "e. details for selected channel/user" + puts "f. message channel/user" + puts "g. quit" @response = gets.chomp.downcase.delete(".,") end - -continue = true +continue = true while (continue) main @@ -65,23 +162,41 @@ def main puts "\nAll the users in the Slack workspace: \n\n" list_users elsif @response == "b" - # method call + select_user elsif @response == "c" puts "\nAll the channels in the Slack workspace: \n\n" list_channels elsif @response == "d" - # method call + select_channel elsif @response == "e" - # method call + puts "\nWould you like details for (a) a user or (b) a channel?" + puts "Please type a or b." + select = gets.chomp + if select == "a" + user_details(select_user) + elsif select == "b" + channel_details(select_channel) + else + puts "Invalid selection." + end elsif @response == "f" + puts "\nWould you like to message (a) a user or (b) a channel?" + puts "Please type a or b." + select = gets.chomp + if select == "a" + send_message(select_user) + elsif select == "b" + send_message(select_channel) + else + puts "Invalid selection." + end + elsif @response == "g" puts "\nOkay, good-bye! Thank you for using the Ada Slack CLI \n\n" continue = false else - puts "\nInvalid input. To quit, choose c." + puts "\nInvalid input. To quit, choose g." main end end - - -# main if __FILE__ == $PROGRAM_NAME \ No newline at end of file +# main if __FILE__ == $PROGRAM_NAME From b9e8c5f185095531c1295d7c1aa4abf988c3d87a Mon Sep 17 00:00:00 2001 From: Jillianne Ramirez Date: Wed, 20 Mar 2019 10:21:05 -0700 Subject: [PATCH 04/10] Wave 3 completed --- lib/channel.rb | 70 +++++++++++++++++++ lib/recipient.rb | 54 ++++++++++++++ lib/slack.rb | 163 +++++++++++++++++++++++-------------------- lib/user.rb | 70 +++++++++++++++++++ specs/test_helper.rb | 28 ++++++-- 5 files changed, 305 insertions(+), 80 deletions(-) create mode 100644 lib/channel.rb create mode 100644 lib/recipient.rb create mode 100644 lib/user.rb diff --git a/lib/channel.rb b/lib/channel.rb new file mode 100644 index 00000000..558423fe --- /dev/null +++ b/lib/channel.rb @@ -0,0 +1,70 @@ +require 'httparty' +require 'awesome_print' +require 'dotenv' +Dotenv.load + +class Channel + def self.get_channels + url = 'https://slack.com/api/channels.list' + query_parameters = { + token: ENV['SLACK_API_TOKEN'] + } + + response = HTTParty.get(url, query: query_parameters).to_s + response = JSON.parse(response) + + return response["channels"] + end + + def self.list_channels(channels) + channels.each do |channel| + puts channel["name"] + end + end + + def self.select_channel(channels) + continue = true + selected_channel = nil + + while(continue) + ap "Select your channel with one of the following: " + puts "a. channel name" + puts "b. SlackID" + puts "c. quit\n" + print "> " + select_channel_response = gets.chomp.downcase + + if select_channel_response == "a" || select_channel_response == "channel name" + print "\nChannel name > " + requested_channel_name = gets.chomp.downcase + + channels.each do |channel| + if channel["name"] == requested_channel_name + selected_channel = channel + end + end + + continue = false + + elsif select_channel_response == "b" || select_channel_response == "slackid" + print "\nSlackID > " + requested_id = gets.chomp.upcase + + channels.each do |channel| + if channel["id"] == requested_id + selected_channel = channel + end + end + + continue = false + + elsif select_channel_response == "c" || select_channel_response == "quit" + continue = false + else + puts "Inaccurate response.\n\n" + end + end + + return selected_channel + end +end \ No newline at end of file diff --git a/lib/recipient.rb b/lib/recipient.rb new file mode 100644 index 00000000..0aa2b196 --- /dev/null +++ b/lib/recipient.rb @@ -0,0 +1,54 @@ +require 'httparty' +require 'awesome_print' +require 'dotenv' +Dotenv.load + +class Recipient + attr_reader :is_user + + def initialize(slack_id, is_user) + @slack_id = slack_id + @is_user = is_user + end + + def details(slack_id) + if @is_user + url = 'https://slack.com/api/users.list' + query_parameters = { + token: ENV['SLACK_API_TOKEN'] + } + + response = HTTParty.get(url, query: query_parameters).to_s + response = JSON.parse(response) + + users = response["members"] + + users.each do |user| + if user["id"] == @slack_id + puts "Your selected user has the following details:" + puts "Name: #{user["real_name"]}" + puts "SlackID #{user["id"]}" + puts "Username: #{user["name"]}" + end + end + else + url = 'https://slack.com/api/channels.list' + query_parameters = { + token: ENV['SLACK_API_TOKEN'] + } + + response = HTTParty.get(url, query: query_parameters).to_s + response = JSON.parse(response) + channels = response["channels"] + + channels.each do |channel| + if channel["id"] == @slack_id + puts "Your selected channel has the following details:" + puts "Channel name: #{(channel["name"]).capitalize}" + puts "Topic: #{channel["topic"]["value"]}" + puts "Purpose: #{channel["purpose"]["value"]}" + end + end + end + end +end \ No newline at end of file diff --git a/lib/slack.rb b/lib/slack.rb index 7df037bc..30473637 100755 --- a/lib/slack.rb +++ b/lib/slack.rb @@ -2,86 +2,99 @@ require 'httparty' require 'awesome_print' require 'dotenv' +require_relative '../lib/recipient' +require_relative '../lib/channel' +require_relative '../lib/user' Dotenv.load - - -def list_users - url = 'https://slack.com/api/users.list' - query_parameters = { - token: ENV['SLACK_API_TOKEN'] - } - - response = HTTParty.get(url, query: query_parameters).to_s - response = JSON.parse(response) - - response["members"].length.times do |i| - puts response["members"][i]["name"] - i += 1 - sleep 1 - end -end - - -def list_channels - url = 'https://slack.com/api/channels.list' - query_parameters = { - token: ENV['SLACK_API_TOKEN'] - } - - response = HTTParty.get(url, query: query_parameters).to_s - response = JSON.parse(response) - - - response["channels"].length.times do |i| - puts response["channels"][i]["name"] - i += 1 - sleep 1 - end -end - - -@response = "" - +# require 'table_print' def main - puts "Welcome to the Ada Slack CLI!" - puts - puts "What would you like to do? >" - puts "a. list users" - puts "b. select user" - puts "c. list channels" - puts "d. select channel" - puts "e. details for selected user and channel" - puts "f. quit" - @response = gets.chomp.downcase.delete(".,") -end - - -continue = true + ap "Welcome to the Ada Slack CLI!" + + def menu + puts + ap "Main Menu" + puts "a. list users" + puts "b. select user" + puts "c. list channels" + puts "d. select channel" + puts "e. details for selected user and channel" + puts "f. send message" + puts "g. quit\n\n" + + ap "What would you like to do?" + print "> " + @menu_response = gets.chomp.downcase.delete(".") + puts + end -while (continue) - main - if @response == "a" - puts "\nAll the users in the Slack workspace: \n\n" - list_users - elsif @response == "b" - # method call - elsif @response == "c" - puts "\nAll the channels in the Slack workspace: \n\n" - list_channels - elsif @response == "d" - # method call - elsif @response == "e" - # method call - elsif @response == "f" - puts "\nOkay, good-bye! Thank you for using the Ada Slack CLI \n\n" - continue = false - else - puts "\nInvalid input. To quit, choose c." - main + users = User.get_users + channels = Channel.get_channels + recipient = nil + continue = true + + puts "There are #{channels.length} channels and #{users.length} users." + + while (continue) + menu + if @menu_response == "a" || @menu_response == "list users" + ap "All users in the Slack workspace: " + User.list_users(users) + elsif @menu_response == "b" || @menu_response == "select user" + user = User.select_user(users) + if user.nil? + puts "Error. User not found." + else + recipient = Recipient.new(user["id"], true) + end + elsif @menu_response == "c" || @menu_response == "list channels" + ap "All channels in the Slack workspace: " + Channel.list_channels(channels) + elsif @menu_response == "d" || @menu_response == "select channel" + channel = Channel.select_channel(channels) + if channel.nil? + puts "Error. Channel not found." + else + recipient = Recipient.new(channel["id"], false) + end + elsif @menu_response == "e" || @menu_response == "details" + if recipient.nil? + puts "No details to show, please select a channel or user." + else + if recipient.details(user["id"]) == nil + recipient.details(channel["id"]) + else + recipient.details(user["id"]) + end + end + elsif @menu_response == "f" || @menu_response == "send message" + puts "Okay, you want to send a message." + puts "What is the SlackID or name of the channel?" + print "> " + channel = gets.chomp + + puts "What is the message you want to send?" + print "> " + text = gets.chomp + + url = 'https://slack.com/api/chat.postMessage' + query_parameters = { + token: ENV['SLACK_API_TOKEN'], + channel: channel, + text: text, + } + + HTTParty.post(url, query: query_parameters) + + elsif @menu_response == "g" || @menu_response == "quit" + ap "Okay, good-bye! Thank you for using the Ada Slack CLI!" + continue = false + else + ap "Invalid input. To quit, choose c." + menu + end end end - -# main if __FILE__ == $PROGRAM_NAME \ No newline at end of file +main if __FILE__ == $PROGRAM_NAME \ No newline at end of file diff --git a/lib/user.rb b/lib/user.rb new file mode 100644 index 00000000..ee685e91 --- /dev/null +++ b/lib/user.rb @@ -0,0 +1,70 @@ +require 'httparty' +require 'awesome_print' +require 'dotenv' +Dotenv.load + +class User + def self.get_users + url = 'https://slack.com/api/users.list' + query_parameters = { + token: ENV['SLACK_API_TOKEN'] + } + + response = HTTParty.get(url, query: query_parameters).to_s + response = JSON.parse(response) + + return response["members"] + end + + def self.list_users(users) + users.each do |user| + puts user["name"] + end + end + + def self.select_user(users) + continue = true + selected_user = nil + + while(continue) + ap "Select your user with one of the following: " + puts "a. username" + puts "b. SlackID" + puts "c. quit\n" + print "> " + select_user_response = gets.chomp.downcase + + if select_user_response == "a" || select_user_response == "username" + print "\nUsername > " + requested_username = gets.chomp.downcase + + users.each do |user| + if user["name"] == requested_username + selected_user = user + end + end + + continue = false + + elsif select_user_response == "b" || select_user_response == "slackid" + print "\nSlackID > " + requested_id = gets.chomp.upcase + + users.each do |user| + if user["id"] == requested_id + selected_user = user + end + end + + continue = false + + elsif select_user_response == "c" || select_user_response == "quit" + continue = false + else + puts "Invalid response.\n\n" + end + end + + return selected_user + end +end \ No newline at end of file diff --git a/specs/test_helper.rb b/specs/test_helper.rb index 81ccd06b..d4fa9485 100644 --- a/specs/test_helper.rb +++ b/specs/test_helper.rb @@ -2,14 +2,32 @@ SimpleCov.start require 'minitest' -require 'minitest/autorun' -require 'minitest/reporters' require 'minitest/skip_dsl' -require 'vcr' + +require "minitest/autorun" +require "minitest/reporters" +require "vcr" +require "webmock/minitest" +require "dotenv" +Dotenv.load + +require_relative "../lib/location_search" +require_relative '../lib/recipient' +require_relative '../lib/channel' +require_relative '../lib/user' +require_relative '../lib/slack' Minitest::Reporters.use! Minitest::Reporters::SpecReporter.new VCR.configure do |config| - config.cassette_library_dir = "specs/cassettes" - config.hook_into :webmock + config.cassette_library_dir = "specs/cassettes" # folder where casettes will be located + config.hook_into :webmock # tie into this other tool called 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 + } + # Don't leave our token lying around in a cassette file. + config.filter_sensitive_data("") do + ENV["LOCATIONIQ_TOKEN"] + end end \ No newline at end of file From 7a69a966d043bacdbaeae09e3dbfca7cbf105e67 Mon Sep 17 00:00:00 2001 From: Jillianne Ramirez Date: Thu, 21 Mar 2019 10:36:38 -0700 Subject: [PATCH 05/10] Corrected listing users/channels functionality --- lib/channel.rb | 6 +++++- lib/user.rb | 5 ++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/lib/channel.rb b/lib/channel.rb index 558423fe..5f5b1904 100644 --- a/lib/channel.rb +++ b/lib/channel.rb @@ -18,7 +18,11 @@ def self.get_channels def self.list_channels(channels) channels.each do |channel| - puts channel["name"] + puts "Channel name: #{channel["name"]}" + puts "Topic: #{channel["topic"]["value"]}" + puts "Member Count: #{channel["members"].length}" + puts "Slack ID: #{channel["id"]}" + puts end end diff --git a/lib/user.rb b/lib/user.rb index ee685e91..b0172888 100644 --- a/lib/user.rb +++ b/lib/user.rb @@ -18,7 +18,10 @@ def self.get_users def self.list_users(users) users.each do |user| - puts user["name"] + puts "Name: #{user["real_name"]}" + puts "Username: #{user["name"]}" + puts "SlackID: #{user["id"]}" + puts end end From 2b2524c7cad920de845a37f5cadab3490dbbd76a Mon Sep 17 00:00:00 2001 From: Jillianne Ramirez Date: Thu, 21 Mar 2019 10:42:15 -0700 Subject: [PATCH 06/10] Corrected details functionality --- lib/recipient.rb | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/lib/recipient.rb b/lib/recipient.rb index 0aa2b196..f1180e27 100644 --- a/lib/recipient.rb +++ b/lib/recipient.rb @@ -27,8 +27,8 @@ def details(slack_id) if user["id"] == @slack_id puts "Your selected user has the following details:" puts "Name: #{user["real_name"]}" - puts "SlackID #{user["id"]}" puts "Username: #{user["name"]}" + puts "SlackID: #{user["id"]}" end end else @@ -44,9 +44,10 @@ def details(slack_id) channels.each do |channel| if channel["id"] == @slack_id puts "Your selected channel has the following details:" - puts "Channel name: #{(channel["name"]).capitalize}" + puts "Channel name: #{channel["name"]}" puts "Topic: #{channel["topic"]["value"]}" - puts "Purpose: #{channel["purpose"]["value"]}" + puts "Member Count: #{channel["members"].length}" + puts "Slack ID: #{channel["id"]}" end end end From 2dbb3c21c85e8b3b314585009e4c10d5d430f9bf Mon Sep 17 00:00:00 2001 From: Jillianne Ramirez Date: Thu, 21 Mar 2019 16:13:36 -0700 Subject: [PATCH 07/10] corrected details option output --- lib/slack.rb | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/lib/slack.rb b/lib/slack.rb index 30473637..f6e9f166 100755 --- a/lib/slack.rb +++ b/lib/slack.rb @@ -1,5 +1,5 @@ #!/usr/bin/env ruby -require 'httparty' +require 'httparty' require 'awesome_print' require 'dotenv' require_relative '../lib/recipient' @@ -8,6 +8,9 @@ Dotenv.load # require 'table_print' +class SlackApiError < StandardError; end + + def main ap "Welcome to the Ada Slack CLI!" @@ -61,7 +64,7 @@ def menu if recipient.nil? puts "No details to show, please select a channel or user." else - if recipient.details(user["id"]) == nil + if user.nil? recipient.details(channel["id"]) else recipient.details(user["id"]) From e5ceaa5a47ccf7646faf70e545c330b7a94101fd Mon Sep 17 00:00:00 2001 From: laneia Date: Mon, 1 Apr 2019 01:28:06 -0700 Subject: [PATCH 08/10] added basic tests for channel.rb --- specs/channel_spec.rb | 19 +++++++++++++++++++ specs/test_helper.rb | 17 ++++++++--------- 2 files changed, 27 insertions(+), 9 deletions(-) create mode 100644 specs/channel_spec.rb diff --git a/specs/channel_spec.rb b/specs/channel_spec.rb new file mode 100644 index 00000000..78bffc58 --- /dev/null +++ b/specs/channel_spec.rb @@ -0,0 +1,19 @@ +require "simplecov" +SimpleCov.start + +require_relative "test_helper" +require_relative "../lib/channel.rb" + +describe "Channel class" do + before do + VCR.use_cassette("channel_list") do + @response = Channel.get_channels + end + end + + it "can retrieve a list of channels" do + expect(@response).must_be_kind_of Array + expect(@response[0]).must_be_kind_of Hash + expect(@response[0]["members"].length).must_be_kind_of Integer + end +end diff --git a/specs/test_helper.rb b/specs/test_helper.rb index d4fa9485..c044f8ce 100644 --- a/specs/test_helper.rb +++ b/specs/test_helper.rb @@ -1,8 +1,8 @@ -require 'simplecov' +require "simplecov" SimpleCov.start -require 'minitest' -require 'minitest/skip_dsl' +require "minitest" +require "minitest/skip_dsl" require "minitest/autorun" require "minitest/reporters" @@ -11,11 +11,10 @@ require "dotenv" Dotenv.load -require_relative "../lib/location_search" -require_relative '../lib/recipient' -require_relative '../lib/channel' -require_relative '../lib/user' -require_relative '../lib/slack' +require_relative "../lib/recipient" +require_relative "../lib/channel" +require_relative "../lib/user" +require_relative "../lib/slack" Minitest::Reporters.use! Minitest::Reporters::SpecReporter.new @@ -30,4 +29,4 @@ config.filter_sensitive_data("") do ENV["LOCATIONIQ_TOKEN"] end -end \ No newline at end of file +end From 7df6f605c9430ab9d1896b5b31218678f483cb5b Mon Sep 17 00:00:00 2001 From: laneia Date: Mon, 1 Apr 2019 01:37:38 -0700 Subject: [PATCH 09/10] add basic tests for user.rb --- specs/user_spec.rb | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 specs/user_spec.rb diff --git a/specs/user_spec.rb b/specs/user_spec.rb new file mode 100644 index 00000000..f3506038 --- /dev/null +++ b/specs/user_spec.rb @@ -0,0 +1,18 @@ +require "simplecov" +SimpleCov.start + +require_relative "test_helper" +require_relative "../lib/user.rb" + +describe "User class" do + before do + VCR.use_cassette("user_list") do + @response = User.get_users + end + end + + it "can retrieve a list of users" do + expect(@response).must_be_kind_of Array + expect(@response[0]).must_be_kind_of Hash + end +end From cbc0e3d5fdc4afe73cf27010d68234d51c33cff9 Mon Sep 17 00:00:00 2001 From: laneia Date: Mon, 1 Apr 2019 02:22:38 -0700 Subject: [PATCH 10/10] added recipient_spec.rb file, test not working --- lib/recipient.rb | 24 ++++++++++++------------ specs/recipient_spec.rb | 18 ++++++++++++++++++ 2 files changed, 30 insertions(+), 12 deletions(-) create mode 100644 specs/recipient_spec.rb diff --git a/lib/recipient.rb b/lib/recipient.rb index f1180e27..d80867ed 100644 --- a/lib/recipient.rb +++ b/lib/recipient.rb @@ -1,6 +1,6 @@ -require 'httparty' -require 'awesome_print' -require 'dotenv' +require "httparty" +require "awesome_print" +require "dotenv" Dotenv.load class Recipient @@ -11,16 +11,16 @@ def initialize(slack_id, is_user) @is_user = is_user end - def details(slack_id) + def self.details(slack_id) if @is_user - url = 'https://slack.com/api/users.list' + url = "https://slack.com/api/users.list" query_parameters = { - token: ENV['SLACK_API_TOKEN'] + token: ENV["SLACK_API_TOKEN"], } - + response = HTTParty.get(url, query: query_parameters).to_s response = JSON.parse(response) - + users = response["members"] users.each do |user| @@ -32,11 +32,11 @@ def details(slack_id) end end else - url = 'https://slack.com/api/channels.list' + url = "https://slack.com/api/channels.list" query_parameters = { - token: ENV['SLACK_API_TOKEN'] + token: ENV["SLACK_API_TOKEN"], } - + response = HTTParty.get(url, query: query_parameters).to_s response = JSON.parse(response) channels = response["channels"] @@ -52,4 +52,4 @@ def details(slack_id) end end end -end \ No newline at end of file +end diff --git a/specs/recipient_spec.rb b/specs/recipient_spec.rb new file mode 100644 index 00000000..1513c90a --- /dev/null +++ b/specs/recipient_spec.rb @@ -0,0 +1,18 @@ +require "simplecov" +SimpleCov.start + +require_relative "test_helper" +require_relative "../lib/recipient.rb" + +# File always wants to make GET request to channel API regardless of @is_user status. +# Not sure how to make tests work for this. + +# describe "Recipient class" do +# before do +# @is_user = true +# end +# it "Can get details about a user" do +# slack_id = "USLACKBOT" +# expect(Recipient.details(slack_id)).must_be_kind_of Hash +# end +# end