From 448331cdf30a4a2d9810417df9a57f1cc188d230 Mon Sep 17 00:00:00 2001 From: "Michael J. Roberts" <84131395+michealroberts@users.noreply.github.com> Date: Tue, 1 Aug 2023 09:45:02 +0100 Subject: [PATCH] feat: Added client.dome.shutdown() route handler. feat: Added client.dome.shutdown() route handler. Includes associated test suite for module export definition and expected output from API route. --- src/routes/dome.ts | 17 +++++++++++++++++ tests/domeRoutes.spec.ts | 15 +++++++++++++++ tests/mocks/dome.ts | 23 +++++++++++++++++++++++ 3 files changed, 55 insertions(+) diff --git a/src/routes/dome.ts b/src/routes/dome.ts index aed3aa1..805abc0 100644 --- a/src/routes/dome.ts +++ b/src/routes/dome.ts @@ -73,6 +73,23 @@ export const dome = (base: URL, init?: RequestInit, headers?: () => Promise(url, init, headers) } }, + { + name: 'shutdown', + action: < + T = { + connected: boolean + slewing: boolean + slaved: boolean + parked: boolean + home: boolean + shutter: string + } + >() => { + const url = new URL('dome/shutdown', base) + + return dispatchRequest(url, { ...init, method: 'PUT' }, headers) + } + }, { name: 'connect', action: < diff --git a/tests/domeRoutes.spec.ts b/tests/domeRoutes.spec.ts index 8ce0d64..d5faaf0 100644 --- a/tests/domeRoutes.spec.ts +++ b/tests/domeRoutes.spec.ts @@ -112,5 +112,20 @@ suite('@observerly/hyper Fiber API Dome Client', () => { if (!isDataResult(uncouple)) return expect(uncouple).toStrictEqual({ coupled: false }) }) + + it('should be able to shutdown the dome', async () => { + const client = setupClient(getURL('/api/v1/')) + const shutdown = await client.dome.shutdown() + expect(isDataResult(shutdown)).toBe(true) + if (!isDataResult(shutdown)) return + expect(shutdown).toStrictEqual({ + connected: false, + slewing: false, + slaved: false, + parked: true, + home: true, + shutter: 'Closed' + }) + }) }) }) diff --git a/tests/mocks/dome.ts b/tests/mocks/dome.ts index e5b19a4..865d556 100644 --- a/tests/mocks/dome.ts +++ b/tests/mocks/dome.ts @@ -144,5 +144,28 @@ export const domeHandlers: Handler[] = [ coupled: body.couple } }) + }, + { + method: 'PUT', + url: '/api/v1/dome/shutdown', + handler: eventHandler(async event => { + const method = getMethod(event) + + if (method !== 'PUT') { + return new Response('Method Not Allowed', { + status: 405, + statusText: 'Method Not Allowed' + }) + } + + return { + connected: false, + slewing: false, + slaved: false, + parked: true, + home: true, + shutter: 'Closed' + } + }) } ]