debian-mirror-gitlab/spec/frontend/vue_shared/components/deployment_instance/deployment_instance_spec.js
2021-03-08 18:12:59 +05:30

103 lines
2.7 KiB
JavaScript

import { shallowMount } from '@vue/test-utils';
import DeployBoardInstance from '~/vue_shared/components/deployment_instance.vue';
import { folder } from './mock_data';
describe('Deploy Board Instance', () => {
let wrapper;
const createComponent = (props = {}) =>
shallowMount(DeployBoardInstance, {
propsData: {
status: 'succeeded',
...props,
},
});
describe('as a non-canary deployment', () => {
afterEach(() => {
wrapper.destroy();
});
it('should render a div with the correct css status and tooltip data', () => {
wrapper = createComponent({
logsPath: folder.logs_path,
tooltipText: 'This is a pod',
});
expect(wrapper.classes('deployment-instance-succeeded')).toBe(true);
expect(wrapper.attributes('title')).toEqual('This is a pod');
});
it('should render a div without tooltip data', (done) => {
wrapper = createComponent({
status: 'deploying',
tooltipText: '',
});
wrapper.vm.$nextTick(() => {
expect(wrapper.classes('deployment-instance-deploying')).toBe(true);
expect(wrapper.attributes('title')).toEqual('');
done();
});
});
it('should have a log path computed with a pod name as a parameter', () => {
wrapper = createComponent({
logsPath: folder.logs_path,
podName: 'tanuki-1',
});
expect(wrapper.vm.computedLogPath).toEqual(
'/root/review-app/-/logs?environment_name=foo&pod_name=tanuki-1',
);
});
});
describe('as a canary deployment', () => {
afterEach(() => {
wrapper.destroy();
});
it('should render a div with canary class when stable prop is provided as false', (done) => {
wrapper = createComponent({
stable: false,
});
wrapper.vm.$nextTick(() => {
expect(wrapper.classes('deployment-instance-canary')).toBe(true);
done();
});
});
});
describe('as a legend item', () => {
afterEach(() => {
wrapper.destroy();
});
it('should not be a link without a logsPath prop', (done) => {
wrapper = createComponent({
stable: false,
logsPath: '',
});
wrapper.vm.$nextTick(() => {
expect(wrapper.vm.computedLogPath).toBeNull();
expect(wrapper.vm.isLink).toBeFalsy();
done();
});
});
it('should render a link without href if path is not passed', () => {
wrapper = createComponent();
expect(wrapper.attributes('href')).toBeUndefined();
});
it('should not have a tooltip', () => {
wrapper = createComponent();
expect(wrapper.attributes('title')).toEqual('');
});
});
});