From 563e669de7aa62ec8bf284fb1990e7f35a824db1 Mon Sep 17 00:00:00 2001 From: yannis Date: Mon, 20 Jul 2026 16:03:08 +0300 Subject: [PATCH] fix(*): make sure import job can handle archivePeriodDays missing from config --- .../__tests__/manuscriptCommsUtils.test.ts | 40 +++++++++++++++++++ .../manuscript/manuscriptCommsUtils.js | 8 +++- 2 files changed, 47 insertions(+), 1 deletion(-) create mode 100644 packages/server/controllers/manuscript/__tests__/manuscriptCommsUtils.test.ts diff --git a/packages/server/controllers/manuscript/__tests__/manuscriptCommsUtils.test.ts b/packages/server/controllers/manuscript/__tests__/manuscriptCommsUtils.test.ts new file mode 100644 index 000000000..4283ddabd --- /dev/null +++ b/packages/server/controllers/manuscript/__tests__/manuscriptCommsUtils.test.ts @@ -0,0 +1,40 @@ +import { describe, beforeAll, beforeEach, afterAll, it, expect } from 'vitest' +import { db, config, DbTestUtils, migrationManager } from '@coko/server' + +import Group from '../../../models/group/group.model' +import Config from '../../../models/config/config.model' +import { archiveOldManuscripts } from '../manuscriptCommsUtils' + +describe('archiveOldManuscripts', () => { + beforeAll(async () => { + await config.init() + db.init() + await migrationManager.migrate() + }) + + beforeEach(async () => { + await DbTestUtils.clearDb() + }) + + afterAll(async () => { + await db.destroy() + }) + + it('archivedOldManuscripts does not crash when archivePeriodDays is not set in the config', async () => { + const group = await Group.insert({}) + + await Config.insert({ + active: true, + groupId: group.id, + formData: { + manuscript: { + // archivePeriodDays intentionally omitted, + // reproducing a config created before this field existed + }, + }, + }) + + const res = await archiveOldManuscripts(group.id) + expect(res).not.toBeDefined() + }) +}) diff --git a/packages/server/controllers/manuscript/manuscriptCommsUtils.js b/packages/server/controllers/manuscript/manuscriptCommsUtils.js index d49102c13..21d20ea56 100644 --- a/packages/server/controllers/manuscript/manuscriptCommsUtils.js +++ b/packages/server/controllers/manuscript/manuscriptCommsUtils.js @@ -60,7 +60,13 @@ const archiveOldManuscripts = async groupId => { const activeConfig = await Config.getCached(groupId) const { archivePeriodDays } = activeConfig.formData.manuscript - if (Number.isNaN(archivePeriodDays) || archivePeriodDays < 1) return + if ( + typeof archivePeriodDays !== 'number' || + Number.isNaN(archivePeriodDays) || + archivePeriodDays < 1 + ) { + return + } const cutoffDate = new Date( new Date().valueOf() - archivePeriodDays * 86400000, // subtracting milliseconds of ARCHIVE_PERIOD_DAYS