Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2020-02-17 18:09:01 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2020-02-17 18:09:01 +0300
commitb304a72312465ed4c0a568ee6a6ea5e97f705c9b (patch)
treea2f25dbea26c81e88b169c55a6275e3969323e82 /spec/javascripts
parentb84eeb256c4a780d902faee1f99ca9a711b3214a (diff)
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec/javascripts')
-rw-r--r--spec/javascripts/vue_mr_widget/mock_data.js2
-rw-r--r--spec/javascripts/vue_mr_widget/mr_widget_options_spec.js55
-rw-r--r--spec/javascripts/vue_mr_widget/stores/mr_widget_store_spec.js14
-rw-r--r--spec/javascripts/vue_shared/components/file_row_spec.js59
4 files changed, 71 insertions, 59 deletions
diff --git a/spec/javascripts/vue_mr_widget/mock_data.js b/spec/javascripts/vue_mr_widget/mock_data.js
index 4db6b421200..2eaba46cdce 100644
--- a/spec/javascripts/vue_mr_widget/mock_data.js
+++ b/spec/javascripts/vue_mr_widget/mock_data.js
@@ -16,6 +16,7 @@ export default {
updated_at: '2017-04-07T15:39:25.852Z',
time_estimate: 0,
total_time_spent: 0,
+ human_access: 'Maintainer',
human_time_estimate: null,
human_total_time_spent: null,
in_progress_merge_commit_sha: null,
@@ -34,6 +35,7 @@ export default {
target_branch: 'master',
target_project_id: 19,
target_project_full_path: '/group2/project2',
+ merge_request_add_ci_config_path: '/group2/project2/new/pipeline',
metrics: {
merged_by: {
name: 'Administrator',
diff --git a/spec/javascripts/vue_mr_widget/mr_widget_options_spec.js b/spec/javascripts/vue_mr_widget/mr_widget_options_spec.js
index 296be43f793..35c1495be58 100644
--- a/spec/javascripts/vue_mr_widget/mr_widget_options_spec.js
+++ b/spec/javascripts/vue_mr_widget/mr_widget_options_spec.js
@@ -94,6 +94,61 @@ describe('mrWidgetOptions', () => {
});
});
+ describe('shouldSuggestPipelines', () => {
+ describe('given suggestPipeline feature flag is enabled', () => {
+ beforeEach(() => {
+ gon.features = { suggestPipeline: true };
+ vm = mountComponent(MrWidgetOptions, {
+ mrData: { ...mockData },
+ });
+ });
+
+ afterEach(() => {
+ gon.features = {};
+ });
+
+ it('should suggest pipelines when none exist', () => {
+ vm.mr.mergeRequestAddCiConfigPath = 'some/path';
+ vm.mr.hasCI = false;
+
+ expect(vm.shouldSuggestPipelines).toBeTruthy();
+ });
+
+ it('should not suggest pipelines when they exist', () => {
+ vm.mr.mergeRequestAddCiConfigPath = null;
+ vm.mr.hasCI = false;
+
+ expect(vm.shouldSuggestPipelines).toBeFalsy();
+ });
+
+ it('should not suggest pipelines hasCI is true', () => {
+ vm.mr.mergeRequestAddCiConfigPath = 'some/path';
+ vm.mr.hasCI = true;
+
+ expect(vm.shouldSuggestPipelines).toBeFalsy();
+ });
+ });
+
+ describe('given suggestPipeline feature flag is not enabled', () => {
+ beforeEach(() => {
+ gon.features = { suggestPipeline: false };
+ vm = mountComponent(MrWidgetOptions, {
+ mrData: { ...mockData },
+ });
+ });
+
+ afterEach(() => {
+ gon.features = {};
+ });
+
+ it('should not suggest pipelines', () => {
+ vm.mr.mergeRequestAddCiConfigPath = null;
+
+ expect(vm.shouldSuggestPipelines).toBeFalsy();
+ });
+ });
+ });
+
describe('shouldRenderRelatedLinks', () => {
it('should return false for the initial data', () => {
expect(vm.shouldRenderRelatedLinks).toBeFalsy();
diff --git a/spec/javascripts/vue_mr_widget/stores/mr_widget_store_spec.js b/spec/javascripts/vue_mr_widget/stores/mr_widget_store_spec.js
index e2cd0f084fd..272f6cad5fc 100644
--- a/spec/javascripts/vue_mr_widget/stores/mr_widget_store_spec.js
+++ b/spec/javascripts/vue_mr_widget/stores/mr_widget_store_spec.js
@@ -83,4 +83,18 @@ describe('MergeRequestStore', () => {
});
});
});
+
+ describe('setPaths', () => {
+ it('should set the add ci config path', () => {
+ store.setData({ ...mockData });
+
+ expect(store.mergeRequestAddCiConfigPath).toEqual('/group2/project2/new/pipeline');
+ });
+
+ it('should set humanAccess=Maintainer when user has that role', () => {
+ store.setData({ ...mockData });
+
+ expect(store.humanAccess).toEqual('Maintainer');
+ });
+ });
});
diff --git a/spec/javascripts/vue_shared/components/file_row_spec.js b/spec/javascripts/vue_shared/components/file_row_spec.js
index 071a09f8b93..11fcb9b89c1 100644
--- a/spec/javascripts/vue_shared/components/file_row_spec.js
+++ b/spec/javascripts/vue_shared/components/file_row_spec.js
@@ -1,7 +1,6 @@
import Vue from 'vue';
import { file } from 'spec/ide/helpers';
import FileRow from '~/vue_shared/components/file_row.vue';
-import FileRowExtra from '~/ide/components/file_row_extra.vue';
import mountComponent from '../../helpers/vue_mount_component_helper';
describe('File row component', () => {
@@ -17,9 +16,6 @@ describe('File row component', () => {
vm.$destroy();
});
- const findNewDropdown = () => vm.$el.querySelector('.ide-new-btn .dropdown');
- const findNewDropdownButton = () => vm.$el.querySelector('.ide-new-btn .dropdown button');
-
it('renders name', () => {
createComponent({
file: file('t4'),
@@ -88,59 +84,4 @@ describe('File row component', () => {
expect(vm.$el.classList).toContain('js-file-row-header');
});
-
- describe('new dropdown', () => {
- beforeEach(() => {
- createComponent({
- file: file('t5'),
- level: 1,
- extraComponent: FileRowExtra,
- });
- });
-
- it('renders in extra component', () => {
- expect(findNewDropdown()).not.toBe(null);
- });
-
- it('is hidden at start', () => {
- expect(findNewDropdown()).not.toHaveClass('show');
- });
-
- it('is opened when button is clicked', done => {
- expect(vm.dropdownOpen).toBe(false);
- findNewDropdownButton().dispatchEvent(new Event('click'));
-
- vm.$nextTick()
- .then(() => {
- expect(vm.dropdownOpen).toBe(true);
- expect(findNewDropdown()).toHaveClass('show');
- })
- .then(done)
- .catch(done.fail);
- });
-
- describe('when opened', () => {
- beforeEach(() => {
- vm.dropdownOpen = true;
- });
-
- it('stays open when button triggers mouseout', () => {
- findNewDropdownButton().dispatchEvent(new Event('mouseout'));
-
- expect(vm.dropdownOpen).toBe(true);
- });
-
- it('stays open when button triggers mouseleave', () => {
- findNewDropdownButton().dispatchEvent(new Event('mouseleave'));
-
- expect(vm.dropdownOpen).toBe(true);
- });
-
- it('closes when row triggers mouseleave', () => {
- vm.$el.dispatchEvent(new Event('mouseleave'));
-
- expect(vm.dropdownOpen).toBe(false);
- });
- });
- });
});