147 lines
3.7 KiB
TypeScript
147 lines
3.7 KiB
TypeScript
|
// Copyright 2021 Signal Messenger, LLC
|
||
|
// SPDX-License-Identifier: AGPL-3.0-only
|
||
|
|
||
|
import { assert } from 'chai';
|
||
|
import { IMAGE_JPEG, VIDEO_MP4 } from '../../types/MIME';
|
||
|
import { AttachmentType } from '../../types/Attachment';
|
||
|
|
||
|
import { shouldUseFullSizeLinkPreviewImage } from '../../linkPreviews/shouldUseFullSizeLinkPreviewImage';
|
||
|
|
||
|
describe('shouldUseFullSizeLinkPreviewImage', () => {
|
||
|
const baseLinkPreview = {
|
||
|
title: 'Foo Bar',
|
||
|
domain: 'example.com',
|
||
|
url: 'https://example.com/foo.html',
|
||
|
isStickerPack: false,
|
||
|
};
|
||
|
|
||
|
const fakeAttachment = (
|
||
|
overrides: Partial<AttachmentType> = {}
|
||
|
): AttachmentType => ({
|
||
|
contentType: IMAGE_JPEG,
|
||
|
fileName: 'foo.jpg',
|
||
|
url: '/tmp/foo.jpg',
|
||
|
width: 800,
|
||
|
height: 600,
|
||
|
...overrides,
|
||
|
});
|
||
|
|
||
|
it('returns false if there is no image', () => {
|
||
|
assert.isFalse(
|
||
|
shouldUseFullSizeLinkPreviewImage({
|
||
|
...baseLinkPreview,
|
||
|
})
|
||
|
);
|
||
|
});
|
||
|
|
||
|
it('returns false is the preview is a sticker pack', () => {
|
||
|
assert.isFalse(
|
||
|
shouldUseFullSizeLinkPreviewImage({
|
||
|
...baseLinkPreview,
|
||
|
isStickerPack: true,
|
||
|
image: fakeAttachment(),
|
||
|
})
|
||
|
);
|
||
|
});
|
||
|
|
||
|
it("returns false if either of the image's dimensions are missing", () => {
|
||
|
assert.isFalse(
|
||
|
shouldUseFullSizeLinkPreviewImage({
|
||
|
...baseLinkPreview,
|
||
|
image: fakeAttachment({ width: undefined }),
|
||
|
})
|
||
|
);
|
||
|
assert.isFalse(
|
||
|
shouldUseFullSizeLinkPreviewImage({
|
||
|
...baseLinkPreview,
|
||
|
image: fakeAttachment({ height: undefined }),
|
||
|
})
|
||
|
);
|
||
|
assert.isFalse(
|
||
|
shouldUseFullSizeLinkPreviewImage({
|
||
|
...baseLinkPreview,
|
||
|
image: fakeAttachment({ width: undefined, height: undefined }),
|
||
|
})
|
||
|
);
|
||
|
});
|
||
|
|
||
|
it("returns false if either of the image's dimensions are <200px", () => {
|
||
|
assert.isFalse(
|
||
|
shouldUseFullSizeLinkPreviewImage({
|
||
|
...baseLinkPreview,
|
||
|
image: fakeAttachment({ width: 199 }),
|
||
|
})
|
||
|
);
|
||
|
assert.isFalse(
|
||
|
shouldUseFullSizeLinkPreviewImage({
|
||
|
...baseLinkPreview,
|
||
|
image: fakeAttachment({ height: 199 }),
|
||
|
})
|
||
|
);
|
||
|
assert.isFalse(
|
||
|
shouldUseFullSizeLinkPreviewImage({
|
||
|
...baseLinkPreview,
|
||
|
image: fakeAttachment({ width: 150, height: 199 }),
|
||
|
})
|
||
|
);
|
||
|
});
|
||
|
|
||
|
it('returns false if the image is square', () => {
|
||
|
assert.isFalse(
|
||
|
shouldUseFullSizeLinkPreviewImage({
|
||
|
...baseLinkPreview,
|
||
|
image: fakeAttachment({ width: 200, height: 200 }),
|
||
|
})
|
||
|
);
|
||
|
assert.isFalse(
|
||
|
shouldUseFullSizeLinkPreviewImage({
|
||
|
...baseLinkPreview,
|
||
|
image: fakeAttachment({ width: 500, height: 500 }),
|
||
|
})
|
||
|
);
|
||
|
});
|
||
|
|
||
|
it('returns false if the image is roughly square', () => {
|
||
|
assert.isFalse(
|
||
|
shouldUseFullSizeLinkPreviewImage({
|
||
|
...baseLinkPreview,
|
||
|
image: fakeAttachment({ width: 200, height: 201 }),
|
||
|
})
|
||
|
);
|
||
|
assert.isFalse(
|
||
|
shouldUseFullSizeLinkPreviewImage({
|
||
|
...baseLinkPreview,
|
||
|
image: fakeAttachment({ width: 497, height: 501 }),
|
||
|
})
|
||
|
);
|
||
|
});
|
||
|
|
||
|
it("returns false for large attachments that aren't images", () => {
|
||
|
assert.isFalse(
|
||
|
shouldUseFullSizeLinkPreviewImage({
|
||
|
...baseLinkPreview,
|
||
|
image: fakeAttachment({
|
||
|
contentType: VIDEO_MP4,
|
||
|
fileName: 'foo.mp4',
|
||
|
url: '/tmp/foo.mp4',
|
||
|
}),
|
||
|
})
|
||
|
);
|
||
|
});
|
||
|
|
||
|
it('returns true for larger images', () => {
|
||
|
assert.isTrue(
|
||
|
shouldUseFullSizeLinkPreviewImage({
|
||
|
...baseLinkPreview,
|
||
|
image: fakeAttachment({ width: 200, height: 500 }),
|
||
|
})
|
||
|
);
|
||
|
assert.isTrue(
|
||
|
shouldUseFullSizeLinkPreviewImage({
|
||
|
...baseLinkPreview,
|
||
|
image: fakeAttachment(),
|
||
|
})
|
||
|
);
|
||
|
});
|
||
|
});
|