From bf10fcacaa0a754a1f21aad7457d635df7bd94d8 Mon Sep 17 00:00:00 2001 From: GitLab Bot Date: Mon, 10 Oct 2022 03:10:04 +0000 Subject: [PATCH] Add latest changes from gitlab-org/gitlab@master --- .../security_configuration/components/app.vue | 7 +- app/models/pages/lookup_path.rb | 4 +- .../stage/import_repository_worker.rb | 1 + .../secret_detection/index.md | 5 + lib/api/internal/pages.rb | 3 +- .../github_import/importer/issue_importer.rb | 4 + lib/gitlab/pages/cache_control.rb | 4 + .../page/project/secure/configuration_form.rb | 26 +++++ qa/qa/resource/wiki/group_page.rb | 1 + .../project_based_content_creation_spec.rb | 95 +++++++++++++++++++ ...project_based_content_manipulation_spec.rb | 51 ++++++++++ ...project_based_directory_management_spec.rb | 5 +- .../project_based_file_upload_spec.rb} | 5 +- .../project_based_list_spec.rb | 12 ++- .../project_based_page_deletion_spec.rb | 24 +++++ .../project_based_content_creation_spec.rb | 93 ------------------ ...project_based_content_manipulation_spec.rb | 51 ---------- .../wiki/project_based_page_deletion_spec.rb | 26 ----- .../frontend/__helpers__/shared_test_setup.js | 3 + .../__helpers__/vue_test_utils_helper_spec.js | 3 +- .../components/design_overlay_spec.js | 8 ++ .../diffs/components/file_row_stats_spec.js | 20 ++-- .../components/request_warning_spec.js | 29 ++++-- .../pipeline_wizard/components/commit_spec.js | 4 +- .../pipeline_wizard/components/editor_spec.js | 20 ++-- .../components/wrapper_spec.js | 29 ++++-- spec/frontend/pipeline_wizard/mock/yaml.js | 3 +- .../runner_stacked_layout_banner_spec.js | 2 + .../set_status_modal/set_status_form_spec.js | 2 + .../mr_widget_options_spec.js | 4 +- .../components/diff_stats_dropdown_spec.js | 4 +- .../importer/issue_importer_spec.rb | 4 +- 32 files changed, 327 insertions(+), 225 deletions(-) create mode 100644 qa/qa/specs/features/browser_ui/3_create/project_wiki/project_based_content_creation_spec.rb create mode 100644 qa/qa/specs/features/browser_ui/3_create/project_wiki/project_based_content_manipulation_spec.rb rename qa/qa/specs/features/browser_ui/3_create/{wiki => project_wiki}/project_based_directory_management_spec.rb (83%) rename qa/qa/specs/features/browser_ui/3_create/{wiki/content_editor_spec.rb => project_wiki/project_based_file_upload_spec.rb} (85%) rename qa/qa/specs/features/browser_ui/3_create/{wiki => project_wiki}/project_based_list_spec.rb (83%) create mode 100644 qa/qa/specs/features/browser_ui/3_create/project_wiki/project_based_page_deletion_spec.rb delete mode 100644 qa/qa/specs/features/browser_ui/3_create/wiki/project_based_content_creation_spec.rb delete mode 100644 qa/qa/specs/features/browser_ui/3_create/wiki/project_based_content_manipulation_spec.rb delete mode 100644 qa/qa/specs/features/browser_ui/3_create/wiki/project_based_page_deletion_spec.rb diff --git a/app/assets/javascripts/security_configuration/components/app.vue b/app/assets/javascripts/security_configuration/components/app.vue index 4fb70a92254..7828efc358a 100644 --- a/app/assets/javascripts/security_configuration/components/app.vue +++ b/app/assets/javascripts/security_configuration/components/app.vue @@ -167,7 +167,12 @@ export default { - + jest.requireActual('helpers/mocks/axios_utils')); diff --git a/spec/frontend/__helpers__/vue_test_utils_helper_spec.js b/spec/frontend/__helpers__/vue_test_utils_helper_spec.js index ae180c3b49d..466333f8a89 100644 --- a/spec/frontend/__helpers__/vue_test_utils_helper_spec.js +++ b/spec/frontend/__helpers__/vue_test_utils_helper_spec.js @@ -140,11 +140,12 @@ describe('Vue test utils helpers', () => { const text = 'foo bar'; const options = { selector: 'div' }; const mockDiv = document.createElement('div'); - const mockVm = new Vue({ render: (h) => h('div') }).$mount(); + let mockVm; let wrapper; beforeEach(() => { jest.spyOn(vtu, 'createWrapper'); + mockVm = new Vue({ render: (h) => h('div') }).$mount(); wrapper = extendedWrapper( shallowMount({ diff --git a/spec/frontend/design_management/components/design_overlay_spec.js b/spec/frontend/design_management/components/design_overlay_spec.js index 056959425a6..169f2dbdccb 100644 --- a/spec/frontend/design_management/components/design_overlay_spec.js +++ b/spec/frontend/design_management/components/design_overlay_spec.js @@ -170,6 +170,14 @@ describe('Design overlay component', () => { }); it('should call an update active discussion mutation when clicking a note without moving it', async () => { + createComponent({ + notes, + dimensions: { + width: 400, + height: 400, + }, + }); + const note = notes[0]; const { position } = note; const mutationVariables = { diff --git a/spec/frontend/diffs/components/file_row_stats_spec.js b/spec/frontend/diffs/components/file_row_stats_spec.js index 3f5a63c19e5..7d3b60d2ba4 100644 --- a/spec/frontend/diffs/components/file_row_stats_spec.js +++ b/spec/frontend/diffs/components/file_row_stats_spec.js @@ -2,13 +2,21 @@ import { mount } from '@vue/test-utils'; import FileRowStats from '~/diffs/components/file_row_stats.vue'; describe('Diff file row stats', () => { - const wrapper = mount(FileRowStats, { - propsData: { - file: { - addedLines: 20, - removedLines: 10, + let wrapper; + + const createComponent = () => { + wrapper = mount(FileRowStats, { + propsData: { + file: { + addedLines: 20, + removedLines: 10, + }, }, - }, + }); + }; + + beforeEach(() => { + createComponent(); }); it('renders added lines count', () => { diff --git a/spec/frontend/performance_bar/components/request_warning_spec.js b/spec/frontend/performance_bar/components/request_warning_spec.js index d558c7b018a..9dd8ea9f933 100644 --- a/spec/frontend/performance_bar/components/request_warning_spec.js +++ b/spec/frontend/performance_bar/components/request_warning_spec.js @@ -2,14 +2,21 @@ import { shallowMount } from '@vue/test-utils'; import RequestWarning from '~/performance_bar/components/request_warning.vue'; describe('request warning', () => { + let wrapper; const htmlId = 'request-123'; + afterEach(() => { + wrapper.destroy(); + }); + describe('when the request has warnings', () => { - const wrapper = shallowMount(RequestWarning, { - propsData: { - htmlId, - warnings: ['gitaly calls: 30 over 10', 'gitaly duration: 1500 over 1000'], - }, + beforeEach(() => { + wrapper = shallowMount(RequestWarning, { + propsData: { + htmlId, + warnings: ['gitaly calls: 30 over 10', 'gitaly duration: 1500 over 1000'], + }, + }); }); it('adds a warning emoji with the correct ID', () => { @@ -19,11 +26,13 @@ describe('request warning', () => { }); describe('when the request does not have warnings', () => { - const wrapper = shallowMount(RequestWarning, { - propsData: { - htmlId, - warnings: [], - }, + beforeEach(() => { + wrapper = shallowMount(RequestWarning, { + propsData: { + htmlId, + warnings: [], + }, + }); }); it('does nothing', () => { diff --git a/spec/frontend/pipeline_wizard/components/commit_spec.js b/spec/frontend/pipeline_wizard/components/commit_spec.js index d7e019c642e..fa30b9c2b97 100644 --- a/spec/frontend/pipeline_wizard/components/commit_spec.js +++ b/spec/frontend/pipeline_wizard/components/commit_spec.js @@ -211,7 +211,7 @@ describe('Pipeline Wizard - Commit Page', () => { }) => { let consoleSpy; - beforeAll(async () => { + beforeEach(async () => { createComponent( { filename, @@ -246,7 +246,7 @@ describe('Pipeline Wizard - Commit Page', () => { await waitForPromises(); }); - afterAll(() => { + afterEach(() => { wrapper.destroy(); }); diff --git a/spec/frontend/pipeline_wizard/components/editor_spec.js b/spec/frontend/pipeline_wizard/components/editor_spec.js index 26e4b8eb0ea..dd0a609043a 100644 --- a/spec/frontend/pipeline_wizard/components/editor_spec.js +++ b/spec/frontend/pipeline_wizard/components/editor_spec.js @@ -3,12 +3,20 @@ import { Document } from 'yaml'; import YamlEditor from '~/pipeline_wizard/components/editor.vue'; describe('Pages Yaml Editor wrapper', () => { + let wrapper; + const defaultOptions = { propsData: { doc: new Document({ foo: 'bar' }), filename: 'foo.yml' }, }; + afterEach(() => { + wrapper.destroy(); + }); + describe('mount hook', () => { - const wrapper = mount(YamlEditor, defaultOptions); + beforeEach(() => { + wrapper = mount(YamlEditor, defaultOptions); + }); it('editor is mounted', () => { expect(wrapper.vm.editor).not.toBeUndefined(); @@ -19,16 +27,11 @@ describe('Pages Yaml Editor wrapper', () => { describe('watchers', () => { describe('doc', () => { const doc = new Document({ baz: ['bar'] }); - let wrapper; beforeEach(() => { wrapper = mount(YamlEditor, defaultOptions); }); - afterEach(() => { - wrapper.destroy(); - }); - it("causes the editor's value to be set to the stringified document", async () => { await wrapper.setProps({ doc }); expect(wrapper.vm.editor.getValue()).toEqual(doc.toString()); @@ -48,7 +51,10 @@ describe('Pages Yaml Editor wrapper', () => { describe('highlight', () => { const highlight = 'foo'; - const wrapper = mount(YamlEditor, defaultOptions); + + beforeEach(() => { + wrapper = mount(YamlEditor, defaultOptions); + }); it('calls editor.highlight(path, keep=true)', async () => { const highlightSpy = jest.spyOn(wrapper.vm.yamlEditorExtension.obj, 'highlight'); diff --git a/spec/frontend/pipeline_wizard/components/wrapper_spec.js b/spec/frontend/pipeline_wizard/components/wrapper_spec.js index f064bf01c86..d5b78cebcb3 100644 --- a/spec/frontend/pipeline_wizard/components/wrapper_spec.js +++ b/spec/frontend/pipeline_wizard/components/wrapper_spec.js @@ -132,7 +132,7 @@ describe('Pipeline Wizard - wrapper.vue', () => { expectStepDef, expectProgressBarValue, }) => { - beforeAll(async () => { + beforeEach(async () => { createComponent(); for (const emittedValue of navigationEventChain) { @@ -145,7 +145,7 @@ describe('Pipeline Wizard - wrapper.vue', () => { } }); - afterAll(() => { + afterEach(() => { wrapper.destroy(); }); @@ -184,11 +184,11 @@ describe('Pipeline Wizard - wrapper.vue', () => { }); describe('editor overlay', () => { - beforeAll(() => { + beforeEach(() => { createComponent(); }); - afterAll(() => { + afterEach(() => { wrapper.destroy(); }); @@ -236,11 +236,11 @@ describe('Pipeline Wizard - wrapper.vue', () => { }); describe('line highlights', () => { - beforeAll(() => { + beforeEach(() => { createComponent(); }); - afterAll(() => { + afterEach(() => { wrapper.destroy(); }); @@ -266,7 +266,7 @@ describe('Pipeline Wizard - wrapper.vue', () => { }); describe('integration test', () => { - beforeAll(async () => { + beforeEach(async () => { createComponent({}, mountExtended); }); @@ -290,14 +290,25 @@ describe('Pipeline Wizard - wrapper.vue', () => { describe('navigating back', () => { let inputField; - beforeAll(async () => { + beforeEach(async () => { + createComponent({}, mountExtended); + + findFirstInputFieldForTarget('$FOO').setValue('fooVal'); + await nextTick(); + + findFirstVisibleStep().vm.$emit('next'); + await nextTick(); + + findFirstInputFieldForTarget('$BAR').setValue('barVal'); + await nextTick(); + findFirstVisibleStep().vm.$emit('back'); await nextTick(); inputField = findFirstInputFieldForTarget('$FOO'); }); - afterAll(() => { + afterEach(() => { wrapper.destroy(); inputField = undefined; }); diff --git a/spec/frontend/pipeline_wizard/mock/yaml.js b/spec/frontend/pipeline_wizard/mock/yaml.js index 12b6f1052b2..014a32c5700 100644 --- a/spec/frontend/pipeline_wizard/mock/yaml.js +++ b/spec/frontend/pipeline_wizard/mock/yaml.js @@ -62,8 +62,7 @@ export const steps = ` export const compiledScenario1 = `foo: fooVal `; -export const compiledScenario2 = `foo: fooVal -bar: barVal +export const compiledScenario2 = `bar: barVal `; export const compiledScenario3 = `foo: newFooVal diff --git a/spec/frontend/runner/components/runner_stacked_layout_banner_spec.js b/spec/frontend/runner/components/runner_stacked_layout_banner_spec.js index 1a8aced9292..d1f04f0ee37 100644 --- a/spec/frontend/runner/components/runner_stacked_layout_banner_spec.js +++ b/spec/frontend/runner/components/runner_stacked_layout_banner_spec.js @@ -29,6 +29,8 @@ describe('RunnerStackedLayoutBanner', () => { }); it('Does not display a banner when dismissed', async () => { + createComponent(); + findLocalStorageSync().vm.$emit('input', true); await nextTick(); diff --git a/spec/frontend/set_status_modal/set_status_form_spec.js b/spec/frontend/set_status_modal/set_status_form_spec.js index 8e1623eedf5..486e06d2906 100644 --- a/spec/frontend/set_status_modal/set_status_form_spec.js +++ b/spec/frontend/set_status_modal/set_status_form_spec.js @@ -127,6 +127,8 @@ describe('SetStatusForm', () => { describe('when `Clear status after` dropdown is changed', () => { it('emits `clear-status-after-click`', async () => { + await createComponent(); + await wrapper.findByTestId('thirtyMinutes').trigger('click'); expect(wrapper.emitted('clear-status-after-click')).toEqual([[timeRanges[0]]]); diff --git a/spec/frontend/vue_merge_request_widget/mr_widget_options_spec.js b/spec/frontend/vue_merge_request_widget/mr_widget_options_spec.js index 30e299dea9a..5788968100a 100644 --- a/spec/frontend/vue_merge_request_widget/mr_widget_options_spec.js +++ b/spec/frontend/vue_merge_request_widget/mr_widget_options_spec.js @@ -1004,7 +1004,7 @@ describe('MrWidgetOptions', () => { await createComponent(); - expect(pollRequest).toHaveBeenCalledTimes(4); + expect(pollRequest).toHaveBeenCalledTimes(2); }); }); @@ -1042,7 +1042,7 @@ describe('MrWidgetOptions', () => { registerExtension(pollingErrorExtension); await createComponent(); - expect(pollRequest).toHaveBeenCalledTimes(4); + expect(pollRequest).toHaveBeenCalledTimes(2); }); it('captures sentry error and displays error when poll has failed', async () => { diff --git a/spec/frontend/vue_shared/components/diff_stats_dropdown_spec.js b/spec/frontend/vue_shared/components/diff_stats_dropdown_spec.js index 68684004b82..99c973bdd26 100644 --- a/spec/frontend/vue_shared/components/diff_stats_dropdown_spec.js +++ b/spec/frontend/vue_shared/components/diff_stats_dropdown_spec.js @@ -106,11 +106,11 @@ describe('Diff Stats Dropdown', () => { expectedAddedDeletedExpanded, expectedAddedDeletedCollapsed, }) => { - beforeAll(() => { + beforeEach(() => { createComponent({ changed, added, deleted }); }); - afterAll(() => { + afterEach(() => { wrapper.destroy(); }); diff --git a/spec/lib/gitlab/github_import/importer/issue_importer_spec.rb b/spec/lib/gitlab/github_import/importer/issue_importer_spec.rb index 1692aac49f2..5d27a64bda0 100644 --- a/spec/lib/gitlab/github_import/importer/issue_importer_spec.rb +++ b/spec/lib/gitlab/github_import/importer/issue_importer_spec.rb @@ -141,7 +141,7 @@ RSpec.describe Gitlab::GithubImport::Importer::IssueImporter, :clean_gitlab_redi .to receive(:insert_and_return_id) .with( { - iid: 42, + iid: 1, title: 'My Issue', author_id: user.id, project_id: project.id, @@ -172,7 +172,7 @@ RSpec.describe Gitlab::GithubImport::Importer::IssueImporter, :clean_gitlab_redi .to receive(:insert_and_return_id) .with( { - iid: 42, + iid: 1, title: 'My Issue', author_id: project.creator_id, project_id: project.id,