From 1e2e0af67d1ca051e4b87c77c832e1d6644eb439 Mon Sep 17 00:00:00 2001 From: Winnie Hellmann Date: Thu, 23 Aug 2018 21:05:20 +0200 Subject: [PATCH] Remove waiting from PDF page component test --- spec/javascripts/pdf/page_spec.js | 62 ++++++++++++++----------------- 1 file changed, 27 insertions(+), 35 deletions(-) diff --git a/spec/javascripts/pdf/page_spec.js b/spec/javascripts/pdf/page_spec.js index ff1bfd7f650..a207f2afce6 100644 --- a/spec/javascripts/pdf/page_spec.js +++ b/spec/javascripts/pdf/page_spec.js @@ -3,53 +3,45 @@ import pdfjsLib from 'vendor/pdf'; import workerSrc from 'vendor/pdf.worker.min'; import PageComponent from '~/pdf/page/index.vue'; -import testPDF from '../fixtures/blob/pdf/test.pdf'; - -const Component = Vue.extend(PageComponent); +import mountComponent from 'spec/helpers/vue_mount_component_helper'; +import testPDF from 'spec/fixtures/blob/pdf/test.pdf'; describe('Page component', () => { + const Component = Vue.extend(PageComponent); let vm; let testPage; - pdfjsLib.PDFJS.workerSrc = workerSrc; - const checkRendered = (done) => { - if (vm.rendering) { - setTimeout(() => { - checkRendered(done); - }, 100); - } else { - done(); - } - }; - - beforeEach((done) => { - pdfjsLib.getDocument(testPDF) + beforeEach(done => { + pdfjsLib.PDFJS.workerSrc = workerSrc; + pdfjsLib + .getDocument(testPDF) .then(pdf => pdf.getPage(1)) - .then((page) => { + .then(page => { testPage = page; - done(); }) - .catch((error) => { - done.fail(error); - }); + .then(done) + .catch(done.fail); }); - describe('render', () => { - beforeEach((done) => { - vm = new Component({ - propsData: { - page: testPage, - number: 1, - }, - }); + afterEach(() => { + vm.$destroy(); + }); - vm.$mount(); - - checkRendered(done); + it('renders the page when mounting', done => { + const promise = Promise.resolve(); + spyOn(testPage, 'render').and.callFake(() => promise); + vm = mountComponent(Component, { + page: testPage, + number: 1, }); + expect(vm.rendering).toBe(true); - it('renders first page', () => { - expect(vm.$el.tagName).toBeDefined(); - }); + promise + .then(() => { + expect(testPage.render).toHaveBeenCalledWith(vm.renderContext); + expect(vm.rendering).toBe(false); + }) + .then(done) + .catch(done.fail); }); });