spec/lib/release_tools/shared_status_spec.rb (90 lines of code) (raw):

# frozen_string_literal: true require 'spec_helper' describe ReleaseTools::SharedStatus do describe '.dry_run?' do it 'returns true when set' do ClimateControl.modify(TEST: 'true') do expect(described_class.dry_run?).to be(true) end end it 'returns false when unset' do ClimateControl.modify(TEST: nil) do expect(described_class.dry_run?).to be(false) end end it 'returns false when set to "false"' do ClimateControl.modify(TEST: 'false') do expect(described_class.dry_run?).to be(false) end end it 'returns false when set to "False"' do ClimateControl.modify(TEST: 'False') do expect(described_class.dry_run?).to be(false) end end it 'returns true when not set to "false"' do ClimateControl.modify(TEST: 'yes') do expect(described_class.dry_run?).to be(true) end end end describe '.security_release?' do it 'returns true when set' do ClimateControl.modify(SECURITY: 'true') do expect(described_class.security_release?).to be(true) end end it 'returns false when unset' do ClimateControl.modify(SECURITY: nil) do expect(described_class.security_release?).to be(false) end end end describe '.as_security_release' do it 'allows enabling of patch releases for the duration of the block' do described_class.as_security_release do expect(described_class.security_release?).to be(true) end expect(described_class.security_release?).to be(false) end end describe '.rspec?' do it 'returns false' do expect(described_class.rspec?).to be(true) end it 'returns true when not rspec' do allow(File).to receive(:basename).with($PROGRAM_NAME).and_return('rake') expect(described_class.rspec?).to be(false) end end describe '.critical_patch_release?' do let(:security_fixes) { [] } before do allow(described_class).to receive(:security_fixes).and_return(security_fixes) end context 'when there are no security fixes' do it 'is not a critical patch release' do expect(described_class).not_to be_critical_patch_release end end context 'when there are security fixes' do let(:issue_with_critical_label) do create(:issue, labels: [described_class::CRITICAL_RELEASE_LABEL]) end let(:issue_without_critical_label) do create(:issue, labels: ['other_label']) end context 'with a critical release label' do let(:security_fixes) { [issue_without_critical_label, issue_with_critical_label] } it 'is a critical patch release' do expect(described_class).to be_critical_patch_release end end context 'without a critical release label' do let(:security_fixes) { [issue_without_critical_label] } it 'is not a critical patch release' do expect(described_class).not_to be_critical_patch_release end end end end end