diff --git a/frontend/src/components/QrCode/FigureQrCode.spec.js b/frontend/src/components/QrCode/FigureQrCode.spec.js index 715a5d5d5..0c0b7bf3a 100644 --- a/frontend/src/components/QrCode/FigureQrCode.spec.js +++ b/frontend/src/components/QrCode/FigureQrCode.spec.js @@ -6,12 +6,15 @@ const localVue = global.localVue const propsData = { link: '', } +const mocks = { + $t: jest.fn((t) => t), +} describe('FigureQrCode', () => { let wrapper const Wrapper = () => { - return mount(FigureQrCode, { localVue, propsData }) + return mount(FigureQrCode, { localVue, mocks, propsData }) } describe('mount', () => { @@ -19,12 +22,55 @@ describe('FigureQrCode', () => { wrapper = Wrapper() }) - it('renders the Div Element ".figure-qr-code"', () => { - expect(wrapper.find('div.figure-qr-code').exists()).toBeTruthy() + afterEach(() => { + jest.clearAllMocks() }) - it('renders the Div Element "q-r-canvas"', () => { - expect(wrapper.find('q-r-canvas')) + it('has options filled', () => { + expect(wrapper.vm.options).toEqual({ + cellSize: 8, + correctLevel: 'H', + data: '', + }) + }) + + it('renders the Div Element ".figure-qr-code"', () => { + expect(wrapper.find('div.figure-qr-code').exists()).toBe(true) + }) + + it('renders the Div Element "qrbox"', () => { + expect(wrapper.find('div.qrbox').exists()).toBe(true) + }) + + it('renders the Canvas Element "#qrcanvas"', () => { + const canvas = wrapper.find('#qrcanvas') + + expect(canvas.exists()).toBe(true) + const canvasEl = canvas.element + const canvasWidth = canvasEl.width + const canvasHeight = canvasEl.height + + expect(canvasWidth).toBeGreaterThan(0) + expect(canvasHeight).toBeGreaterThan(0) + + const canvasContext = canvasEl.toDataURL('image/png') + expect(canvasContext).not.toBeNull() + }) + + it('renders the A Element "#download"', () => { + const downloadLink = wrapper.find('#download') + expect(downloadLink.exists()).toBe(true) + }) + + describe('Download QR-Code link', () => { + beforeEach(() => { + const downloadLink = wrapper.find('#download') + downloadLink.trigger('click') + }) + + it('click the A Element "#download" set an href', () => { + expect(wrapper.find('#download').attributes('href')).toEqual('data:image/png;base64,00') + }) }) }) }) diff --git a/frontend/src/components/QrCode/FigureQrCode.vue b/frontend/src/components/QrCode/FigureQrCode.vue index 00f1b54b9..40b1098dc 100644 --- a/frontend/src/components/QrCode/FigureQrCode.vue +++ b/frontend/src/components/QrCode/FigureQrCode.vue @@ -1,7 +1,18 @@ @@ -37,6 +48,13 @@ export default { } } }, + methods: { + downloadImg() { + const canvas = this.$refs.canvas.$el + const image = canvas.toDataURL('image/png') + this.$refs.download.href = image + }, + }, }