137 lines
3.5 KiB
TypeScript
137 lines
3.5 KiB
TypeScript
// Copyright 2021 Signal Messenger, LLC
|
|
// SPDX-License-Identifier: AGPL-3.0-only
|
|
|
|
import { assert } from 'chai';
|
|
import { VIDEO_MP4 } from '../../types/MIME';
|
|
|
|
import { fakeAttachment } from '../helpers/fakeAttachment';
|
|
|
|
import { shouldUseFullSizeLinkPreviewImage } from '../../linkPreviews/shouldUseFullSizeLinkPreviewImage';
|
|
|
|
describe('shouldUseFullSizeLinkPreviewImage', () => {
|
|
const baseLinkPreview = {
|
|
title: 'Foo Bar',
|
|
domain: 'example.com',
|
|
url: 'https://example.com/foo.html',
|
|
isStickerPack: false,
|
|
isCallLink: false,
|
|
};
|
|
|
|
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(),
|
|
})
|
|
);
|
|
});
|
|
});
|