From ba01a6bcdfc918d53c2494482bb44a70f6cb4aa2 Mon Sep 17 00:00:00 2001 From: Johan Haals Date: Tue, 17 Aug 2021 14:59:07 +0200 Subject: [PATCH] Parse date correctly, drop math.Floor Signed-off-by: Johan Haals --- .../DefaultProcessingDatabase.test.ts | 19 ++++++++++++++++--- plugins/catalog-backend/src/next/refresh.ts | 2 +- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/plugins/catalog-backend/src/next/database/DefaultProcessingDatabase.test.ts b/plugins/catalog-backend/src/next/database/DefaultProcessingDatabase.test.ts index 09647b980c..df9c08ad6c 100644 --- a/plugins/catalog-backend/src/next/database/DefaultProcessingDatabase.test.ts +++ b/plugins/catalog-backend/src/next/database/DefaultProcessingDatabase.test.ts @@ -66,6 +66,21 @@ describe('Default Processing Database', () => { await db('refresh_state').insert(ref); }; + const parseDate = (date: string | Date): DateTime => { + const parsedDate = + typeof date === 'string' + ? DateTime.fromSQL(date, { zone: 'UTC' }) + : DateTime.fromJSDate(date); + + if (!parsedDate.isValid) { + throw new Error( + `Failed to parse date, reason: ${parsedDate.invalidReason}, explanation: ${parsedDate.invalidExplanation}`, + ); + } + + return parsedDate; + }; + describe('addUprocessedEntities', () => { function mockEntity(name: string, type: string): Entity { return { @@ -995,9 +1010,7 @@ describe('Default Processing Database', () => { const result = await knex('refresh_state') .where('entity_ref', 'location:default/new-root') .select(); - const nextUpdate = DateTime.fromSQL(result[0].next_update_at, { - zone: 'utc', - }); + const nextUpdate = parseDate(result[0].next_update_at); expect(nextUpdate.diff(now, 'seconds').seconds).toBeGreaterThanOrEqual( 100, ); diff --git a/plugins/catalog-backend/src/next/refresh.ts b/plugins/catalog-backend/src/next/refresh.ts index caec7e9548..aae992f391 100644 --- a/plugins/catalog-backend/src/next/refresh.ts +++ b/plugins/catalog-backend/src/next/refresh.ts @@ -29,6 +29,6 @@ export function createRandomRefreshInterval(options: { }): RefreshIntervalFunction { const { minSeconds, maxSeconds } = options; return () => { - return Math.floor(Math.random() * (maxSeconds - minSeconds) + minSeconds); + return Math.random() * (maxSeconds - minSeconds) + minSeconds; }; }