diff --git a/ee/spec/frontend/analytics/repository_analytics/components/download_test_coverage_spec.js b/ee/spec/frontend/analytics/repository_analytics/components/download_test_coverage_spec.js index 9fbb0b875527d98eac00e8aa8265bcb9403875eb..16f851be59c8cce716d62d40342ba1ef7deedce5 100644 --- a/ee/spec/frontend/analytics/repository_analytics/components/download_test_coverage_spec.js +++ b/ee/spec/frontend/analytics/repository_analytics/components/download_test_coverage_spec.js @@ -19,6 +19,7 @@ describe('Download test coverage component', () => { .find('[data-testid="group-code-coverage-select-all-projects-button"]') .vm.$emit('click'); const findAlert = () => wrapper.findComponent(GlAlert); + const findSelectProjectsDropdown = () => wrapper.findComponent(SelectProjectsDropdown); const injectedProperties = { groupAnalyticsCoverageReportsPath: '/coverage.csv', @@ -44,11 +45,6 @@ describe('Download test coverage component', () => { createComponent(); }); - afterEach(() => { - wrapper.destroy(); - wrapper = null; - }); - it('renders button to open download code coverage modal', () => { expect(findCodeCoverageModalButton().exists()).toBe(true); }); @@ -60,9 +56,7 @@ describe('Download test coverage component', () => { describe('when there is an error fetching the projects', () => { it('displays an alert for the failed query', async () => { - // setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details - // eslint-disable-next-line no-restricted-syntax - wrapper.setData({ hasError: true }); + findSelectProjectsDropdown().vm.$emit('projects-query-error'); await nextTick(); expect(findAlert().exists()).toBe(true); @@ -74,9 +68,7 @@ describe('Download test coverage component', () => { describe('with all projects selected', () => { it('renders primary action as a link with no project_ids param', async () => { - // setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details - // eslint-disable-next-line no-restricted-syntax - wrapper.setData({ allProjectsSelected: true, selectedProjectIds: [] }); + findSelectProjectsDropdown().vm.$emit('select-all-projects'); await nextTick(); expect(findCodeCoverageDownloadButton().attributes('href')).toBe( @@ -87,9 +79,9 @@ describe('Download test coverage component', () => { describe('with two or more projects selected without selecting all projects', () => { it('renders primary action as a link with two project IDs as parameters', async () => { - // setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details - // eslint-disable-next-line no-restricted-syntax - wrapper.setData({ allProjectsSelected: false, selectedProjectIds: [1, 2] }); + findSelectProjectsDropdown().vm.$emit('select-project', { parsedId: 1 }); + findSelectProjectsDropdown().vm.$emit('select-project', { parsedId: 2 }); + const projectIdsQueryParam = `project_ids[]=1&project_ids[]=2`; const expectedPath = `${groupAnalyticsCoverageReportsPathWithDates}&${projectIdsQueryParam}`; @@ -100,9 +92,8 @@ describe('Download test coverage component', () => { describe('with one project selected', () => { it('renders primary action as a link with one project ID as a parameter', async () => { - // setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details - // eslint-disable-next-line no-restricted-syntax - wrapper.setData({ allProjectsSelected: false, selectedProjectIds: [1] }); + findSelectProjectsDropdown().vm.$emit('select-project', { parsedId: 1 }); + const projectIdsQueryParam = `project_ids[]=1`; const expectedPath = `${groupAnalyticsCoverageReportsPathWithDates}&${projectIdsQueryParam}`; @@ -119,9 +110,10 @@ describe('Download test coverage component', () => { describe('when clicking the select all button', () => { it('selects all projects and removes the disabled attribute from the download button', async () => { - // setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details - // eslint-disable-next-line no-restricted-syntax - wrapper.setData({ allProjectsSelected: false, selectedProjectIds: [] }); + // Simulate clicking same project twice so there are no selected project ids + findSelectProjectsDropdown().vm.$emit('select-project', { parsedId: 1 }); + findSelectProjectsDropdown().vm.$emit('select-project', { parsedId: 1 }); + clickSelectAllProjectsButton(); await nextTick();