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