diff options
Diffstat (limited to 'spec/bin/feature_flag_spec.rb')
-rw-r--r-- | spec/bin/feature_flag_spec.rb | 40 |
1 files changed, 18 insertions, 22 deletions
diff --git a/spec/bin/feature_flag_spec.rb b/spec/bin/feature_flag_spec.rb index f85b8f22210..41117880f95 100644 --- a/spec/bin/feature_flag_spec.rb +++ b/spec/bin/feature_flag_spec.rb @@ -1,6 +1,7 @@ # frozen_string_literal: true -require 'spec_helper' +require 'fast_spec_helper' +require 'rspec-parameterized' load File.expand_path('../../bin/feature-flag', __dir__) @@ -11,25 +12,20 @@ RSpec.describe 'bin/feature-flag' do let(:argv) { %w[feature-flag-name -t development -g group::memory -i https://url -m http://url] } let(:options) { FeatureFlagOptionParser.parse(argv) } let(:creator) { described_class.new(options) } - let(:existing_flag) { File.join('config', 'feature_flags', 'development', 'existing-feature-flag.yml') } + let(:existing_flags) do + { 'existing-feature-flag' => File.join('config', 'feature_flags', 'development', 'existing-feature-flag.yml') } + end before do - # create a dummy feature flag - FileUtils.mkdir_p(File.dirname(existing_flag)) - File.write(existing_flag, '{}') + allow(creator).to receive(:all_feature_flag_names) { existing_flags } + allow(creator).to receive(:branch_name) { 'feature-branch' } + allow(creator).to receive(:editor) { nil } # ignore writes allow(File).to receive(:write).and_return(true) # ignore stdin allow($stdin).to receive(:gets).and_raise('EOF') - - # ignore Git commands - allow(creator).to receive(:branch_name) { 'feature-branch' } - end - - after do - FileUtils.rm_f(existing_flag) end subject { creator.execute } @@ -139,7 +135,7 @@ RSpec.describe 'bin/feature-flag' do expect($stdin).to receive(:gets).and_return(type) expect do expect(described_class.read_type).to eq(:development) - end.to output(/specify the type/).to_stdout + end.to output(/Specify the feature flag type/).to_stdout end context 'when invalid type is given' do @@ -151,7 +147,7 @@ RSpec.describe 'bin/feature-flag' do expect do expect { described_class.read_type }.to raise_error(/EOF/) - end.to output(/specify the type/).to_stdout + end.to output(/Specify the feature flag type/).to_stdout .and output(/Invalid type specified/).to_stderr end end @@ -165,7 +161,7 @@ RSpec.describe 'bin/feature-flag' do expect($stdin).to receive(:gets).and_return(group) expect do expect(described_class.read_group).to eq('group::memory') - end.to output(/specify the group/).to_stdout + end.to output(/Specify the group introducing the feature flag/).to_stdout end context 'invalid group given' do @@ -177,8 +173,8 @@ RSpec.describe 'bin/feature-flag' do expect do expect { described_class.read_group }.to raise_error(/EOF/) - end.to output(/specify the group/).to_stdout - .and output(/Group needs to include/).to_stderr + end.to output(/Specify the group introducing the feature flag/).to_stdout + .and output(/The group needs to include/).to_stderr end end end @@ -190,7 +186,7 @@ RSpec.describe 'bin/feature-flag' do expect($stdin).to receive(:gets).and_return(url) expect do expect(described_class.read_introduced_by_url).to eq('https://merge-request') - end.to output(/can you paste the URL here/).to_stdout + end.to output(/URL of the MR introducing the feature flag/).to_stdout end context 'empty URL given' do @@ -200,7 +196,7 @@ RSpec.describe 'bin/feature-flag' do expect($stdin).to receive(:gets).and_return(url) expect do expect(described_class.read_introduced_by_url).to be_nil - end.to output(/can you paste the URL here/).to_stdout + end.to output(/URL of the MR introducing the feature flag/).to_stdout end end @@ -213,7 +209,7 @@ RSpec.describe 'bin/feature-flag' do expect do expect { described_class.read_introduced_by_url }.to raise_error(/EOF/) - end.to output(/can you paste the URL here/).to_stdout + end.to output(/URL of the MR introducing the feature flag/).to_stdout .and output(/URL needs to start with/).to_stderr end end @@ -227,7 +223,7 @@ RSpec.describe 'bin/feature-flag' do expect($stdin).to receive(:gets).and_return(url) expect do expect(described_class.read_rollout_issue_url(options)).to eq('https://issue') - end.to output(/Paste URL of `rollout issue` here/).to_stdout + end.to output(/URL of the rollout issue/).to_stdout end context 'invalid URL given' do @@ -239,7 +235,7 @@ RSpec.describe 'bin/feature-flag' do expect do expect { described_class.read_rollout_issue_url(options) }.to raise_error(/EOF/) - end.to output(/Paste URL of `rollout issue` here/).to_stdout + end.to output(/URL of the rollout issue/).to_stdout .and output(/URL needs to start/).to_stderr end end |