import { shallowMount } from '@vue/test-utils'; import TreeContent from '~/repository/components/tree_content.vue'; import FilePreview from '~/repository/components/preview/index.vue'; let vm; let $apollo; function factory(path, data = () => ({})) { $apollo = { query: jest.fn().mockReturnValue(Promise.resolve({ data: data() })), }; vm = shallowMount(TreeContent, { propsData: { path, }, mocks: { $apollo, }, }); } describe('Repository table component', () => { afterEach(() => { vm.destroy(); }); it('renders file preview', () => { factory('/'); vm.setData({ entries: { blobs: [{ name: 'README.md' }] } }); return vm.vm.$nextTick().then(() => { expect(vm.find(FilePreview).exists()).toBe(true); }); }); describe('normalizeData', () => { it('normalizes edge nodes', () => { factory('/'); const output = vm.vm.normalizeData('blobs', [{ node: '1' }, { node: '2' }]); expect(output).toEqual(['1', '2']); }); }); describe('hasNextPage', () => { it('returns undefined when hasNextPage is false', () => { factory('/'); const output = vm.vm.hasNextPage({ trees: { pageInfo: { hasNextPage: false } }, submodules: { pageInfo: { hasNextPage: false } }, blobs: { pageInfo: { hasNextPage: false } }, }); expect(output).toBe(undefined); }); it('returns pageInfo object when hasNextPage is true', () => { factory('/'); const output = vm.vm.hasNextPage({ trees: { pageInfo: { hasNextPage: false } }, submodules: { pageInfo: { hasNextPage: false } }, blobs: { pageInfo: { hasNextPage: true, nextCursor: 'test' } }, }); expect(output).toEqual({ hasNextPage: true, nextCursor: 'test' }); }); }); });