From 835c740a3bf11db938d519682e95c746192473c7 Mon Sep 17 00:00:00 2001 From: Chris Wilkinson Date: Tue, 14 Dec 2021 11:26:09 +0000 Subject: [PATCH] test(backend): add test cases for resolving a known DOI This change adds test cases for resolving a preprint with a DOI that is already known, including a failing case where the DOI used is in a different case (as it should be case insensitive). Refs #388, #430 --- test/backend/resolve.test.ts | 26 +++++++++++++++++++++++++- test/setup.ts | 7 +++++-- 2 files changed, 30 insertions(+), 3 deletions(-) diff --git a/test/backend/resolve.test.ts b/test/backend/resolve.test.ts index 303f8858..89d1f493 100644 --- a/test/backend/resolve.test.ts +++ b/test/backend/resolve.test.ts @@ -2,7 +2,7 @@ import faker from 'faker'; import { StatusCodes } from 'http-status-codes'; import nock from 'nock'; import request from 'supertest'; -import { createServer } from '../setup'; +import { createPreprint, createServer } from '../setup'; import { fakeDoi, isoDateTime, uuid } from '../utils'; describe('resolve', () => { @@ -46,4 +46,28 @@ describe('resolve', () => { uuid: expect.stringMatching(uuid), }); }); + + it('returns already-known preprints', async () => { + const preprint = await createPreprint({ handle: 'doi:10.5555/abcdef' }); + + const response = await request(await createServer()) + .get('/api/v2/resolve') + .query({ identifier: '10.5555/abcdef' }); + + expect(response.status).toBe(StatusCodes.OK); + expect(response.type).toBe('application/json'); + expect(response.body).toMatchObject({ uuid: preprint.uuid }); + }); + + it.skip('treats DOIs as case insensitive', async () => { + const preprint = await createPreprint({ handle: 'doi:10.5555/abcdef' }); + + const response = await request(await createServer()) + .get('/api/v2/resolve') + .query({ identifier: '10.5555/AbCdEf' }); + + expect(response.status).toBe(StatusCodes.OK); + expect(response.type).toBe('application/json'); + expect(response.body).toMatchObject({ uuid: preprint.uuid }); + }); }); diff --git a/test/setup.ts b/test/setup.ts index 74cf353e..b6ea5624 100644 --- a/test/setup.ts +++ b/test/setup.ts @@ -1,4 +1,4 @@ -import { MikroORM } from '@mikro-orm/core'; +import { EntityData, MikroORM } from '@mikro-orm/core'; import { PostgreSqlDriver } from '@mikro-orm/postgresql'; import faker from 'faker'; import { RequestListener } from 'http'; @@ -43,12 +43,15 @@ global.afterAll(async () => { await orm.close(true); }); -export async function createPreprint(): Promise { +export async function createPreprint( + data?: EntityData, +): Promise { const preprints = preprintModelWrapper(orm); const preprint = preprints.create({ handle: `doi:${fakeDoi()}`, title: faker.lorem.sentence(), + ...data, }); await preprints.persistAndFlush(preprint);