const test = require('tap').test const { Canvas, createCanvas } = require('canvas') const QRCode = require('lib') const Helpers = require('test/helpers') test('toCanvas - no promise available', function (t) { Helpers.removeNativePromise() // Mock document object global.document = { createElement: function (el) { if (el === 'canvas') { return createCanvas(200, 200) } } } const canvasEl = createCanvas(200, 200) t.throw(function () { QRCode.toCanvas() }, 'Should throw if no arguments are provided') t.throw(function () { QRCode.toCanvas('some text') }, 'Should throw if a callback is not provided') t.throw(function () { QRCode.toCanvas(canvasEl, 'some text') }, 'Should throw if a callback is not provided') t.throw(function () { QRCode.toCanvas(canvasEl, 'some text', {}) }, 'Should throw if callback is not a function') t.end() global.document = undefined Helpers.restoreNativePromise() }) test('toCanvas', function (t) { // Mock document object global.document = { createElement: function (el) { if (el === 'canvas') { return createCanvas(200, 200) } } } t.plan(7) t.throw(function () { QRCode.toCanvas() }, 'Should throw if no arguments are provided') QRCode.toCanvas('some text', function (err, canvasEl) { t.ok(!err, 'There should be no error') t.ok(canvasEl instanceof Canvas, 'Should return a new canvas object') }) QRCode.toCanvas('some text', { errorCorrectionLevel: 'H' }, function (err, canvasEl) { t.ok(!err, 'There should be no error') t.ok(canvasEl instanceof Canvas, 'Should return a new canvas object') }) QRCode.toCanvas('some text').then(function (canvasEl) { t.ok(canvasEl instanceof Canvas, 'Should return a new canvas object (promise)') }) QRCode.toCanvas('some text', { errorCorrectionLevel: 'H' }).then(function (canvasEl) { t.ok(canvasEl instanceof Canvas, 'Should return a new canvas object (promise)') }) global.document = undefined }) test('toCanvas with specified canvas element', function (t) { const canvasEl = createCanvas(200, 200) t.plan(6) QRCode.toCanvas(canvasEl, 'some text', function (err, canvasEl) { t.ok(!err, 'There should be no error') t.ok(canvasEl instanceof Canvas, 'Should return a new canvas object') }) QRCode.toCanvas(canvasEl, 'some text', { errorCorrectionLevel: 'H' }, function (err, canvasEl) { t.ok(!err, 'There should be no error') t.ok(canvasEl instanceof Canvas, 'Should return a new canvas object') }) QRCode.toCanvas(canvasEl, 'some text').then(function (canvasEl) { t.ok(canvasEl instanceof Canvas, 'Should return a new canvas object (promise)') }) QRCode.toCanvas(canvasEl, 'some text', { errorCorrectionLevel: 'H' }).then(function (canvasEl) { t.ok(canvasEl instanceof Canvas, 'Should return a new canvas object (promise)') }) })