Link previews: show full size image less often
This commit is contained in:
parent
92a35649da
commit
8c25ffd6f5
7 changed files with 220 additions and 53 deletions
|
@ -0,0 +1,146 @@
|
|||
// 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(),
|
||||
})
|
||||
);
|
||||
});
|
||||
});
|
Loading…
Add table
Add a link
Reference in a new issue