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); }); });