node-qrcode-lite/test/e2e/toFileStream.test.js
2020-04-16 22:50:11 +01:00

55 lines
1.4 KiB
JavaScript

const test = require('tap').test
const sinon = require('sinon')
const QRCode = require('lib')
const StreamMock = require('../mocks/writable-stream')
test('toFileStream png', function (t) {
t.throw(function () { QRCode.toFileStream('some text') },
'Should throw if stream is not provided')
t.throw(function () { QRCode.toFileStream(new StreamMock()) },
'Should throw if text is not provided')
const fstream = new StreamMock()
const spy = sinon.spy(fstream, 'emit')
QRCode.toFileStream(fstream, 'i am a pony!')
QRCode.toFileStream(fstream, 'i am a pony!', {
type: 'image/png'
})
t.ok(spy.neverCalledWith('error'),
'There should be no error')
spy.restore()
t.end()
})
test('toFileStream png with write error', function (t) {
const fstreamErr = new StreamMock().forceErrorOnWrite()
QRCode.toFileStream(fstreamErr, 'i am a pony!')
t.plan(2)
fstreamErr.on('error', function (e) {
t.ok(e, 'Should return an error')
})
})
test('toFileStream png with qrcode error', function (t) {
const fstreamErr = new StreamMock()
const bigString = Array(200).join('i am a pony!')
t.plan(2)
fstreamErr.on('error', function (e) {
t.ok(e, 'Should return an error')
})
QRCode.toFileStream(fstreamErr, bigString)
QRCode.toFileStream(fstreamErr, 'i am a pony!', {
version: 1, // force version=1 to trigger an error
errorCorrectionLevel: 'H'
})
})