1
0
mirror of https://github.com/lana-k/sqliteviz.git synced 2025-12-06 10:08:52 +08:00

add tests for clipboard lib

This commit is contained in:
lana-k
2021-08-29 21:32:13 +02:00
parent 4730afc68a
commit 23d2421584
2 changed files with 53 additions and 23 deletions

View File

@@ -1,27 +1,6 @@
import Lib from 'plotly.js/src/lib'
import dataUrlToBlob from 'dataurl-to-blob'
async function _copyBlob (blob) {
await navigator.clipboard.write([
new ClipboardItem({ // eslint-disable-line no-undef
[blob.type]: blob
})
])
}
async function _copyFromDataUrl (url) {
const blob = dataUrlToBlob(url)
await _copyBlob(blob)
Lib.notifier('Image copied to clipboard successfully', 'long')
}
async function _copyCanvas (canvas) {
canvas.toBlob(async (blob) => {
await _copyBlob(blob)
Lib.notifier('Image copied to clipboard successfully', 'long')
}, 'image/png', 1)
}
export default {
async copyCsv (str) {
await navigator.clipboard.writeText(str)
@@ -30,9 +9,30 @@ export default {
async copyImage (source) {
if (source instanceof HTMLCanvasElement) {
return _copyCanvas(source)
return this._copyCanvas(source)
} else {
return _copyFromDataUrl(source)
return this._copyFromDataUrl(source)
}
},
async _copyBlob (blob) {
await navigator.clipboard.write([
new ClipboardItem({ // eslint-disable-line no-undef
[blob.type]: blob
})
])
},
async _copyFromDataUrl (url) {
const blob = dataUrlToBlob(url)
await this._copyBlob(blob)
Lib.notifier('Image copied to clipboard successfully', 'long')
},
async _copyCanvas (canvas) {
canvas.toBlob(async (blob) => {
await this._copyBlob(blob)
Lib.notifier('Image copied to clipboard successfully', 'long')
}, 'image/png', 1)
}
}

View File

@@ -0,0 +1,30 @@
import { expect } from 'chai'
import cIo from '@/lib/utils/clipboardIo'
import sinon from 'sinon'
describe('clipboardIo.js', async () => {
afterEach(() => {
sinon.restore()
})
it('copyCsv', async () => {
sinon.stub(navigator.clipboard, 'writeText').resolves(true)
await cIo.copyCsv('id\tname\r\n1\t2')
expect(navigator.clipboard.writeText.calledOnceWith('id\tname\r\n1\t2'))
})
it('copyImage for canvas calls _copyCanvas', async () => {
sinon.stub(cIo, '_copyCanvas').resolves(true)
const canvas = document.createElement('canvas')
await cIo.copyImage(canvas)
expect(cIo._copyCanvas.calledOnceWith(canvas))
})
it('copyImage for dataUrl calls _copyFromDataUrl', async () => {
sinon.stub(cIo, '_copyFromDataUrl').resolves(true)
const url = document.createElement('canvas').toDataURL()
await cIo.copyImage(url)
expect(cIo._copyFromDataUrl.calledOnceWith(url))
})
})