gitlab-org--gitlab-foss/spec/frontend/jobs/components/table/cells/pipeline_cell_spec.js

83 lines
2.4 KiB
JavaScript

import { GlAvatar } from '@gitlab/ui';
import { shallowMount } from '@vue/test-utils';
import { extendedWrapper } from 'helpers/vue_test_utils_helper';
import { getIdFromGraphQLId } from '~/graphql_shared/utils';
import PipelineCell from '~/jobs/components/table/cells/pipeline_cell.vue';
const mockJobWithoutUser = {
id: 'gid://gitlab/Ci::Build/2264',
pipeline: {
id: 'gid://gitlab/Ci::Pipeline/460',
path: '/root/ci-project/-/pipelines/460',
},
};
const mockJobWithUser = {
id: 'gid://gitlab/Ci::Build/2264',
pipeline: {
id: 'gid://gitlab/Ci::Pipeline/460',
path: '/root/ci-project/-/pipelines/460',
user: {
avatarUrl:
'https://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80&d=identicon',
webPath: '/root',
},
},
};
describe('Pipeline Cell', () => {
let wrapper;
const findPipelineId = () => wrapper.findByTestId('pipeline-id');
const findPipelineUserLink = () => wrapper.findByTestId('pipeline-user-link');
const findUserAvatar = () => wrapper.findComponent(GlAvatar);
const createComponent = (props = mockJobWithUser) => {
wrapper = extendedWrapper(
shallowMount(PipelineCell, {
propsData: {
job: props,
},
}),
);
};
afterEach(() => {
wrapper.destroy();
});
describe('Pipeline Id', () => {
beforeEach(() => {
createComponent();
});
it('displays the pipeline id and links to the pipeline', () => {
const expectedPipelineId = `#${getIdFromGraphQLId(mockJobWithUser.pipeline.id)}`;
expect(findPipelineId().text()).toBe(expectedPipelineId);
expect(findPipelineId().attributes('href')).toBe(mockJobWithUser.pipeline.path);
});
});
describe('Pipeline created by', () => {
const apiWrapperText = 'API';
it('shows and links to the pipeline user', () => {
createComponent();
expect(findPipelineUserLink().exists()).toBe(true);
expect(findPipelineUserLink().attributes('href')).toBe(mockJobWithUser.pipeline.user.webPath);
expect(findUserAvatar().attributes('src')).toBe(mockJobWithUser.pipeline.user.avatarUrl);
expect(wrapper.text()).not.toContain(apiWrapperText);
});
it('shows pipeline was created by the API', () => {
createComponent(mockJobWithoutUser);
expect(findPipelineUserLink().exists()).toBe(false);
expect(findUserAvatar().exists()).toBe(false);
expect(wrapper.text()).toContain(apiWrapperText);
});
});
});