diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2023-05-06 00:09:12 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2023-05-06 00:09:12 +0300 |
commit | 055dceef99269657e39c5264a8464b078e37e069 (patch) | |
tree | 998411da93402a473838f033bd01d56554f4cd2e /spec/frontend/jobs | |
parent | bc4cd6ffb93ae695f20ea54f4e4803d50c78a69e (diff) |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec/frontend/jobs')
-rw-r--r-- | spec/frontend/jobs/components/table/jobs_table_spec.js | 82 |
1 files changed, 60 insertions, 22 deletions
diff --git a/spec/frontend/jobs/components/table/jobs_table_spec.js b/spec/frontend/jobs/components/table/jobs_table_spec.js index 06b13aa4372..654b6d1c130 100644 --- a/spec/frontend/jobs/components/table/jobs_table_spec.js +++ b/spec/frontend/jobs/components/table/jobs_table_spec.js @@ -3,7 +3,10 @@ import { mount } from '@vue/test-utils'; import { extendedWrapper } from 'helpers/vue_test_utils_helper'; import JobsTable from '~/jobs/components/table/jobs_table.vue'; import CiBadgeLink from '~/vue_shared/components/ci_badge_link.vue'; -import { mockJobsNodes } from '../../mock_data'; +import { DEFAULT_FIELDS_ADMIN } from '~/pages/admin/jobs/components/constants'; +import ProjectCell from '~/pages/admin/jobs/components/table/cell/project_cell.vue'; +import RunnerCell from '~/pages/admin/jobs/components/table/cells/runner_cell.vue'; +import { mockJobsNodes, mockAllJobsNodes } from '../../mock_data'; describe('Jobs Table', () => { let wrapper; @@ -13,48 +16,83 @@ describe('Jobs Table', () => { const findTableRows = () => wrapper.findAllByTestId('jobs-table-row'); const findJobStage = () => wrapper.findByTestId('job-stage-name'); const findJobName = () => wrapper.findByTestId('job-name'); + const findJobProject = () => wrapper.findComponent(ProjectCell); + const findJobRunner = () => wrapper.findComponent(RunnerCell); const findAllCoverageJobs = () => wrapper.findAllByTestId('job-coverage'); const createComponent = (props = {}) => { wrapper = extendedWrapper( mount(JobsTable, { propsData: { - jobs: mockJobsNodes, ...props, }, }), ); }; - beforeEach(() => { - createComponent(); - }); + describe('jobs table', () => { + beforeEach(() => { + createComponent({ jobs: mockJobsNodes }); + }); - it('displays the jobs table', () => { - expect(findTable().exists()).toBe(true); - }); + it('displays the jobs table', () => { + expect(findTable().exists()).toBe(true); + }); - it('displays correct number of job rows', () => { - expect(findTableRows()).toHaveLength(mockJobsNodes.length); - }); + it('displays correct number of job rows', () => { + expect(findTableRows()).toHaveLength(mockJobsNodes.length); + }); + + it('displays job status', () => { + expect(findCiBadgeLink().exists()).toBe(true); + }); + + it('displays the job stage and name', () => { + const [firstJob] = mockJobsNodes; + + expect(findJobStage().text()).toBe(firstJob.stage.name); + expect(findJobName().text()).toBe(firstJob.name); + }); - it('displays job status', () => { - expect(findCiBadgeLink().exists()).toBe(true); + it('displays the coverage for only jobs that have coverage', () => { + const jobsThatHaveCoverage = mockJobsNodes.filter((job) => job.coverage !== null); + + jobsThatHaveCoverage.forEach((job, index) => { + expect(findAllCoverageJobs().at(index).text()).toBe(`${job.coverage}%`); + }); + expect(findAllCoverageJobs()).toHaveLength(jobsThatHaveCoverage.length); + }); }); - it('displays the job stage and name', () => { - const firstJob = mockJobsNodes[0]; + describe('regular user', () => { + beforeEach(() => { + createComponent({ jobs: mockJobsNodes }); + }); + + it('hides the job runner', () => { + expect(findJobRunner().exists()).toBe(false); + }); - expect(findJobStage().text()).toBe(firstJob.stage.name); - expect(findJobName().text()).toBe(firstJob.name); + it('hides the job project link', () => { + expect(findJobProject().exists()).toBe(false); + }); }); - it('displays the coverage for only jobs that have coverage', () => { - const jobsThatHaveCoverage = mockJobsNodes.filter((job) => job.coverage !== null); + describe('admin mode', () => { + beforeEach(() => { + createComponent({ jobs: mockAllJobsNodes, tableFields: DEFAULT_FIELDS_ADMIN, admin: true }); + }); + + it('displays the runner cell', () => { + expect(findJobRunner().exists()).toBe(true); + }); + + it('displays the project cell', () => { + expect(findJobProject().exists()).toBe(true); + }); - jobsThatHaveCoverage.forEach((job, index) => { - expect(findAllCoverageJobs().at(index).text()).toBe(`${job.coverage}%`); + it('displays correct number of job rows', () => { + expect(findTableRows()).toHaveLength(mockAllJobsNodes.length); }); - expect(findAllCoverageJobs()).toHaveLength(jobsThatHaveCoverage.length); }); }); |