67c38a6573
First attempt at allowing a feature flag to be set via the command line when running tests. This will enable the flag, run the tests, and then disable the flag. Using OptionParser meant changing how scenarios get the instance address, so this also allows the address to be set as a command line option. It's backwards compatible (you can still provide the address as the command line option after the scenario)
28 lines
925 B
Ruby
28 lines
925 B
Ruby
# frozen_string_literal: true
|
|
|
|
describe QA::Scenario::Template do
|
|
let(:feature) { spy('Runtime::Feature') }
|
|
let(:release) { spy('Runtime::Release') }
|
|
|
|
before do
|
|
stub_const('QA::Runtime::Release', release)
|
|
stub_const('QA::Runtime::Feature', feature)
|
|
allow(QA::Specs::Runner).to receive(:perform)
|
|
allow(QA::Runtime::Address).to receive(:valid?).and_return(true)
|
|
end
|
|
|
|
it 'allows a feature to be enabled' do
|
|
subject.perform({ enable_feature: 'a-feature' })
|
|
|
|
expect(feature).to have_received(:enable).with('a-feature')
|
|
end
|
|
|
|
it 'ensures an enabled feature is disabled afterwards' do
|
|
allow(QA::Specs::Runner).to receive(:perform).and_raise('failed test')
|
|
|
|
expect { subject.perform({ enable_feature: 'a-feature' }) }.to raise_error('failed test')
|
|
|
|
expect(feature).to have_received(:enable).with('a-feature')
|
|
expect(feature).to have_received(:disable).with('a-feature')
|
|
end
|
|
end
|