diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2020-06-18 14:18:50 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2020-06-18 14:18:50 +0300 |
commit | 8c7f4e9d5f36cff46365a7f8c4b9c21578c1e781 (patch) | |
tree | a77e7fe7a93de11213032ed4ab1f33a3db51b738 /spec/frontend/pdf | |
parent | 00b35af3db1abfe813a778f643dad221aad51fca (diff) |
Add latest changes from gitlab-org/gitlab@13-1-stable-ee
Diffstat (limited to 'spec/frontend/pdf')
-rw-r--r-- | spec/frontend/pdf/index_spec.js | 62 | ||||
-rw-r--r-- | spec/frontend/pdf/page_spec.js | 39 |
2 files changed, 101 insertions, 0 deletions
diff --git a/spec/frontend/pdf/index_spec.js b/spec/frontend/pdf/index_spec.js new file mode 100644 index 00000000000..0d8caa28fd1 --- /dev/null +++ b/spec/frontend/pdf/index_spec.js @@ -0,0 +1,62 @@ +import Vue from 'vue'; + +import { FIXTURES_PATH } from 'spec/test_constants'; +import PDFLab from '~/pdf/index.vue'; + +jest.mock('pdfjs-dist/webpack', () => { + return { default: jest.requireActual('pdfjs-dist/build/pdf') }; +}); + +const pdf = `${FIXTURES_PATH}/blob/pdf/test.pdf`; + +const Component = Vue.extend(PDFLab); + +describe('PDF component', () => { + let vm; + + const checkLoaded = done => { + if (vm.loading) { + setTimeout(() => { + checkLoaded(done); + }, 100); + } else { + done(); + } + }; + + describe('without PDF data', () => { + beforeEach(done => { + vm = new Component({ + propsData: { + pdf: '', + }, + }); + + vm.$mount(); + + checkLoaded(done); + }); + + it('does not render', () => { + expect(vm.$el.tagName).toBeUndefined(); + }); + }); + + describe('with PDF data', () => { + beforeEach(done => { + vm = new Component({ + propsData: { + pdf, + }, + }); + + vm.$mount(); + + checkLoaded(done); + }); + + it('renders pdf component', () => { + expect(vm.$el.tagName).toBeDefined(); + }); + }); +}); diff --git a/spec/frontend/pdf/page_spec.js b/spec/frontend/pdf/page_spec.js new file mode 100644 index 00000000000..4e24b0696ec --- /dev/null +++ b/spec/frontend/pdf/page_spec.js @@ -0,0 +1,39 @@ +import Vue from 'vue'; +import PageComponent from '~/pdf/page/index.vue'; +import mountComponent from 'helpers/vue_mount_component_helper'; + +jest.mock('pdfjs-dist/webpack', () => { + return { default: jest.requireActual('pdfjs-dist/build/pdf') }; +}); + +describe('Page component', () => { + const Component = Vue.extend(PageComponent); + let vm; + + afterEach(() => { + vm.$destroy(); + }); + + it('renders the page when mounting', done => { + const promise = Promise.resolve(); + const testPage = { + render: jest.fn().mockReturnValue({ promise: Promise.resolve() }), + getViewport: jest.fn().mockReturnValue({}), + }; + + vm = mountComponent(Component, { + page: testPage, + number: 1, + }); + + expect(vm.rendering).toBe(true); + + promise + .then(() => { + expect(testPage.render).toHaveBeenCalledWith(vm.renderContext); + expect(vm.rendering).toBe(false); + }) + .then(done) + .catch(done.fail); + }); +}); |