signal-desktop/ts/test-both/linkPreviews/shouldUseFullSizeLinkPreviewImage_test.ts

147 lines
3.7 KiB
TypeScript
Raw Normal View History

// 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(),
})
);
});
});