125 lines
2.9 KiB
JavaScript
125 lines
2.9 KiB
JavaScript
import { nextTick } from 'vue';
|
|
import { shallowMount } from '@vue/test-utils';
|
|
import HarborTagsPage from '~/packages_and_registries/harbor_registry/pages/harbor_tags.vue';
|
|
import TagsHeader from '~/packages_and_registries/harbor_registry/components/tags/tags_header.vue';
|
|
import TagsList from '~/packages_and_registries/harbor_registry/components/tags/tags_list.vue';
|
|
import waitForPromises from 'helpers/wait_for_promises';
|
|
import { defaultConfig, harborTagsResponse, mockArtifactDetail } from '../mock_data';
|
|
|
|
let mockHarborTagsResponse;
|
|
|
|
jest.mock('~/rest_api', () => ({
|
|
getHarborTags: () => mockHarborTagsResponse,
|
|
}));
|
|
|
|
describe('Harbor Tags page', () => {
|
|
let wrapper;
|
|
|
|
const findTagsHeader = () => wrapper.find(TagsHeader);
|
|
const findTagsList = () => wrapper.find(TagsList);
|
|
|
|
const waitForHarborTagsRequest = async () => {
|
|
await waitForPromises();
|
|
await nextTick();
|
|
};
|
|
|
|
const breadCrumbState = {
|
|
updateName: jest.fn(),
|
|
updateHref: jest.fn(),
|
|
};
|
|
|
|
const $route = {
|
|
params: mockArtifactDetail,
|
|
};
|
|
|
|
const defaultHeaders = {
|
|
'x-page': '1',
|
|
'X-Per-Page': '20',
|
|
'X-TOTAL': '1',
|
|
'X-Total-Pages': '1',
|
|
};
|
|
|
|
const mountComponent = ({ endpoint = defaultConfig.endpoint } = {}) => {
|
|
wrapper = shallowMount(HarborTagsPage, {
|
|
mocks: {
|
|
$route,
|
|
},
|
|
provide() {
|
|
return {
|
|
breadCrumbState,
|
|
endpoint,
|
|
};
|
|
},
|
|
});
|
|
};
|
|
|
|
beforeEach(() => {
|
|
mockHarborTagsResponse = Promise.resolve({
|
|
data: harborTagsResponse,
|
|
headers: defaultHeaders,
|
|
});
|
|
});
|
|
|
|
afterEach(() => {
|
|
wrapper.destroy();
|
|
});
|
|
|
|
it('contains tags header', () => {
|
|
mountComponent();
|
|
|
|
expect(findTagsHeader().exists()).toBe(true);
|
|
});
|
|
|
|
it('contains tags list', () => {
|
|
mountComponent();
|
|
|
|
expect(findTagsList().exists()).toBe(true);
|
|
});
|
|
|
|
describe('header', () => {
|
|
it('has the correct props', async () => {
|
|
mountComponent();
|
|
|
|
await waitForHarborTagsRequest();
|
|
expect(findTagsHeader().props()).toMatchObject({
|
|
artifactDetail: mockArtifactDetail,
|
|
pageInfo: {
|
|
page: 1,
|
|
perPage: 20,
|
|
total: 1,
|
|
totalPages: 1,
|
|
},
|
|
tagsLoading: false,
|
|
});
|
|
});
|
|
});
|
|
|
|
describe('list', () => {
|
|
it('has the correct props', async () => {
|
|
mountComponent();
|
|
|
|
await waitForHarborTagsRequest();
|
|
expect(findTagsList().props()).toMatchObject({
|
|
tags: [
|
|
{
|
|
repositoryId: 4,
|
|
artifactId: 5,
|
|
id: 4,
|
|
name: 'latest',
|
|
pullTime: '0001-01-01T00:00:00.000Z',
|
|
pushTime: '2022-05-27T18:21:27.903Z',
|
|
signed: false,
|
|
immutable: false,
|
|
},
|
|
],
|
|
isLoading: false,
|
|
pageInfo: {
|
|
page: 1,
|
|
perPage: 20,
|
|
total: 1,
|
|
totalPages: 1,
|
|
},
|
|
});
|
|
});
|
|
});
|
|
});
|