47 lines
1.5 KiB
TypeScript
47 lines
1.5 KiB
TypeScript
import { shouldHydrateInlineImageForVisibility, shouldHydratePlayableMediaForVisibility } from './attachment-hydration-visibility.rules';
|
|
|
|
const diskBackedImage = {
|
|
available: false,
|
|
filename: 'photo.png',
|
|
id: 'att-1',
|
|
isImage: true,
|
|
mime: 'image/png',
|
|
savedPath: '/appdata/photo.png'
|
|
};
|
|
const diskBackedVideo = {
|
|
available: false,
|
|
mime: 'video/mp4',
|
|
savedPath: '/appdata/clip.mp4'
|
|
};
|
|
|
|
describe('attachment hydration visibility rules', () => {
|
|
it('hydrates a disk-backed image only when the message is visible', () => {
|
|
expect(shouldHydrateInlineImageForVisibility(diskBackedImage, true)).toBe(true);
|
|
expect(shouldHydrateInlineImageForVisibility(diskBackedImage, false)).toBe(false);
|
|
});
|
|
|
|
it('never hydrates an image that is already displayable', () => {
|
|
const displayable = {
|
|
...diskBackedImage,
|
|
available: true,
|
|
objectUrl: 'blob:http://localhost/abc'
|
|
};
|
|
|
|
expect(shouldHydrateInlineImageForVisibility(displayable, true)).toBe(false);
|
|
});
|
|
|
|
it('hydrates disk-backed playable media only when the message is visible', () => {
|
|
expect(shouldHydratePlayableMediaForVisibility(diskBackedVideo, true)).toBe(true);
|
|
expect(shouldHydratePlayableMediaForVisibility(diskBackedVideo, false)).toBe(false);
|
|
});
|
|
|
|
it('never hydrates media that already has an object URL', () => {
|
|
const hydrated = {
|
|
...diskBackedVideo,
|
|
objectUrl: 'blob:http://localhost/def'
|
|
};
|
|
|
|
expect(shouldHydratePlayableMediaForVisibility(hydrated, true)).toBe(false);
|
|
});
|
|
});
|