diff --git a/src/routes/exposure.ts b/src/routes/exposure.ts index b1aa230..32f0b82 100644 --- a/src/routes/exposure.ts +++ b/src/routes/exposure.ts @@ -55,6 +55,14 @@ export const exposure = ( data ) } + }, + { + name: 'stop', + action: () => { + const url = new URL('exposure/stop', base) + + return dispatchRequest(url, { ...init, method: 'DELETE' }, headers) + } } ] as const diff --git a/tests/exposure.spec.ts b/tests/exposure.spec.ts index 272ae62..2eee2d2 100644 --- a/tests/exposure.spec.ts +++ b/tests/exposure.spec.ts @@ -47,6 +47,14 @@ suite('@observerly/hyper NOX API Observing Exposure Client', () => { light: true }) }) + + it('should be able to stop an exposure', async () => { + const client = setupClient(getURL('/api/v1/')) + const status = await client.exposure.stop() + expect(isDataResult(status)).toBe(true) + if (!isDataResult(status)) return + expect(status).toStrictEqual({}) + }) }) }) diff --git a/tests/mocks/exposure.ts b/tests/mocks/exposure.ts index f5496f7..18bf39f 100644 --- a/tests/mocks/exposure.ts +++ b/tests/mocks/exposure.ts @@ -58,6 +58,22 @@ export const exposureHandlers: Handler[] = [ light: body.light } }) + }, + { + method: ['DELETE'], + url: '/api/v1/exposure/stop', + handler: eventHandler(async event => { + const method = getMethod(event) + + if (method !== 'DELETE') { + return new Response('Method Not Allowed', { + status: 405, + statusText: 'Method Not Allowed' + }) + } + + return {} + }) } ]