70 lines
1.9 KiB
JavaScript
70 lines
1.9 KiB
JavaScript
import { GlButton, GlLink } from '@gitlab/ui';
|
|
import { shallowMount } from '@vue/test-utils';
|
|
import JobsSidebarRetryButton from '~/jobs/components/job_sidebar_retry_button.vue';
|
|
import createStore from '~/jobs/store';
|
|
import job from '../mock_data';
|
|
|
|
describe('Job Sidebar Retry Button', () => {
|
|
let store;
|
|
let wrapper;
|
|
|
|
const forwardDeploymentFailure = 'forward_deployment_failure';
|
|
const findRetryButton = () => wrapper.find(GlButton);
|
|
const findRetryLink = () => wrapper.find(GlLink);
|
|
|
|
const createWrapper = ({ props = {} } = {}) => {
|
|
store = createStore();
|
|
wrapper = shallowMount(JobsSidebarRetryButton, {
|
|
propsData: {
|
|
href: job.retry_path,
|
|
modalId: 'modal-id',
|
|
...props,
|
|
},
|
|
store,
|
|
});
|
|
};
|
|
|
|
afterEach(() => {
|
|
if (wrapper) {
|
|
wrapper.destroy();
|
|
wrapper = null;
|
|
}
|
|
});
|
|
|
|
beforeEach(createWrapper);
|
|
|
|
it.each([
|
|
[null, false, true],
|
|
['unmet_prerequisites', false, true],
|
|
[forwardDeploymentFailure, true, false],
|
|
])(
|
|
'when error is: %s, should render button: %s | should render link: %s',
|
|
async (failureReason, buttonExists, linkExists) => {
|
|
await store.dispatch('receiveJobSuccess', { ...job, failure_reason: failureReason });
|
|
|
|
expect(findRetryButton().exists()).toBe(buttonExists);
|
|
expect(findRetryLink().exists()).toBe(linkExists);
|
|
expect(wrapper.text()).toMatch('Retry');
|
|
},
|
|
);
|
|
|
|
describe('Button', () => {
|
|
it('should have the correct configuration', async () => {
|
|
await store.dispatch('receiveJobSuccess', { failure_reason: forwardDeploymentFailure });
|
|
|
|
expect(findRetryButton().attributes()).toMatchObject({
|
|
category: 'primary',
|
|
variant: 'confirm',
|
|
});
|
|
});
|
|
});
|
|
|
|
describe('Link', () => {
|
|
it('should have the correct configuration', () => {
|
|
expect(findRetryLink().attributes()).toMatchObject({
|
|
'data-method': 'post',
|
|
href: job.retry_path,
|
|
});
|
|
});
|
|
});
|
|
});
|