diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2023-08-18 21:10:32 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2023-08-18 21:10:32 +0300 |
commit | bced7d8bcc29bf5b75a03523e74a8e000c10371a (patch) | |
tree | d3df9e707fba772ae86370c49819e744880e53e1 /spec/frontend/ci | |
parent | 133b8a64b6d5b57f3cd753f55059b2b90721695e (diff) |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec/frontend/ci')
4 files changed, 27 insertions, 253 deletions
diff --git a/spec/frontend/ci/ci_variable_list/ci_variable_list/ci_variable_list_spec.js b/spec/frontend/ci/ci_variable_list/ci_variable_list/ci_variable_list_spec.js deleted file mode 100644 index 8990a70d4ef..00000000000 --- a/spec/frontend/ci/ci_variable_list/ci_variable_list/ci_variable_list_spec.js +++ /dev/null @@ -1,161 +0,0 @@ -import $ from 'jquery'; -import htmlPipelineSchedulesEdit from 'test_fixtures/pipeline_schedules/edit.html'; -import htmlPipelineSchedulesEditWithVariables from 'test_fixtures/pipeline_schedules/edit_with_variables.html'; -import { setHTMLFixture, resetHTMLFixture } from 'helpers/fixtures'; -import VariableList from '~/ci/ci_variable_list/ci_variable_list'; - -const HIDE_CLASS = 'hide'; - -describe('VariableList', () => { - let $wrapper; - let variableList; - - describe('with only key/value inputs', () => { - describe('with no variables', () => { - beforeEach(() => { - setHTMLFixture(htmlPipelineSchedulesEdit); - $wrapper = $('.js-ci-variable-list-section'); - - variableList = new VariableList({ - container: $wrapper, - formField: 'schedule', - }); - variableList.init(); - }); - - afterEach(() => { - resetHTMLFixture(); - }); - - it('should remove the row when clicking the remove button', () => { - $wrapper.find('.js-row-remove-button').trigger('click'); - - expect($wrapper.find('.js-row').length).toBe(0); - }); - - it('should add another row when editing the last rows key input', () => { - const $row = $wrapper.find('.js-row'); - $row.find('.js-ci-variable-input-key').val('foo').trigger('input'); - - expect($wrapper.find('.js-row').length).toBe(2); - - // Check for the correct default in the new row - const $keyInput = $wrapper.find('.js-row:last-child').find('.js-ci-variable-input-key'); - - expect($keyInput.val()).toBe(''); - }); - - it('should add another row when editing the last rows value textarea', () => { - const $row = $wrapper.find('.js-row'); - $row.find('.js-ci-variable-input-value').val('foo').trigger('input'); - - expect($wrapper.find('.js-row').length).toBe(2); - - // Check for the correct default in the new row - const $valueInput = $wrapper.find('.js-row:last-child').find('.js-ci-variable-input-key'); - - expect($valueInput.val()).toBe(''); - }); - - it('should remove empty row after blurring', () => { - const $row = $wrapper.find('.js-row'); - $row.find('.js-ci-variable-input-key').val('foo').trigger('input'); - - expect($wrapper.find('.js-row').length).toBe(2); - - $row.find('.js-ci-variable-input-key').val('').trigger('input').trigger('blur'); - - expect($wrapper.find('.js-row').length).toBe(1); - }); - }); - - describe('with persisted variables', () => { - beforeEach(() => { - setHTMLFixture(htmlPipelineSchedulesEditWithVariables); - $wrapper = $('.js-ci-variable-list-section'); - - variableList = new VariableList({ - container: $wrapper, - formField: 'schedule', - }); - variableList.init(); - }); - - afterEach(() => { - resetHTMLFixture(); - }); - - it('should have "Reveal values" button initially when there are already variables', () => { - expect($wrapper.find('.js-secret-value-reveal-button').text()).toBe('Reveal values'); - }); - - it('should reveal hidden values', () => { - const $row = $wrapper.find('.js-row:first-child'); - const $inputValue = $row.find('.js-ci-variable-input-value'); - const $placeholder = $row.find('.js-secret-value-placeholder'); - - expect($placeholder.hasClass(HIDE_CLASS)).toBe(false); - expect($inputValue.hasClass(HIDE_CLASS)).toBe(true); - - // Reveal values - $wrapper.find('.js-secret-value-reveal-button').click(); - - expect($placeholder.hasClass(HIDE_CLASS)).toBe(true); - expect($inputValue.hasClass(HIDE_CLASS)).toBe(false); - }); - }); - }); - - describe('toggleEnableRow method', () => { - beforeEach(() => { - setHTMLFixture(htmlPipelineSchedulesEditWithVariables); - $wrapper = $('.js-ci-variable-list-section'); - - variableList = new VariableList({ - container: $wrapper, - formField: 'variables', - }); - variableList.init(); - }); - - afterEach(() => { - resetHTMLFixture(); - }); - - it('should disable all key inputs', () => { - expect($wrapper.find('.js-ci-variable-input-key:not([disabled])').length).toBe(3); - - variableList.toggleEnableRow(false); - - expect($wrapper.find('.js-ci-variable-input-key[disabled]').length).toBe(3); - }); - - it('should disable all remove buttons', () => { - expect($wrapper.find('.js-row-remove-button:not([disabled])').length).toBe(3); - - variableList.toggleEnableRow(false); - - expect($wrapper.find('.js-row-remove-button[disabled]').length).toBe(3); - }); - - it('should enable all remove buttons', () => { - variableList.toggleEnableRow(false); - - expect($wrapper.find('.js-row-remove-button[disabled]').length).toBe(3); - - variableList.toggleEnableRow(true); - - expect($wrapper.find('.js-row-remove-button:not([disabled])').length).toBe(3); - }); - - it('should enable all key inputs', () => { - variableList.toggleEnableRow(false); - - expect($wrapper.find('.js-ci-variable-input-key[disabled]').length).toBe(3); - - variableList.toggleEnableRow(true); - - expect($wrapper.find('.js-ci-variable-input-key:not([disabled])').length).toBe(3); - }); - }); -}); diff --git a/spec/frontend/ci/ci_variable_list/ci_variable_list/native_form_variable_list_spec.js b/spec/frontend/ci/ci_variable_list/ci_variable_list/native_form_variable_list_spec.js deleted file mode 100644 index 3ef5427f288..00000000000 --- a/spec/frontend/ci/ci_variable_list/ci_variable_list/native_form_variable_list_spec.js +++ /dev/null @@ -1,41 +0,0 @@ -import $ from 'jquery'; -import htmlPipelineSchedulesEdit from 'test_fixtures/pipeline_schedules/edit.html'; -import { setHTMLFixture, resetHTMLFixture } from 'helpers/fixtures'; -import setupNativeFormVariableList from '~/ci/ci_variable_list/native_form_variable_list'; - -describe('NativeFormVariableList', () => { - let $wrapper; - - beforeEach(() => { - setHTMLFixture(htmlPipelineSchedulesEdit); - $wrapper = $('.js-ci-variable-list-section'); - - setupNativeFormVariableList({ - container: $wrapper, - formField: 'schedule', - }); - }); - - afterEach(() => { - resetHTMLFixture(); - }); - - describe('onFormSubmit', () => { - it('should clear out the `name` attribute on the inputs for the last empty row on form submission (avoid BE validation)', () => { - const $row = $wrapper.find('.js-row'); - - expect($row.find('.js-ci-variable-input-key').attr('name')).toBe( - 'schedule[variables_attributes][][key]', - ); - - expect($row.find('.js-ci-variable-input-value').attr('name')).toBe( - 'schedule[variables_attributes][][secret_value]', - ); - - $wrapper.closest('form').trigger('trigger-submit'); - - expect($row.find('.js-ci-variable-input-key').attr('name')).toBe(''); - expect($row.find('.js-ci-variable-input-value').attr('name')).toBe(''); - }); - }); -}); diff --git a/spec/frontend/ci/pipeline_schedules/components/table/cells/pipeline_schedule_target_spec.js b/spec/frontend/ci/pipeline_schedules/components/table/cells/pipeline_schedule_target_spec.js index 5cc3829efbd..70b4c7a5224 100644 --- a/spec/frontend/ci/pipeline_schedules/components/table/cells/pipeline_schedule_target_spec.js +++ b/spec/frontend/ci/pipeline_schedules/components/table/cells/pipeline_schedule_target_spec.js @@ -1,5 +1,6 @@ import { GlIcon, GlLink } from '@gitlab/ui'; import { shallowMount } from '@vue/test-utils'; +import { s__ } from '~/locale'; import PipelineScheduleTarget from '~/ci/pipeline_schedules/components/table/cells/pipeline_schedule_target.vue'; import { mockPipelineScheduleNodes } from '../../../mock_data'; @@ -20,18 +21,35 @@ describe('Pipeline schedule target', () => { const findIcon = () => wrapper.findComponent(GlIcon); const findLink = () => wrapper.findComponent(GlLink); + const findTarget = () => wrapper.findComponent('[data-testid="pipeline-schedule-target"]'); - beforeEach(() => { - createComponent(); - }); + describe('with ref', () => { + beforeEach(() => { + createComponent(); + }); + + it('displays icon', () => { + expect(findIcon().exists()).toBe(true); + expect(findIcon().props('name')).toBe('fork'); + }); - it('displays icon', () => { - expect(findIcon().exists()).toBe(true); - expect(findIcon().props('name')).toBe('fork'); + it('displays ref link', () => { + expect(findLink().attributes('href')).toBe(defaultProps.schedule.refPath); + expect(findLink().text()).toBe(defaultProps.schedule.refForDisplay); + }); }); - it('displays ref link', () => { - expect(findLink().attributes('href')).toBe(defaultProps.schedule.refPath); - expect(findLink().text()).toBe(defaultProps.schedule.refForDisplay); + describe('without refPath', () => { + beforeEach(() => { + createComponent({ + schedule: { ...mockPipelineScheduleNodes[0], refPath: null, refForDisplay: null }, + }); + }); + + it('displays none for the target', () => { + expect(findIcon().exists()).toBe(false); + expect(findLink().exists()).toBe(false); + expect(findTarget().text()).toBe(s__('PipelineSchedules|None')); + }); }); }); diff --git a/spec/frontend/ci/pipeline_schedules/components/take_ownership_modal_legacy_spec.js b/spec/frontend/ci/pipeline_schedules/components/take_ownership_modal_legacy_spec.js deleted file mode 100644 index e4ff9a0545b..00000000000 --- a/spec/frontend/ci/pipeline_schedules/components/take_ownership_modal_legacy_spec.js +++ /dev/null @@ -1,42 +0,0 @@ -import { GlModal } from '@gitlab/ui'; -import { shallowMountExtended } from 'helpers/vue_test_utils_helper'; -import TakeOwnershipModalLegacy from '~/ci/pipeline_schedules/components/take_ownership_modal_legacy.vue'; - -describe('Take ownership modal', () => { - let wrapper; - const url = `/root/job-log-tester/-/pipeline_schedules/3/take_ownership`; - - const createComponent = (props = {}) => { - wrapper = shallowMountExtended(TakeOwnershipModalLegacy, { - propsData: { - ownershipUrl: url, - ...props, - }, - }); - }; - - const findModal = () => wrapper.findComponent(GlModal); - - beforeEach(() => { - createComponent(); - }); - - it('has a primary action set to a url and a post data-method', () => { - const actionPrimary = findModal().props('actionPrimary'); - - expect(actionPrimary.attributes).toEqual( - expect.objectContaining({ - category: 'primary', - variant: 'confirm', - href: url, - 'data-method': 'post', - }), - ); - }); - - it('shows a take ownership message', () => { - expect(findModal().text()).toBe( - 'Only the owner of a pipeline schedule can make changes to it. Do you want to take ownership of this schedule?', - ); - }); -}); |