diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2019-09-26 09:06:27 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2019-09-26 09:06:27 +0300 |
commit | 9735395f94088df7e6470e3e8a2638385ede36b6 (patch) | |
tree | fbd42e043d05dbc78872b0458baac3a216ea232e /spec | |
parent | 33586a7aa128171b1bbc9380648b6945b09f5e2d (diff) |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec')
-rw-r--r-- | spec/frontend/helpers/tracking_helper.js | 25 | ||||
-rw-r--r-- | spec/frontend/ide/components/error_message_spec.js | 8 | ||||
-rw-r--r-- | spec/frontend/sidebar/confidential_issue_sidebar_spec.js (renamed from spec/javascripts/sidebar/confidential_issue_sidebar_spec.js) | 16 | ||||
-rw-r--r-- | spec/lib/gitlab/ci/build/rules/rule/clause/exists_spec.rb | 17 |
4 files changed, 50 insertions, 16 deletions
diff --git a/spec/frontend/helpers/tracking_helper.js b/spec/frontend/helpers/tracking_helper.js new file mode 100644 index 00000000000..68c1bd2dbca --- /dev/null +++ b/spec/frontend/helpers/tracking_helper.js @@ -0,0 +1,25 @@ +import Tracking from '~/tracking'; + +export default Tracking; + +let document; +let handlers; + +export function mockTracking(category = '_category_', documentOverride, spyMethod) { + document = documentOverride || window.document; + window.snowplow = () => {}; + Tracking.bindDocument(category, document); + return spyMethod ? spyMethod(Tracking, 'event') : null; +} + +export function unmockTracking() { + window.snowplow = undefined; + handlers.forEach(event => document.removeEventListener(event.name, event.func)); +} + +export function triggerEvent(selectorOrEl, eventName = 'click') { + const event = new Event(eventName, { bubbles: true }); + const el = typeof selectorOrEl === 'string' ? document.querySelector(selectorOrEl) : selectorOrEl; + + el.dispatchEvent(event); +} diff --git a/spec/frontend/ide/components/error_message_spec.js b/spec/frontend/ide/components/error_message_spec.js index fd6d1a494d4..e995c64645e 100644 --- a/spec/frontend/ide/components/error_message_spec.js +++ b/spec/frontend/ide/components/error_message_spec.js @@ -95,18 +95,18 @@ describe('IDE error message component', () => { }); it('shows loading icon when loading', () => { - let resolve; + let resolveAction; actionMock.mockImplementation( () => - new Promise(ok => { - resolve = ok; + new Promise(resolve => { + resolveAction = resolve; }), ); wrapper.find('button').trigger('click'); return wrapper.vm.$nextTick(() => { expect(wrapper.find(GlLoadingIcon).isVisible()).toBe(true); - resolve(); + resolveAction(); }); }); diff --git a/spec/javascripts/sidebar/confidential_issue_sidebar_spec.js b/spec/frontend/sidebar/confidential_issue_sidebar_spec.js index 50374b8973f..549010075db 100644 --- a/spec/javascripts/sidebar/confidential_issue_sidebar_spec.js +++ b/spec/frontend/sidebar/confidential_issue_sidebar_spec.js @@ -1,6 +1,6 @@ import Vue from 'vue'; import confidentialIssueSidebar from '~/sidebar/components/confidential/confidential_issue_sidebar.vue'; -import { mockTracking, triggerEvent } from 'spec/helpers/tracking_helper'; +import { mockTracking, triggerEvent } from 'helpers/tracking_helper'; describe('Confidential Issue Sidebar Block', () => { let vm1; @@ -37,40 +37,36 @@ describe('Confidential Issue Sidebar Block', () => { expect(vm2.$el.innerHTML.includes('Not confidential')).toBe(true); }); - it('displays the edit form when editable', done => { + it('displays the edit form when editable', () => { expect(vm1.edit).toBe(false); vm1.$el.querySelector('.confidential-edit').click(); expect(vm1.edit).toBe(true); - setTimeout(() => { + return Vue.nextTick().then(() => { expect(vm1.$el.innerHTML.includes('You are going to turn off the confidentiality.')).toBe( true, ); - - done(); }); }); - it('displays the edit form when opened from collapsed state', done => { + it('displays the edit form when opened from collapsed state', () => { expect(vm1.edit).toBe(false); vm1.$el.querySelector('.sidebar-collapsed-icon').click(); expect(vm1.edit).toBe(true); - setTimeout(() => { + return Vue.nextTick().then(() => { expect(vm1.$el.innerHTML.includes('You are going to turn off the confidentiality.')).toBe( true, ); - - done(); }); }); it('tracks the event when "Edit" is clicked', () => { - const spy = mockTracking('_category_', vm1.$el, spyOn); + const spy = mockTracking('_category_', vm1.$el, jest.spyOn); triggerEvent('.confidential-edit'); expect(spy).toHaveBeenCalledWith('_category_', 'click_edit_button', { diff --git a/spec/lib/gitlab/ci/build/rules/rule/clause/exists_spec.rb b/spec/lib/gitlab/ci/build/rules/rule/clause/exists_spec.rb index c016216304a..3605bac7dfc 100644 --- a/spec/lib/gitlab/ci/build/rules/rule/clause/exists_spec.rb +++ b/spec/lib/gitlab/ci/build/rules/rule/clause/exists_spec.rb @@ -4,11 +4,24 @@ require 'spec_helper' describe Gitlab::Ci::Build::Rules::Rule::Clause::Exists do describe '#satisfied_by?' do + let(:pipeline) { build(:ci_pipeline, project: project, sha: project.repository.head_commit.sha) } + + subject { described_class.new(globs).satisfied_by?(pipeline, nil) } + it_behaves_like 'a glob matching rule' do let(:project) { create(:project, :custom_repo, files: files) } - let(:pipeline) { build(:ci_pipeline, project: project, sha: project.repository.head_commit.sha) } + end + + context 'after pattern comparision limit is reached' do + let(:globs) { ['*definitely_not_a_matching_glob*'] } + let(:project) { create(:project, :repository) } + + before do + stub_const('Gitlab::Ci::Build::Rules::Rule::Clause::Exists::MAX_PATTERN_COMPARISONS', 2) + expect(File).to receive(:fnmatch?).exactly(2).times.and_call_original + end - subject { described_class.new(globs).satisfied_by?(pipeline, nil) } + it { is_expected.to be_truthy } end end end |