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'
+ }
+ })
}
]