diff --git a/lib/t/cli.rb b/lib/t/cli.rb index 5ae10471..4cc5cd49 100644 --- a/lib/t/cli.rb +++ b/lib/t/cli.rb @@ -112,6 +112,8 @@ 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 +952,38 @@ def whoami private + def invalid_users_present(user, users) + not_found_flag = false + begin + if user_already_blocked?(user) + say "#{user} is already blocked\n" + end + rescue + say "#{user} not found \n" + 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 + 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/)