mirror of
https://github.com/documenso/documenso.git
synced 2026-07-25 01:15:49 +10:00
38 lines
1.1 KiB
TypeScript
38 lines
1.1 KiB
TypeScript
import { optimiseBrandingLogo } from '@documenso/lib/utils/images/logo';
|
|
import { expect, test } from '@playwright/test';
|
|
import sharp from 'sharp';
|
|
|
|
const makePng = async (width = 1200, height = 1200) =>
|
|
sharp({
|
|
create: { width, height, channels: 3, background: { r: 10, g: 20, b: 30 } },
|
|
})
|
|
.png()
|
|
.toBuffer();
|
|
|
|
test.describe('optimiseBrandingLogo', () => {
|
|
test('re-encodes a valid image to a PNG buffer', async () => {
|
|
const input = await makePng();
|
|
|
|
const output = await optimiseBrandingLogo(input);
|
|
|
|
const metadata = await sharp(output).metadata();
|
|
|
|
expect(metadata.format).toBe('png');
|
|
});
|
|
|
|
test('bounds the image to a maximum of 512px on its largest side', async () => {
|
|
const input = await makePng(2000, 1000);
|
|
|
|
const output = await optimiseBrandingLogo(input);
|
|
|
|
const metadata = await sharp(output).metadata();
|
|
|
|
expect(metadata.width).toBeLessThanOrEqual(512);
|
|
expect(metadata.height).toBeLessThanOrEqual(512);
|
|
});
|
|
|
|
test('rejects input that is not a valid image', async () => {
|
|
await expect(optimiseBrandingLogo(Buffer.from('this is not an image'))).rejects.toThrow();
|
|
});
|
|
});
|