diff --git a/src/routes/dome.ts b/src/routes/dome.ts index bb89d7c..67d6b63 100644 --- a/src/routes/dome.ts +++ b/src/routes/dome.ts @@ -45,5 +45,21 @@ export const dome = (base: URL, init?: RequestInit, headers?: () => Promise(url, init, headers) } + }, + { + name: 'getStatus', + action: < + T = { + connected: boolean + slewing: boolean + slaved: boolean + parked: boolean + home: boolean + shutter: string + } + >() => { + const url = new URL('dome/status', base) + return dispatchRequest(url, init, headers) + } } ] as const diff --git a/tests/domeRoutes.spec.ts b/tests/domeRoutes.spec.ts index d4f712a..58b1e04 100644 --- a/tests/domeRoutes.spec.ts +++ b/tests/domeRoutes.spec.ts @@ -41,5 +41,20 @@ suite('@observerly/hyper Fiber API Dome Client', () => { if (!isDataResult(coordinates)) return expect(coordinates).toStrictEqual({ alt: 34.5619912, az: 56.1234567 }) }) + + it('should be able to determine the status of the dome', async () => { + const client = setupClient(getURL('/api/v1/')) + const status = await client.dome.getStatus() + expect(isDataResult(status)).toBe(true) + if (!isDataResult(status)) return + expect(status).toStrictEqual({ + connected: true, + slewing: true, + slaved: true, + parked: true, + home: true, + shutter: 'open' + }) + }) }) }) diff --git a/tests/mocks/dome.ts b/tests/mocks/dome.ts index b1429d9..a5b915f 100644 --- a/tests/mocks/dome.ts +++ b/tests/mocks/dome.ts @@ -40,5 +40,19 @@ export const domeHandlers: Handler[] = [ az: 56.1234567 } }) + }, + { + method: 'GET', + url: '/api/v1/dome/status', + handler: eventHandler(_event => { + return { + connected: true, + slewing: true, + slaved: true, + parked: true, + home: true, + shutter: 'open' + } + }) } ]