From 6d09cf0d6fb48039097ba571aeed759d3d74c0ea Mon Sep 17 00:00:00 2001 From: jacob Date: Thu, 4 Jan 2018 02:01:11 -0500 Subject: [PATCH 1/3] added functionality --- lib/t/cli.rb | 29 +++++++++++++++++++++++++++++ spec/cli_spec.rb | 6 ++++++ 2 files changed, 35 insertions(+) diff --git a/lib/t/cli.rb b/lib/t/cli.rb index 5ae10471..6c569647 100644 --- a/lib/t/cli.rb +++ b/lib/t/cli.rb @@ -112,6 +112,7 @@ def authorize desc 'block USER [USER...]', 'Block users.' method_option 'id', aliases: '-i', type: :boolean, desc: 'Specify input as Twitter user IDs instead of screen names.' def block(user, *users) + return if invalid_users_present(user, users) blocked_users, number = fetch_users(users.unshift(user), options) do |users_to_block| client.block(users_to_block) end @@ -950,6 +951,34 @@ def whoami private + def invalid_users_present(user, users) + begin + return true if user_already_blocked?(user) + rescue + say "#{user} was not found" + return true + end + not_found_flag = false + users.each do |user| + begin + return true if user_already_blocked?(user) + rescue + say "#{user} not found \n" + not_found_flag = true + next + end + end + not_found_flag ? true : false + end + + def user_already_blocked?(user) + if client.block?(user) + say "#{user} is already blocked" + return true + end + return false + end + def extract_mentioned_screen_names(text) valid_mention_preceding_chars = /(?:[^a-zA-Z0-9_!#\$%&*@@]|^|RT:?)/o at_signs = /[@@]/ diff --git a/spec/cli_spec.rb b/spec/cli_spec.rb index 5646f6cc..7a872e71 100644 --- a/spec/cli_spec.rb +++ b/spec/cli_spec.rb @@ -111,6 +111,12 @@ @cli.block('sferik') expect(a_post('/1.1/blocks/create.json').with(body: {screen_name: 'sferik'})).to have_been_made end + + it 'notifies of invalid user' do + @cli.block('vinuthalan') + expect($stdout.string).to match('@testcli blocked 1 user') + end + it 'has the correct output' do @cli.block('sferik') expect($stdout.string).to match(/^@testcli blocked 1 user/) From 6187f38943222a2da2af1c237fbd824dc3d8e4ef Mon Sep 17 00:00:00 2001 From: jacob Date: Thu, 4 Jan 2018 03:00:13 -0500 Subject: [PATCH 2/3] modifications --- Gemfile | 1 + lib/t/cli.rb | 32 +++++++++++++++++++------------- 2 files changed, 20 insertions(+), 13 deletions(-) diff --git a/Gemfile b/Gemfile index ec023deb..196a4a6b 100644 --- a/Gemfile +++ b/Gemfile @@ -14,6 +14,7 @@ group :test do gem 'timecop' gem 'tins' gem 'webmock', '>= 1.10.1' + gem 'byebug' end gemspec diff --git a/lib/t/cli.rb b/lib/t/cli.rb index 6c569647..1a66066a 100644 --- a/lib/t/cli.rb +++ b/lib/t/cli.rb @@ -14,6 +14,7 @@ require 't/set' require 't/stream' require 't/utils' +require 'byebug' module T class CLI < Thor @@ -113,6 +114,7 @@ def authorize method_option 'id', aliases: '-i', type: :boolean, desc: 'Specify input as Twitter user IDs instead of screen names.' def block(user, *users) return if invalid_users_present(user, users) + byebug blocked_users, number = fetch_users(users.unshift(user), options) do |users_to_block| client.block(users_to_block) end @@ -952,23 +954,27 @@ def whoami private def invalid_users_present(user, users) - begin - return true if user_already_blocked?(user) - rescue - say "#{user} was not found" - return true - end not_found_flag = false - users.each do |user| - begin - return true if user_already_blocked?(user) + begin + if user_already_blocked?(user) + say "#{user} is already blocked\n" + end rescue say "#{user} not found \n" - not_found_flag = true - next - end + return true if users.empty? + ensure + users.each do |user| + begin + return true if user_already_blocked?(user) + rescue + say "#{user} not found \n" + not_found_flag = true + next + end + end + not_found_flag end - not_found_flag ? true : false + not_found_flag end def user_already_blocked?(user) From 0d7352547cbe5d7185ebe57a0f2622514db259fc Mon Sep 17 00:00:00 2001 From: jacob Date: Thu, 4 Jan 2018 03:01:28 -0500 Subject: [PATCH 3/3] modifications --- Gemfile | 1 - lib/t/cli.rb | 3 +-- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/Gemfile b/Gemfile index 196a4a6b..ec023deb 100644 --- a/Gemfile +++ b/Gemfile @@ -14,7 +14,6 @@ group :test do gem 'timecop' gem 'tins' gem 'webmock', '>= 1.10.1' - gem 'byebug' end gemspec diff --git a/lib/t/cli.rb b/lib/t/cli.rb index 1a66066a..4cc5cd49 100644 --- a/lib/t/cli.rb +++ b/lib/t/cli.rb @@ -14,7 +14,6 @@ require 't/set' require 't/stream' require 't/utils' -require 'byebug' module T class CLI < Thor @@ -114,7 +113,7 @@ def authorize method_option 'id', aliases: '-i', type: :boolean, desc: 'Specify input as Twitter user IDs instead of screen names.' def block(user, *users) return if invalid_users_present(user, users) - byebug + blocked_users, number = fetch_users(users.unshift(user), options) do |users_to_block| client.block(users_to_block) end