Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 4 additions & 2 deletions lib/action_account.rb
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,13 @@

# rubocop:disable Metrics/BlockLength
class ActionAccount
attr_reader :argv, :stdout, :stderr
attr_reader :argv, :stdout, :stderr, :rails_env

def initialize(argv:, stdout:, stderr:)
def initialize(argv:, stdout:, stderr:, rails_env: Rails.env)
@argv = argv
@stdout = stdout
@stderr = stderr
@rails_env = rails_env
end

def script_base
Expand All @@ -20,6 +21,7 @@ def script_base
subtask_class: subtask(argv.shift),
banner: banner,
reason_arg: true,
rails_env:,
)
end

Expand Down
19 changes: 16 additions & 3 deletions lib/script_base.rb
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,24 @@
require 'optparse'

class ScriptBase
attr_reader :argv, :stdout, :stderr, :subtask_class, :banner

def initialize(argv:, stdout:, stderr:, subtask_class:, banner:, reason_arg:)
attr_reader :argv, :stdout, :stderr, :subtask_class, :banner, :rails_env

def initialize(
argv:,
stdout:,
stderr:,
subtask_class:,
banner:,
reason_arg:,
rails_env: Rails.env
)
@argv = argv
@stdout = stdout
@stderr = stderr
@subtask_class = subtask_class
@banner = banner
@reason_arg = reason_arg
@rails_env = rails_env
end

def reason_arg?
Expand Down Expand Up @@ -56,6 +65,10 @@ def config
def run
option_parser.parse!(argv)

if rails_env.local?
stderr.puts "⚠️ WARNING: returning local data for #{File.basename($PROGRAM_NAME)}"
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👏

end

if config.show_help? || !subtask_class
stderr.puts '*Task*: `help`'
stderr.puts '*UUIDs*: N/A'
Expand Down
3 changes: 2 additions & 1 deletion spec/lib/action_account_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,9 @@
let(:stdout) { StringIO.new }
let(:stderr) { StringIO.new }
let(:argv) { [] }
let(:rails_env) { ActiveSupport::EnvironmentInquirer.new('production') }

subject(:action_account) { ActionAccount.new(argv:, stdout:, stderr:) }
subject(:action_account) { ActionAccount.new(argv:, stdout:, stderr:, rails_env:) }

describe 'command line run' do
let(:argv) { ['review-pass', user.uuid, '--reason', 'INV1234'] }
Expand Down
26 changes: 26 additions & 0 deletions spec/lib/script_base_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ def run(args:, config:) # rubocop:disable Lint/UnusedMethodArgument

describe '#run' do
let(:argv) { [] }
let(:env) { 'production' }

subject(:base) do
ScriptBase.new(
Expand All @@ -31,9 +32,34 @@ def run(args:, config:) # rubocop:disable Lint/UnusedMethodArgument
subtask_class:,
banner: '',
reason_arg: false,
rails_env: ActiveSupport::EnvironmentInquirer.new(env),
)
end

context 'running in production vs locally' do
subject(:run) { base.run }

context 'in production' do
let(:env) { 'production' }

it 'does not warn' do
run

expect(stderr.string).to_not include('WARNING')
end
end

context 'in development' do
let(:env) { 'development' }

it 'warns that it is in development' do
run

expect(stderr.string).to include('WARNING: returning local data')
end
end
end

context 'with --deflate' do
let(:argv) { %w[--deflate] }

Expand Down