78 lines
2.6 KiB
JavaScript
78 lines
2.6 KiB
JavaScript
import { GlBadge } from '@gitlab/ui';
|
|
import { shallowMount } from '@vue/test-utils';
|
|
import MockAdapter from 'axios-mock-adapter';
|
|
import flushPromises from 'helpers/flush_promises';
|
|
import axios from '~/lib/utils/axios_utils';
|
|
import GitlabVersionCheck from '~/vue_shared/components/gitlab_version_check.vue';
|
|
|
|
describe('GitlabVersionCheck', () => {
|
|
let wrapper;
|
|
let mock;
|
|
|
|
const defaultResponse = {
|
|
code: 200,
|
|
res: { severity: 'success' },
|
|
};
|
|
|
|
const createComponent = (mockResponse) => {
|
|
const response = {
|
|
...defaultResponse,
|
|
...mockResponse,
|
|
};
|
|
|
|
mock = new MockAdapter(axios);
|
|
mock.onGet().replyOnce(response.code, response.res);
|
|
|
|
wrapper = shallowMount(GitlabVersionCheck);
|
|
};
|
|
|
|
afterEach(() => {
|
|
wrapper.destroy();
|
|
mock.restore();
|
|
});
|
|
|
|
const findGlBadge = () => wrapper.findComponent(GlBadge);
|
|
|
|
describe('template', () => {
|
|
describe.each`
|
|
description | mockResponse | renders
|
|
${'successful but null'} | ${{ code: 200, res: null }} | ${false}
|
|
${'successful and valid'} | ${{ code: 200, res: { severity: 'success' } }} | ${true}
|
|
${'an error'} | ${{ code: 500, res: null }} | ${false}
|
|
`('version_check.json response', ({ description, mockResponse, renders }) => {
|
|
describe(`is ${description}`, () => {
|
|
beforeEach(async () => {
|
|
createComponent(mockResponse);
|
|
await flushPromises(); // Ensure we wrap up the axios call
|
|
});
|
|
|
|
it(`does${renders ? '' : ' not'} render GlBadge`, () => {
|
|
expect(findGlBadge().exists()).toBe(renders);
|
|
});
|
|
});
|
|
});
|
|
|
|
describe.each`
|
|
mockResponse | expectedUI
|
|
${{ code: 200, res: { severity: 'success' } }} | ${{ title: 'Up to date', variant: 'success' }}
|
|
${{ code: 200, res: { severity: 'warning' } }} | ${{ title: 'Update available', variant: 'warning' }}
|
|
${{ code: 200, res: { severity: 'danger' } }} | ${{ title: 'Update ASAP', variant: 'danger' }}
|
|
`('badge ui', ({ mockResponse, expectedUI }) => {
|
|
describe(`when response is ${mockResponse.res.severity}`, () => {
|
|
beforeEach(async () => {
|
|
createComponent(mockResponse);
|
|
await flushPromises(); // Ensure we wrap up the axios call
|
|
});
|
|
|
|
it(`title is ${expectedUI.title}`, () => {
|
|
expect(findGlBadge().text()).toBe(expectedUI.title);
|
|
});
|
|
|
|
it(`variant is ${expectedUI.variant}`, () => {
|
|
expect(findGlBadge().attributes('variant')).toBe(expectedUI.variant);
|
|
});
|
|
});
|
|
});
|
|
});
|
|
});
|