forked from Cutlery/immich
37 lines
1.4 KiB
TypeScript
37 lines
1.4 KiB
TypeScript
import { describe, expect, it } from '@jest/globals';
|
|
import { ExifDateTime } from 'exiftool-vendored';
|
|
import { exifTimeZone, exifToDate } from './date-time';
|
|
|
|
describe('converts exif date to JS date', () => {
|
|
it('returns null for invalid inputs', () => {
|
|
expect(exifToDate(undefined)).toBeNull();
|
|
expect(exifToDate('invalid')).toBeNull();
|
|
expect(exifToDate(new Date('invalid'))).toBeNull();
|
|
expect(exifToDate(ExifDateTime.fromEXIF('invalid'))).toBeNull();
|
|
});
|
|
|
|
it('returns a valid date object for valid inputs', () => {
|
|
const date = new Date('2023');
|
|
expect(exifToDate(date)).toBeInstanceOf(Date);
|
|
expect(exifToDate(date)?.toISOString()).toBe('2023-01-01T00:00:00.000Z');
|
|
expect(exifToDate('2023')).toBeInstanceOf(Date);
|
|
|
|
const exifDateTime = ExifDateTime.fromISO('2023-01-01T00:00:00.000Z');
|
|
expect(exifToDate(exifDateTime)).toBeInstanceOf(Date);
|
|
expect(exifToDate(exifDateTime)?.toISOString()).toBe('2023-01-01T00:00:00.000Z');
|
|
});
|
|
});
|
|
|
|
describe('extracts the timezone from a date', () => {
|
|
it('returns null for invalid inputs', () => {
|
|
expect(exifTimeZone(undefined)).toBeNull();
|
|
expect(exifTimeZone('')).toBeNull();
|
|
expect(exifTimeZone(new Date('2023'))).toBeNull();
|
|
expect(exifTimeZone(ExifDateTime.fromEXIF('invalid'))).toBeNull();
|
|
});
|
|
|
|
it('returns the timezone for valid inputs', () => {
|
|
expect(exifTimeZone(ExifDateTime.fromEXIF('2020:12:29 14:24:45.700-05:00'))).toBe('UTC-5');
|
|
});
|
|
});
|