diff options
Diffstat (limited to 'spec')
-rw-r--r-- | spec/helpers/auto_devops_helper_spec.rb | 59 | ||||
-rw-r--r-- | spec/javascripts/user_callout_spec.js | 13 | ||||
-rw-r--r-- | spec/models/project_spec.rb | 44 |
3 files changed, 116 insertions, 0 deletions
diff --git a/spec/helpers/auto_devops_helper_spec.rb b/spec/helpers/auto_devops_helper_spec.rb new file mode 100644 index 00000000000..b6d892548ef --- /dev/null +++ b/spec/helpers/auto_devops_helper_spec.rb @@ -0,0 +1,59 @@ +require 'spec_helper' + +describe AutoDevopsHelper do + set(:project) { create(:project) } + set(:user) { create(:user) } + + describe '.show_auto_devops_callout?' do + let(:allowed) { true } + + before do + allow(helper).to receive(:can?).with(user, :admin_pipeline, project) { allowed } + allow(helper).to receive(:current_user) { user } + end + + subject { helper.show_auto_devops_callout?(project) } + + context 'when all conditions are met' do + it { is_expected.to eq(true) } + end + + context 'when dismissed' do + before do + helper.request.cookies[:auto_devops_settings_dismissed] = 'true' + end + + it { is_expected.to eq(false) } + end + + context 'when user cannot admin project' do + let(:allowed) { false } + + it { is_expected.to eq(false) } + end + + context 'when auto devops is enabled system-wide' do + before do + stub_application_setting(auto_devops_enabled: true) + end + + it { is_expected.to eq(false) } + end + + context 'when auto devops is explicitly enabled for project' do + before do + project.create_auto_devops!(enabled: true) + end + + it { is_expected.to eq(false) } + end + + context 'when auto devops is explicitly disabled for project' do + before do + project.create_auto_devops!(enabled: false) + end + + it { is_expected.to eq(false) } + end + end +end diff --git a/spec/javascripts/user_callout_spec.js b/spec/javascripts/user_callout_spec.js index 28d0c7dcd99..69cb93bd850 100644 --- a/spec/javascripts/user_callout_spec.js +++ b/spec/javascripts/user_callout_spec.js @@ -33,4 +33,17 @@ describe('UserCallout', function () { this.userCalloutBtn.click(); expect(Cookies.get(USER_CALLOUT_COOKIE)).toBe('true'); }); + + describe('Sets cookie with setCalloutPerProject', () => { + beforeEach(() => { + spyOn(Cookies, 'set').and.callFake(() => {}); + document.querySelector('.user-callout').setAttribute('data-project-path', 'foo/bar'); + this.userCallout = new UserCallout({ setCalloutPerProject: true }); + }); + + it('sets a cookie when the user clicks the close button', () => { + this.userCalloutBtn.click(); + expect(Cookies.set).toHaveBeenCalledWith('user_callout_dismissed', 'true', Object({ expires: 365, path: 'foo/bar' })); + }); + }); }); diff --git a/spec/models/project_spec.rb b/spec/models/project_spec.rb index 75c99b62150..48fc77423ff 100644 --- a/spec/models/project_spec.rb +++ b/spec/models/project_spec.rb @@ -2607,6 +2607,50 @@ describe Project do end end + describe '#has_auto_devops_implicitly_disabled?' do + set(:project) { create(:project) } + + context 'when enabled in settings' do + before do + stub_application_setting(auto_devops_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 disabled in settings' do + before do + stub_application_setting(auto_devops_enabled: false) + end + + it 'auto devops is implicitly disabled' do + expect(project).to have_auto_devops_implicitly_disabled + end + + 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) + end + + it 'does not have auto devops implicitly disabled' do + expect(project).not_to have_auto_devops_implicitly_disabled + end + end + end + end + context '#auto_devops_variables' do set(:project) { create(:project) } |