import { AssetEntity, AssetType } from 'src/entities/asset.entity'; import { ExifEntity } from 'src/entities/exif.entity'; import { StackEntity } from 'src/entities/stack.entity'; import { authStub } from 'test/fixtures/auth.stub'; import { fileStub } from 'test/fixtures/file.stub'; import { libraryStub } from 'test/fixtures/library.stub'; import { userStub } from 'test/fixtures/user.stub'; export const stackStub = (stackId: string, assets: AssetEntity[]): StackEntity => { return { id: stackId, assets: assets, owner: assets[0].owner, ownerId: assets[0].ownerId, primaryAsset: assets[0], primaryAssetId: assets[0].id, }; }; export const assetStub = { noResizePath: Object.freeze({ id: 'asset-id', originalFileName: 'IMG_123.jpg', deviceAssetId: 'device-asset-id', fileModifiedAt: new Date('2023-02-23T05:06:29.716Z'), fileCreatedAt: new Date('2023-02-23T05:06:29.716Z'), owner: userStub.user1, ownerId: 'user-id', deviceId: 'device-id', originalPath: 'upload/library/IMG_123.jpg', previewPath: null, checksum: Buffer.from('file hash', 'utf8'), type: AssetType.IMAGE, thumbnailPath: '/uploads/user-id/webp/path.ext', thumbhash: Buffer.from('blablabla', 'base64'), encodedVideoPath: null, createdAt: new Date('2023-02-23T05:06:29.716Z'), updatedAt: new Date('2023-02-23T05:06:29.716Z'), localDateTime: new Date('2023-02-23T05:06:29.716Z'), isFavorite: true, isArchived: false, duration: null, isVisible: true, livePhotoVideo: null, livePhotoVideoId: null, tags: [], sharedLinks: [], faces: [], sidecarPath: null, deletedAt: null, isOffline: false, isExternal: false, duplicateId: null, }), noWebpPath: Object.freeze({ id: 'asset-id', deviceAssetId: 'device-asset-id', fileModifiedAt: new Date('2023-02-23T05:06:29.716Z'), fileCreatedAt: new Date('2023-02-23T05:06:29.716Z'), owner: userStub.user1, ownerId: 'user-id', deviceId: 'device-id', originalPath: 'upload/library/IMG_456.jpg', previewPath: '/uploads/user-id/thumbs/path.ext', checksum: Buffer.from('file hash', 'utf8'), type: AssetType.IMAGE, thumbnailPath: null, thumbhash: Buffer.from('blablabla', 'base64'), encodedVideoPath: null, createdAt: new Date('2023-02-23T05:06:29.716Z'), updatedAt: new Date('2023-02-23T05:06:29.716Z'), localDateTime: new Date('2023-02-23T05:06:29.716Z'), isFavorite: true, isArchived: false, duration: null, isVisible: true, livePhotoVideo: null, livePhotoVideoId: null, tags: [], sharedLinks: [], originalFileName: 'IMG_456.jpg', faces: [], sidecarPath: null, isOffline: false, isExternal: false, exifInfo: { fileSizeInByte: 123_000, } as ExifEntity, deletedAt: null, duplicateId: null, }), noThumbhash: Object.freeze({ id: 'asset-id', deviceAssetId: 'device-asset-id', fileModifiedAt: new Date('2023-02-23T05:06:29.716Z'), fileCreatedAt: new Date('2023-02-23T05:06:29.716Z'), owner: userStub.user1, ownerId: 'user-id', deviceId: 'device-id', originalPath: '/original/path.ext', previewPath: '/uploads/user-id/thumbs/path.ext', checksum: Buffer.from('file hash', 'utf8'), type: AssetType.IMAGE, thumbnailPath: '/uploads/user-id/webp/path.ext', thumbhash: null, encodedVideoPath: null, createdAt: new Date('2023-02-23T05:06:29.716Z'), updatedAt: new Date('2023-02-23T05:06:29.716Z'), localDateTime: new Date('2023-02-23T05:06:29.716Z'), isFavorite: true, isArchived: false, isOffline: false, duration: null, isVisible: true, isExternal: false, livePhotoVideo: null, livePhotoVideoId: null, tags: [], sharedLinks: [], originalFileName: 'asset-id.ext', faces: [], sidecarPath: null, deletedAt: null, duplicateId: null, }), primaryImage: Object.freeze({ id: 'primary-asset-id', deviceAssetId: 'device-asset-id', fileModifiedAt: new Date('2023-02-23T05:06:29.716Z'), fileCreatedAt: new Date('2023-02-23T05:06:29.716Z'), owner: userStub.admin, ownerId: 'admin-id', deviceId: 'device-id', originalPath: '/original/path.jpg', previewPath: '/uploads/admin-id/thumbs/path.jpg', checksum: Buffer.from('file hash', 'utf8'), type: AssetType.IMAGE, thumbnailPath: '/uploads/admin-id/webp/path.ext', thumbhash: Buffer.from('blablabla', 'base64'), encodedVideoPath: null, createdAt: new Date('2023-02-23T05:06:29.716Z'), updatedAt: new Date('2023-02-23T05:06:29.716Z'), localDateTime: new Date('2023-02-23T05:06:29.716Z'), isFavorite: true, isArchived: false, duration: null, isVisible: true, isExternal: false, livePhotoVideo: null, livePhotoVideoId: null, isOffline: false, tags: [], sharedLinks: [], originalFileName: 'asset-id.jpg', faces: [], deletedAt: null, sidecarPath: null, exifInfo: { fileSizeInByte: 5000, exifImageHeight: 1000, exifImageWidth: 1000, } as ExifEntity, stack: stackStub('stack-1', [ { id: 'primary-asset-id' } as AssetEntity, { id: 'stack-child-asset-1' } as AssetEntity, { id: 'stack-child-asset-2' } as AssetEntity, ]), duplicateId: null, }), image: Object.freeze({ id: 'asset-id', deviceAssetId: 'device-asset-id', fileModifiedAt: new Date('2023-02-23T05:06:29.716Z'), fileCreatedAt: new Date('2023-02-23T05:06:29.716Z'), owner: userStub.user1, ownerId: 'user-id', deviceId: 'device-id', originalPath: '/original/path.jpg', previewPath: '/uploads/user-id/thumbs/path.jpg', checksum: Buffer.from('file hash', 'utf8'), type: AssetType.IMAGE, thumbnailPath: '/uploads/user-id/webp/path.ext', thumbhash: Buffer.from('blablabla', 'base64'), encodedVideoPath: null, createdAt: new Date('2023-02-23T05:06:29.716Z'), updatedAt: new Date('2023-02-23T05:06:29.716Z'), localDateTime: new Date('2023-02-23T05:06:29.716Z'), isFavorite: true, isArchived: false, duration: null, isVisible: true, isExternal: false, livePhotoVideo: null, livePhotoVideoId: null, isOffline: false, tags: [], sharedLinks: [], originalFileName: 'asset-id.jpg', faces: [], deletedAt: null, sidecarPath: null, exifInfo: { fileSizeInByte: 5000, exifImageHeight: 3840, exifImageWidth: 2160, } as ExifEntity, duplicateId: null, }), trashed: Object.freeze({ id: 'asset-id', deviceAssetId: 'device-asset-id', fileModifiedAt: new Date('2023-02-23T05:06:29.716Z'), fileCreatedAt: new Date('2023-02-23T05:06:29.716Z'), owner: userStub.user1, ownerId: 'user-id', deviceId: 'device-id', originalPath: '/original/path.jpg', previewPath: '/uploads/user-id/thumbs/path.jpg', checksum: Buffer.from('file hash', 'utf8'), type: AssetType.IMAGE, thumbnailPath: '/uploads/user-id/webp/path.ext', thumbhash: Buffer.from('blablabla', 'base64'), encodedVideoPath: null, createdAt: new Date('2023-02-23T05:06:29.716Z'), updatedAt: new Date('2023-02-23T05:06:29.716Z'), deletedAt: new Date('2023-02-24T05:06:29.716Z'), localDateTime: new Date('2023-02-23T05:06:29.716Z'), isFavorite: false, isArchived: false, duration: null, isVisible: true, isExternal: false, livePhotoVideo: null, livePhotoVideoId: null, isOffline: false, tags: [], sharedLinks: [], originalFileName: 'asset-id.jpg', faces: [], sidecarPath: null, exifInfo: { fileSizeInByte: 5000, exifImageHeight: 3840, exifImageWidth: 2160, } as ExifEntity, duplicateId: null, }), archived: Object.freeze({ id: 'asset-id', deviceAssetId: 'device-asset-id', fileModifiedAt: new Date('2023-02-23T05:06:29.716Z'), fileCreatedAt: new Date('2023-02-23T05:06:29.716Z'), owner: userStub.user1, ownerId: 'user-id', deviceId: 'device-id', originalPath: '/original/path.jpg', previewPath: '/uploads/user-id/thumbs/path.jpg', checksum: Buffer.from('file hash', 'utf8'), type: AssetType.IMAGE, thumbnailPath: '/uploads/user-id/webp/path.ext', thumbhash: Buffer.from('blablabla', 'base64'), encodedVideoPath: null, createdAt: new Date('2023-02-23T05:06:29.716Z'), updatedAt: new Date('2023-02-23T05:06:29.716Z'), localDateTime: new Date('2023-02-23T05:06:29.716Z'), isFavorite: true, isArchived: true, duration: null, isVisible: true, isExternal: false, livePhotoVideo: null, livePhotoVideoId: null, isOffline: false, tags: [], sharedLinks: [], originalFileName: 'asset-id.jpg', faces: [], deletedAt: null, sidecarPath: null, exifInfo: { fileSizeInByte: 5000, exifImageHeight: 3840, exifImageWidth: 2160, } as ExifEntity, duplicateId: null, }), external: Object.freeze({ id: 'asset-id', deviceAssetId: 'device-asset-id', fileModifiedAt: new Date('2023-02-23T05:06:29.716Z'), fileCreatedAt: new Date('2023-02-23T05:06:29.716Z'), owner: userStub.user1, ownerId: 'user-id', deviceId: 'device-id', originalPath: '/data/user1/photo.jpg', previewPath: '/uploads/user-id/thumbs/path.jpg', checksum: Buffer.from('path hash', 'utf8'), type: AssetType.IMAGE, thumbnailPath: '/uploads/user-id/webp/path.ext', thumbhash: Buffer.from('blablabla', 'base64'), encodedVideoPath: null, createdAt: new Date('2023-02-23T05:06:29.716Z'), updatedAt: new Date('2023-02-23T05:06:29.716Z'), localDateTime: new Date('2023-02-23T05:06:29.716Z'), isFavorite: true, isArchived: false, isExternal: true, duration: null, isVisible: true, livePhotoVideo: null, livePhotoVideoId: null, isOffline: false, libraryId: 'library-id', library: libraryStub.externalLibrary1, tags: [], sharedLinks: [], originalFileName: 'asset-id.jpg', faces: [], deletedAt: null, sidecarPath: null, exifInfo: { fileSizeInByte: 5000, } as ExifEntity, duplicateId: null, }), offline: Object.freeze({ id: 'asset-id', deviceAssetId: 'device-asset-id', fileModifiedAt: new Date('2023-02-23T05:06:29.716Z'), fileCreatedAt: new Date('2023-02-23T05:06:29.716Z'), owner: userStub.user1, ownerId: 'user-id', deviceId: 'device-id', originalPath: '/original/path.jpg', previewPath: '/uploads/user-id/thumbs/path.jpg', checksum: Buffer.from('file hash', 'utf8'), type: AssetType.IMAGE, thumbnailPath: '/uploads/user-id/webp/path.ext', thumbhash: Buffer.from('blablabla', 'base64'), encodedVideoPath: null, createdAt: new Date('2023-02-23T05:06:29.716Z'), updatedAt: new Date('2023-02-23T05:06:29.716Z'), localDateTime: new Date('2023-02-23T05:06:29.716Z'), isFavorite: true, isArchived: false, isExternal: false, duration: null, isVisible: true, livePhotoVideo: null, livePhotoVideoId: null, isOffline: true, tags: [], sharedLinks: [], originalFileName: 'asset-id.jpg', faces: [], sidecarPath: null, exifInfo: { fileSizeInByte: 5000, } as ExifEntity, deletedAt: null, duplicateId: null, }), externalOffline: Object.freeze({ id: 'asset-id', deviceAssetId: 'device-asset-id', fileModifiedAt: new Date('2023-02-23T05:06:29.716Z'), fileCreatedAt: new Date('2023-02-23T05:06:29.716Z'), owner: userStub.user1, ownerId: 'user-id', deviceId: 'device-id', originalPath: '/data/user1/photo.jpg', previewPath: '/uploads/user-id/thumbs/path.jpg', checksum: Buffer.from('path hash', 'utf8'), type: AssetType.IMAGE, thumbnailPath: '/uploads/user-id/webp/path.ext', thumbhash: Buffer.from('blablabla', 'base64'), encodedVideoPath: null, createdAt: new Date('2023-02-23T05:06:29.716Z'), updatedAt: new Date('2023-02-23T05:06:29.716Z'), localDateTime: new Date('2023-02-23T05:06:29.716Z'), isFavorite: true, isArchived: false, isExternal: true, duration: null, isVisible: true, livePhotoVideo: null, livePhotoVideoId: null, isOffline: true, libraryId: 'library-id', library: libraryStub.externalLibrary1, tags: [], sharedLinks: [], originalFileName: 'asset-id.jpg', faces: [], sidecarPath: null, exifInfo: { fileSizeInByte: 5000, } as ExifEntity, deletedAt: null, duplicateId: null, }), image1: Object.freeze({ id: 'asset-id-1', deviceAssetId: 'device-asset-id', fileModifiedAt: new Date('2023-02-23T05:06:29.716Z'), fileCreatedAt: new Date('2023-02-23T05:06:29.716Z'), owner: userStub.user1, ownerId: 'user-id', deviceId: 'device-id', originalPath: '/original/path.ext', previewPath: '/uploads/user-id/thumbs/path.ext', checksum: Buffer.from('file hash', 'utf8'), type: AssetType.IMAGE, thumbnailPath: '/uploads/user-id/webp/path.ext', thumbhash: Buffer.from('blablabla', 'base64'), encodedVideoPath: null, createdAt: new Date('2023-02-23T05:06:29.716Z'), updatedAt: new Date('2023-02-23T05:06:29.716Z'), deletedAt: null, localDateTime: new Date('2023-02-23T05:06:29.716Z'), isFavorite: true, isArchived: false, duration: null, isVisible: true, livePhotoVideo: null, livePhotoVideoId: null, isExternal: false, isOffline: false, tags: [], sharedLinks: [], originalFileName: 'asset-id.ext', faces: [], sidecarPath: null, exifInfo: { fileSizeInByte: 5000, } as ExifEntity, duplicateId: null, }), imageFrom2015: Object.freeze({ id: 'asset-id-1', deviceAssetId: 'device-asset-id', fileModifiedAt: new Date('2015-02-23T05:06:29.716Z'), fileCreatedAt: new Date('2015-02-23T05:06:29.716Z'), owner: userStub.user1, ownerId: 'user-id', deviceId: 'device-id', originalPath: '/original/path.ext', previewPath: '/uploads/user-id/thumbs/path.ext', checksum: Buffer.from('file hash', 'utf8'), type: AssetType.IMAGE, thumbnailPath: '/uploads/user-id/webp/path.ext', thumbhash: Buffer.from('blablabla', 'base64'), encodedVideoPath: null, createdAt: new Date('2015-02-23T05:06:29.716Z'), updatedAt: new Date('2015-02-23T05:06:29.716Z'), localDateTime: new Date('2015-02-23T05:06:29.716Z'), isFavorite: true, isArchived: false, isExternal: false, isOffline: false, duration: null, isVisible: true, livePhotoVideo: null, livePhotoVideoId: null, tags: [], sharedLinks: [], originalFileName: 'asset-id.ext', faces: [], sidecarPath: null, exifInfo: { fileSizeInByte: 5000, } as ExifEntity, deletedAt: null, duplicateId: null, }), video: Object.freeze({ id: 'asset-id', originalFileName: 'asset-id.ext', deviceAssetId: 'device-asset-id', fileModifiedAt: new Date('2023-02-23T05:06:29.716Z'), fileCreatedAt: new Date('2023-02-23T05:06:29.716Z'), owner: userStub.user1, ownerId: 'user-id', deviceId: 'device-id', originalPath: '/original/path.ext', previewPath: '/uploads/user-id/thumbs/path.ext', checksum: Buffer.from('file hash', 'utf8'), type: AssetType.VIDEO, thumbnailPath: null, thumbhash: null, encodedVideoPath: null, createdAt: new Date('2023-02-23T05:06:29.716Z'), updatedAt: new Date('2023-02-23T05:06:29.716Z'), localDateTime: new Date('2023-02-23T05:06:29.716Z'), isFavorite: true, isArchived: false, isExternal: false, isOffline: false, duration: null, isVisible: true, livePhotoVideo: null, livePhotoVideoId: null, tags: [], sharedLinks: [], faces: [], sidecarPath: null, exifInfo: { fileSizeInByte: 100_000, exifImageHeight: 2160, exifImageWidth: 3840, } as ExifEntity, deletedAt: null, duplicateId: null, }), livePhotoMotionAsset: Object.freeze({ id: fileStub.livePhotoMotion.uuid, originalPath: fileStub.livePhotoMotion.originalPath, ownerId: authStub.user1.user.id, type: AssetType.VIDEO, isVisible: false, fileModifiedAt: new Date('2022-06-19T23:41:36.910Z'), fileCreatedAt: new Date('2022-06-19T23:41:36.910Z'), exifInfo: { fileSizeInByte: 100_000, timeZone: `America/New_York`, }, } as AssetEntity), liveMotionWithThumb: Object.freeze({ id: fileStub.livePhotoMotion.uuid, originalPath: fileStub.livePhotoMotion.originalPath, ownerId: authStub.user1.user.id, type: AssetType.VIDEO, isVisible: false, fileModifiedAt: new Date('2022-06-19T23:41:36.910Z'), fileCreatedAt: new Date('2022-06-19T23:41:36.910Z'), previewPath: '/uploads/user-id/thumbs/path.ext', thumbnailPath: '/uploads/user-id/webp/path.ext', exifInfo: { fileSizeInByte: 100_000, timeZone: `America/New_York`, }, } as AssetEntity), livePhotoStillAsset: Object.freeze({ id: 'live-photo-still-asset', originalPath: fileStub.livePhotoStill.originalPath, ownerId: authStub.user1.user.id, type: AssetType.IMAGE, livePhotoVideoId: 'live-photo-motion-asset', isVisible: true, fileModifiedAt: new Date('2022-06-19T23:41:36.910Z'), fileCreatedAt: new Date('2022-06-19T23:41:36.910Z'), exifInfo: { fileSizeInByte: 25_000, timeZone: `America/New_York`, }, } as AssetEntity), livePhotoStillAssetWithTheSameLivePhotoMotionAsset: Object.freeze({ id: 'live-photo-still-asset-1', originalPath: fileStub.livePhotoStill.originalPath, ownerId: authStub.user1.user.id, type: AssetType.IMAGE, livePhotoVideoId: 'live-photo-motion-asset', isVisible: true, fileModifiedAt: new Date('2022-06-19T23:41:36.910Z'), fileCreatedAt: new Date('2022-06-19T23:41:36.910Z'), exifInfo: { fileSizeInByte: 25_000, timeZone: `America/New_York`, }, } as AssetEntity), livePhotoWithOriginalFileName: Object.freeze({ id: 'live-photo-still-asset', originalPath: fileStub.livePhotoStill.originalPath, originalFileName: fileStub.livePhotoStill.originalName, ownerId: authStub.user1.user.id, type: AssetType.IMAGE, livePhotoVideoId: 'live-photo-motion-asset', isVisible: true, fileModifiedAt: new Date('2022-06-19T23:41:36.910Z'), fileCreatedAt: new Date('2022-06-19T23:41:36.910Z'), exifInfo: { fileSizeInByte: 25_000, timeZone: `America/New_York`, }, } as AssetEntity), withLocation: Object.freeze({ id: 'asset-with-favorite-id', deviceAssetId: 'device-asset-id', fileModifiedAt: new Date('2023-02-22T05:06:29.716Z'), fileCreatedAt: new Date('2023-02-22T05:06:29.716Z'), owner: userStub.user1, ownerId: 'user-id', deviceId: 'device-id', checksum: Buffer.from('file hash', 'utf8'), originalPath: '/original/path.ext', previewPath: '/uploads/user-id/thumbs/path.ext', sidecarPath: null, type: AssetType.IMAGE, thumbnailPath: null, thumbhash: null, encodedVideoPath: null, createdAt: new Date('2023-02-22T05:06:29.716Z'), updatedAt: new Date('2023-02-22T05:06:29.716Z'), localDateTime: new Date('2023-02-22T05:06:29.716Z'), isFavorite: false, isArchived: false, isExternal: false, isOffline: false, duration: null, isVisible: true, livePhotoVideo: null, livePhotoVideoId: null, tags: [], sharedLinks: [], originalFileName: 'asset-id.ext', faces: [], exifInfo: { latitude: 100, longitude: 100, fileSizeInByte: 23_456, city: 'test-city', state: 'test-state', country: 'test-country', } as ExifEntity, deletedAt: null, duplicateId: null, }), sidecar: Object.freeze({ id: 'asset-id', deviceAssetId: 'device-asset-id', fileModifiedAt: new Date('2023-02-23T05:06:29.716Z'), fileCreatedAt: new Date('2023-02-23T05:06:29.716Z'), owner: userStub.user1, ownerId: 'user-id', deviceId: 'device-id', originalPath: '/original/path.ext', previewPath: '/uploads/user-id/thumbs/path.ext', thumbhash: null, checksum: Buffer.from('file hash', 'utf8'), type: AssetType.IMAGE, thumbnailPath: null, encodedVideoPath: null, createdAt: new Date('2023-02-23T05:06:29.716Z'), updatedAt: new Date('2023-02-23T05:06:29.716Z'), localDateTime: new Date('2023-02-23T05:06:29.716Z'), isFavorite: true, isArchived: false, isExternal: false, isOffline: false, duration: null, isVisible: true, livePhotoVideo: null, livePhotoVideoId: null, tags: [], sharedLinks: [], originalFileName: 'asset-id.ext', faces: [], sidecarPath: '/original/path.ext.xmp', deletedAt: null, duplicateId: null, }), sidecarWithoutExt: Object.freeze({ id: 'asset-id', deviceAssetId: 'device-asset-id', fileModifiedAt: new Date('2023-02-23T05:06:29.716Z'), fileCreatedAt: new Date('2023-02-23T05:06:29.716Z'), owner: userStub.user1, ownerId: 'user-id', deviceId: 'device-id', originalPath: '/original/path.ext', previewPath: '/uploads/user-id/thumbs/path.ext', thumbhash: null, checksum: Buffer.from('file hash', 'utf8'), type: AssetType.IMAGE, thumbnailPath: null, encodedVideoPath: null, createdAt: new Date('2023-02-23T05:06:29.716Z'), updatedAt: new Date('2023-02-23T05:06:29.716Z'), localDateTime: new Date('2023-02-23T05:06:29.716Z'), isFavorite: true, isArchived: false, isExternal: false, isOffline: false, duration: null, isVisible: true, livePhotoVideo: null, livePhotoVideoId: null, tags: [], sharedLinks: [], originalFileName: 'asset-id.ext', faces: [], sidecarPath: '/original/path.xmp', deletedAt: null, duplicateId: null, }), readOnly: Object.freeze({ id: 'read-only-asset', deviceAssetId: 'device-asset-id', fileModifiedAt: new Date('2023-02-23T05:06:29.716Z'), fileCreatedAt: new Date('2023-02-23T05:06:29.716Z'), owner: userStub.user1, ownerId: 'user-id', deviceId: 'device-id', originalPath: '/original/path.ext', previewPath: '/uploads/user-id/thumbs/path.ext', thumbhash: null, checksum: Buffer.from('file hash', 'utf8'), type: AssetType.IMAGE, thumbnailPath: null, encodedVideoPath: null, createdAt: new Date('2023-02-23T05:06:29.716Z'), updatedAt: new Date('2023-02-23T05:06:29.716Z'), localDateTime: new Date('2023-02-23T05:06:29.716Z'), isFavorite: true, isArchived: false, isExternal: false, isOffline: false, duration: null, isVisible: true, livePhotoVideo: null, livePhotoVideoId: null, tags: [], sharedLinks: [], originalFileName: 'asset-id.ext', faces: [], sidecarPath: '/original/path.ext.xmp', deletedAt: null, duplicateId: null, }), hasEncodedVideo: Object.freeze({ id: 'asset-id', originalFileName: 'asset-id.ext', deviceAssetId: 'device-asset-id', fileModifiedAt: new Date('2023-02-23T05:06:29.716Z'), fileCreatedAt: new Date('2023-02-23T05:06:29.716Z'), owner: userStub.user1, ownerId: 'user-id', deviceId: 'device-id', originalPath: '/original/path.ext', previewPath: '/uploads/user-id/thumbs/path.ext', checksum: Buffer.from('file hash', 'utf8'), type: AssetType.VIDEO, thumbnailPath: null, thumbhash: null, encodedVideoPath: '/encoded/video/path.mp4', createdAt: new Date('2023-02-23T05:06:29.716Z'), updatedAt: new Date('2023-02-23T05:06:29.716Z'), localDateTime: new Date('2023-02-23T05:06:29.716Z'), isFavorite: true, isArchived: false, isExternal: false, isOffline: false, duration: null, isVisible: true, livePhotoVideo: null, livePhotoVideoId: null, tags: [], sharedLinks: [], faces: [], sidecarPath: null, exifInfo: { fileSizeInByte: 100_000, } as ExifEntity, deletedAt: null, duplicateId: null, }), missingFileExtension: Object.freeze({ id: 'asset-id', deviceAssetId: 'device-asset-id', fileModifiedAt: new Date('2023-02-23T05:06:29.716Z'), fileCreatedAt: new Date('2023-02-23T05:06:29.716Z'), owner: userStub.user1, ownerId: 'user-id', deviceId: 'device-id', originalPath: '/data/user1/photo.jpg', previewPath: '/uploads/user-id/thumbs/path.jpg', checksum: Buffer.from('file hash', 'utf8'), type: AssetType.IMAGE, thumbnailPath: '/uploads/user-id/webp/path.ext', thumbhash: Buffer.from('blablabla', 'base64'), encodedVideoPath: null, createdAt: new Date('2023-02-23T05:06:29.716Z'), updatedAt: new Date('2023-02-23T05:06:29.716Z'), localDateTime: new Date('2023-02-23T05:06:29.716Z'), isFavorite: true, isArchived: false, isExternal: true, duration: null, isVisible: true, livePhotoVideo: null, livePhotoVideoId: null, isOffline: false, libraryId: 'library-id', library: libraryStub.externalLibrary1, tags: [], sharedLinks: [], originalFileName: 'photo', faces: [], deletedAt: null, sidecarPath: null, exifInfo: { fileSizeInByte: 5000, } as ExifEntity, duplicateId: null, }), hasFileExtension: Object.freeze({ id: 'asset-id', deviceAssetId: 'device-asset-id', fileModifiedAt: new Date('2023-02-23T05:06:29.716Z'), fileCreatedAt: new Date('2023-02-23T05:06:29.716Z'), owner: userStub.user1, ownerId: 'user-id', deviceId: 'device-id', originalPath: '/data/user1/photo.jpg', previewPath: '/uploads/user-id/thumbs/path.jpg', checksum: Buffer.from('file hash', 'utf8'), type: AssetType.IMAGE, thumbnailPath: '/uploads/user-id/webp/path.ext', thumbhash: Buffer.from('blablabla', 'base64'), encodedVideoPath: null, createdAt: new Date('2023-02-23T05:06:29.716Z'), updatedAt: new Date('2023-02-23T05:06:29.716Z'), localDateTime: new Date('2023-02-23T05:06:29.716Z'), isFavorite: true, isArchived: false, isExternal: true, duration: null, isVisible: true, livePhotoVideo: null, livePhotoVideoId: null, isOffline: false, libraryId: 'library-id', library: libraryStub.externalLibrary1, tags: [], sharedLinks: [], originalFileName: 'photo.jpg', faces: [], deletedAt: null, sidecarPath: null, exifInfo: { fileSizeInByte: 5000, } as ExifEntity, duplicateId: null, }), imageDng: Object.freeze({ id: 'asset-id', deviceAssetId: 'device-asset-id', fileModifiedAt: new Date('2023-02-23T05:06:29.716Z'), fileCreatedAt: new Date('2023-02-23T05:06:29.716Z'), owner: userStub.user1, ownerId: 'user-id', deviceId: 'device-id', originalPath: '/original/path.dng', previewPath: '/uploads/user-id/thumbs/path.jpg', checksum: Buffer.from('file hash', 'utf8'), type: AssetType.IMAGE, thumbnailPath: '/uploads/user-id/webp/path.ext', thumbhash: Buffer.from('blablabla', 'base64'), encodedVideoPath: null, createdAt: new Date('2023-02-23T05:06:29.716Z'), updatedAt: new Date('2023-02-23T05:06:29.716Z'), localDateTime: new Date('2023-02-23T05:06:29.716Z'), isFavorite: true, isArchived: false, duration: null, isVisible: true, isExternal: false, livePhotoVideo: null, livePhotoVideoId: null, isOffline: false, tags: [], sharedLinks: [], originalFileName: 'asset-id.jpg', faces: [], deletedAt: null, sidecarPath: null, exifInfo: { fileSizeInByte: 5000, profileDescription: 'Adobe RGB', bitsPerSample: 14, } as ExifEntity, duplicateId: null, }), hasEmbedding: Object.freeze({ id: 'asset-id-embedding', deviceAssetId: 'device-asset-id', fileModifiedAt: new Date('2023-02-23T05:06:29.716Z'), fileCreatedAt: new Date('2023-02-23T05:06:29.716Z'), owner: userStub.user1, ownerId: 'user-id', deviceId: 'device-id', originalPath: '/original/path.jpg', previewPath: '/uploads/user-id/thumbs/path.jpg', checksum: Buffer.from('file hash', 'utf8'), type: AssetType.IMAGE, thumbnailPath: '/uploads/user-id/webp/path.ext', thumbhash: Buffer.from('blablabla', 'base64'), encodedVideoPath: null, createdAt: new Date('2023-02-23T05:06:29.716Z'), updatedAt: new Date('2023-02-23T05:06:29.716Z'), localDateTime: new Date('2023-02-23T05:06:29.716Z'), isFavorite: true, isArchived: false, duration: null, isVisible: true, isExternal: false, livePhotoVideo: null, livePhotoVideoId: null, isOffline: false, tags: [], sharedLinks: [], originalFileName: 'asset-id.jpg', faces: [], deletedAt: null, sidecarPath: null, exifInfo: { fileSizeInByte: 5000, } as ExifEntity, duplicateId: null, smartSearch: { assetId: 'asset-id', embedding: Array.from({ length: 512 }, Math.random), }, }), hasDupe: Object.freeze({ id: 'asset-id-dupe', deviceAssetId: 'device-asset-id', fileModifiedAt: new Date('2023-02-23T05:06:29.716Z'), fileCreatedAt: new Date('2023-02-23T05:06:29.716Z'), owner: userStub.user1, ownerId: 'user-id', deviceId: 'device-id', originalPath: '/original/path.jpg', previewPath: '/uploads/user-id/thumbs/path.jpg', checksum: Buffer.from('file hash', 'utf8'), type: AssetType.IMAGE, thumbnailPath: '/uploads/user-id/webp/path.ext', thumbhash: Buffer.from('blablabla', 'base64'), encodedVideoPath: null, createdAt: new Date('2023-02-23T05:06:29.716Z'), updatedAt: new Date('2023-02-23T05:06:29.716Z'), localDateTime: new Date('2023-02-23T05:06:29.716Z'), isFavorite: true, isArchived: false, duration: null, isVisible: true, isExternal: false, livePhotoVideo: null, livePhotoVideoId: null, isOffline: false, tags: [], sharedLinks: [], originalFileName: 'asset-id.jpg', faces: [], deletedAt: null, sidecarPath: null, exifInfo: { fileSizeInByte: 5000, } as ExifEntity, duplicateId: 'duplicate-id', smartSearch: { assetId: 'asset-id', embedding: Array.from({ length: 512 }, Math.random), }, }), };