46 lines
1.3 KiB
TypeScript
46 lines
1.3 KiB
TypeScript
// Copyright 2021 Signal Messenger, LLC
|
|
// SPDX-License-Identifier: AGPL-3.0-only
|
|
|
|
import { assert } from 'chai';
|
|
import { IMAGE_JPEG, IMAGE_PNG } from '../../types/MIME';
|
|
import { sniffImageMimeType } from '../../util/sniffImageMimeType';
|
|
|
|
import { canvasToBlob } from '../../util/canvasToBlob';
|
|
|
|
describe('canvasToBlob', () => {
|
|
let canvas: HTMLCanvasElement;
|
|
beforeEach(() => {
|
|
canvas = document.createElement('canvas');
|
|
canvas.width = 100;
|
|
canvas.height = 200;
|
|
|
|
const context = canvas.getContext('2d');
|
|
if (!context) {
|
|
throw new Error('Test setup error: cannot get canvas rendering context');
|
|
}
|
|
context.fillStyle = '#ff9900';
|
|
context.fillRect(10, 10, 20, 20);
|
|
});
|
|
|
|
it('converts a canvas to an Blob, JPEG by default', async () => {
|
|
const result = await canvasToBlob(canvas);
|
|
|
|
assert.strictEqual(
|
|
sniffImageMimeType(new Uint8Array(await result.arrayBuffer())),
|
|
IMAGE_JPEG
|
|
);
|
|
|
|
// These are just smoke tests.
|
|
assert.instanceOf(result, Blob);
|
|
assert.isAtLeast(result.size, 50);
|
|
});
|
|
|
|
it('can convert a canvas to a PNG Blob', async () => {
|
|
const result = await canvasToBlob(canvas, IMAGE_PNG);
|
|
|
|
assert.strictEqual(
|
|
sniffImageMimeType(new Uint8Array(await result.arrayBuffer())),
|
|
IMAGE_PNG
|
|
);
|
|
});
|
|
});
|