From 268034c3b686a5a144ccacf65a4356f58e085342 Mon Sep 17 00:00:00 2001 From: poros Date: Tue, 21 Jan 2025 18:15:16 +0100 Subject: [PATCH] add tests for objectid utils --- .../date-time-converter.models.test.ts | 15 ------ src/utils/objectId.test.ts | 47 +++++++++++++++++++ 2 files changed, 47 insertions(+), 15 deletions(-) create mode 100644 src/utils/objectId.test.ts diff --git a/src/tools/date-time-converter/date-time-converter.models.test.ts b/src/tools/date-time-converter/date-time-converter.models.test.ts index c2c7bee9..e12d8b97 100644 --- a/src/tools/date-time-converter/date-time-converter.models.test.ts +++ b/src/tools/date-time-converter/date-time-converter.models.test.ts @@ -5,7 +5,6 @@ import { isExcelFormat, isISO8601DateTimeString, isISO9075DateString, - isMongoObjectId, isRFC3339DateString, isRFC7231DateString, isTimestamp, @@ -129,20 +128,6 @@ describe('date-time-converter models', () => { }); }); - describe('isMongoObjectId', () => { - test('should return true for valid Mongo ObjectIds', () => { - expect(isMongoObjectId('507f1f77bcf86cd799439011')).toBe(true); - expect(isMongoObjectId('507f1f77bcf86cd799439012')).toBe(true); - }); - - test('should return false for invalid Mongo ObjectIds', () => { - expect(isMongoObjectId('507f1f77bcf86cd79943901')).toBe(false); - expect(isMongoObjectId('507f1f77bcf86cd79943901z')).toBe(false); - expect(isMongoObjectId('foo')).toBe(false); - expect(isMongoObjectId('')).toBe(false); - }); - }); - describe('isExcelFormat', () => { test('an Excel format string is a floating number that can be negative', () => { expect(isExcelFormat('0')).toBe(true); diff --git a/src/utils/objectId.test.ts b/src/utils/objectId.test.ts new file mode 100644 index 00000000..0861f122 --- /dev/null +++ b/src/utils/objectId.test.ts @@ -0,0 +1,47 @@ +import { describe, expect, test } from 'vitest'; +import { isValidObjectId, objectIdFromDate, objectIdToDate } from '@/utils/objectId'; + +describe('ObejctId', () => { + describe('isValidObjectId', () => { + test('should return true for valid Mongo ObjectIds', () => { + expect(isValidObjectId('507f1f77bcf86cd799439011')).toBe(true); + expect(isValidObjectId('507f1f77bcf86cd799439012')).toBe(true); + }); + + test('should return false for invalid Mongo ObjectIds', () => { + expect(isValidObjectId('507f1f77bcf86cd79943901')).toBe(false); + expect(isValidObjectId('507f1f77bcf86cd79943901z')).toBe(false); + expect(isValidObjectId('foo')).toBe(false); + expect(isValidObjectId('')).toBe(false); + }); + }); + + describe('objectIdToDate', () => { + test('should return Date from Mongo ObjectIds', () => { + expect(objectIdToDate('507f1f77bcf86cd799439011')).toStrictEqual(new Date('2012-10-17T23:13:27.000+0200')); + expect(objectIdToDate('678fd477d9bc2e855fdedfb0')).toStrictEqual(new Date('2025-01-21T18:08:07.000+0100')); + }); + }); + + describe('objectIdFromDate', () => { + test('should return Mongo ObjectId from Date', () => { + let objectId = objectIdFromDate(new Date('2012-10-17T23:13:27.000+0200').getTime()); + expect(isValidObjectId(objectId)).toBe(true); + expect(objectId).toMatch(/^507f1f77/); + + objectId = objectIdFromDate(new Date('2025-01-21T18:08:07.000+0100').getTime()); + expect(isValidObjectId(objectId)).toBe(true); + expect(objectId).toMatch(/^678fd477/); + }); + + test('should return Mongo ObjectId from Date, but only generate the date part', () => { + let objectId = objectIdFromDate(new Date('2012-10-17T23:13:27.000+0200').getTime(), true); + expect(isValidObjectId(objectId)).toBe(true); + expect(objectId).toMatch(/^507f1f770000000000000000$/); + + objectId = objectIdFromDate(new Date('2025-01-21T18:08:07.000+0100').getTime(), true); + expect(isValidObjectId(objectId)).toBe(true); + expect(objectId).toMatch(/^678fd4770000000000000000$/); + }); + }); +});