diff options
Diffstat (limited to 'spec/models/project_spec.rb')
-rw-r--r-- | spec/models/project_spec.rb | 167 |
1 files changed, 142 insertions, 25 deletions
diff --git a/spec/models/project_spec.rb b/spec/models/project_spec.rb index 71bd7972436..5c09faafd83 100644 --- a/spec/models/project_spec.rb +++ b/spec/models/project_spec.rb @@ -3631,12 +3631,36 @@ describe Project do subject { project.auto_devops_enabled? } + context 'when explicitly enabled' do + before do + create(:project_auto_devops, project: project) + end + + it { is_expected.to be_truthy } + end + + context 'when explicitly disabled' do + before do + create(:project_auto_devops, project: project, enabled: false) + end + + it { is_expected.to be_falsey } + end + context 'when enabled in settings' do before do stub_application_setting(auto_devops_enabled: true) end it { is_expected.to be_truthy } + end + + context 'when disabled in settings' do + before do + stub_application_setting(auto_devops_enabled: false) + end + + it { is_expected.to be_falsey } context 'when explicitly enabled' do before do @@ -3648,34 +3672,91 @@ describe Project do context 'when explicitly disabled' do before do - create(:project_auto_devops, project: project, enabled: false) + create(:project_auto_devops, :disabled, project: project) end it { is_expected.to be_falsey } end end - context 'when disabled in settings' do + context 'when force_autodevops_on_by_default is enabled for the project' do + it { is_expected.to be_truthy } + end + + context 'with group parents' do + let(:instance_enabled) { true } + before do - stub_application_setting(auto_devops_enabled: false) + stub_application_setting(auto_devops_enabled: instance_enabled) + project.update!(namespace: parent_group) end - it { is_expected.to be_falsey } + context 'when enabled on parent' do + let(:parent_group) { create(:group, :auto_devops_enabled) } - context 'when explicitly enabled' do - before do - create(:project_auto_devops, project: project) + context 'when auto devops instance enabled' do + it { is_expected.to be_truthy } end - it { is_expected.to be_truthy } + context 'when auto devops instance disabled' do + let(:instance_disabled) { false } + + it { is_expected.to be_truthy } + end end - context 'when force_autodevops_on_by_default is enabled for the project' do - before do - Feature.get(:force_autodevops_on_by_default).enable_percentage_of_actors(100) + context 'when disabled on parent' do + let(:parent_group) { create(:group, :auto_devops_disabled) } + + context 'when auto devops instance enabled' do + it { is_expected.to be_falsy } end - it { is_expected.to be_truthy } + context 'when auto devops instance disabled' do + let(:instance_disabled) { false } + + it { is_expected.to be_falsy } + end + end + + context 'when enabled on root parent', :nested_groups do + let(:parent_group) { create(:group, parent: create(:group, :auto_devops_enabled)) } + + context 'when auto devops instance enabled' do + it { is_expected.to be_truthy } + end + + context 'when auto devops instance disabled' do + let(:instance_disabled) { false } + + it { is_expected.to be_truthy } + end + + context 'when explicitly disabled on parent' do + let(:parent_group) { create(:group, :auto_devops_disabled, parent: create(:group, :auto_devops_enabled)) } + + it { is_expected.to be_falsy } + end + end + + context 'when disabled on root parent', :nested_groups do + let(:parent_group) { create(:group, parent: create(:group, :auto_devops_disabled)) } + + context 'when auto devops instance enabled' do + it { is_expected.to be_falsy } + end + + context 'when auto devops instance disabled' do + let(:instance_disabled) { false } + + it { is_expected.to be_falsy } + end + + context 'when explicitly disabled on parent' do + let(:parent_group) { create(:group, :auto_devops_disabled, parent: create(:group, :auto_devops_enabled)) } + + it { is_expected.to be_falsy } + end end end end @@ -3722,15 +3803,52 @@ describe Project do end end end + + context 'when enabled on group' do + it 'has auto devops implicitly enabled' do + project.update(namespace: create(:group, :auto_devops_enabled)) + + expect(project).to have_auto_devops_implicitly_enabled + end + end + + context 'when enabled on parent group' do + it 'has auto devops implicitly enabled' do + subgroup = create(:group, parent: create(:group, :auto_devops_enabled)) + project.update(namespace: subgroup) + + expect(project).to have_auto_devops_implicitly_enabled + end + end end describe '#has_auto_devops_implicitly_disabled?' do + set(:project) { create(:project) } + before do allow(Feature).to receive(:enabled?).and_call_original Feature.get(:force_autodevops_on_by_default).enable_percentage_of_actors(0) end - set(:project) { create(:project) } + context 'when explicitly disabled' do + before do + create(:project_auto_devops, project: project, enabled: false) + end + + it 'does not have auto devops implicitly disabled' do + expect(project).not_to have_auto_devops_implicitly_disabled + end + end + + context 'when explicitly enabled' do + before do + create(:project_auto_devops, project: project, enabled: true) + end + + it 'does not have auto devops implicitly disabled' do + expect(project).not_to have_auto_devops_implicitly_disabled + end + end context 'when enabled in settings' do before do @@ -3753,6 +3871,8 @@ describe Project do context 'when force_autodevops_on_by_default is enabled for the project' do before do + create(:project_auto_devops, project: project, enabled: false) + Feature.get(:force_autodevops_on_by_default).enable_percentage_of_actors(100) end @@ -3761,23 +3881,20 @@ describe Project do end end - context 'when explicitly disabled' do - before do - create(:project_auto_devops, project: project, enabled: false) - end + context 'when disabled on group' do + it 'has auto devops implicitly disabled' do + project.update!(namespace: create(:group, :auto_devops_disabled)) - it 'does not have auto devops implicitly disabled' do - expect(project).not_to have_auto_devops_implicitly_disabled + expect(project).to have_auto_devops_implicitly_disabled end end - context 'when explicitly enabled' do - before do - create(:project_auto_devops, project: project, enabled: true) - end + context 'when disabled on parent group' do + it 'has auto devops implicitly disabled' do + subgroup = create(:group, parent: create(:group, :auto_devops_disabled)) + project.update!(namespace: subgroup) - it 'does not have auto devops implicitly disabled' do - expect(project).not_to have_auto_devops_implicitly_disabled + expect(project).to have_auto_devops_implicitly_disabled end end end |