mirror of
https://github.com/djdevin/recflare.git
synced 2026-09-09 07:01:27 -07:00
stubs
This commit is contained in:
@@ -1752,6 +1752,44 @@ const app = new Hono<App>({ strict: false })
|
||||
c.json([])
|
||||
)
|
||||
|
||||
// The room-economy surface the client asks for on entering a room: the room's own
|
||||
// inventory/offers/gift-drop shops and the caller's slice of them. Nothing here is
|
||||
// stored yet, so every one is an empty list — the client reads that as "this room
|
||||
// sells nothing" and renders no shop, where a 404 stalls the room load instead.
|
||||
//
|
||||
// The `/player` and `purchaseCounts` variants are caller-scoped but deliberately
|
||||
// unauthed, matching the `roomConsumable/.../me` stub above: an empty list is the
|
||||
// same answer for every caller, so there's nothing to protect until something
|
||||
// writes here. Gate them when they start returning real data.
|
||||
.get(
|
||||
'/econ/roomInventory/room/:roomId',
|
||||
listRoute('A room’s inventory', 'Empty stub so the client doesn’t 404'),
|
||||
(c) => c.json([])
|
||||
)
|
||||
.get(
|
||||
'/econ/roomInventory/room/:roomId/player',
|
||||
listRoute('The caller’s inventory in a room', 'Empty stub'),
|
||||
(c) => c.json([])
|
||||
)
|
||||
.get(
|
||||
'/econ/roomInventoryItemTags/room/:roomId',
|
||||
listRoute('A room’s inventory item tags', 'Empty stub'),
|
||||
(c) => c.json([])
|
||||
)
|
||||
.get('/econ/roomOffer/room/:roomId', listRoute('A room’s offers', 'Empty stub'), (c) =>
|
||||
c.json([])
|
||||
)
|
||||
.get(
|
||||
'/econ/roomOffer/room/:roomId/purchaseCounts',
|
||||
listRoute('Per-offer purchase counts for a room', 'Empty stub'),
|
||||
(c) => c.json([])
|
||||
)
|
||||
.get(
|
||||
'/econ/roomGiftDropShops/room/:roomId',
|
||||
listRoute('A room’s gift-drop shops', 'Empty stub'),
|
||||
(c) => c.json([])
|
||||
)
|
||||
|
||||
// Unlocked consumables. [Authorize]. The consumables the player has bought (from
|
||||
// `buyItem`, stored in the `consumable` table), grouped by item into the client's
|
||||
// unlocked-consumable DTO. A player who has bought none gets an empty list.
|
||||
|
||||
@@ -635,6 +635,24 @@ describe('econ endpoints', () => {
|
||||
expect(await res.json()).toEqual([])
|
||||
})
|
||||
|
||||
// The room-economy stubs. One table-driven test: they're the same empty-list answer,
|
||||
// and what's worth pinning is that every path the client asks for on room entry is
|
||||
// registered — an unregistered one 404s and stalls the room load.
|
||||
test('the room-economy endpoints all return []', async () => {
|
||||
for (const path of [
|
||||
'/econ/roomInventory/room/92',
|
||||
'/econ/roomInventory/room/92/player',
|
||||
'/econ/roomInventoryItemTags/room/92',
|
||||
'/econ/roomOffer/room/92',
|
||||
'/econ/roomOffer/room/92/purchaseCounts',
|
||||
'/econ/roomGiftDropShops/room/92',
|
||||
]) {
|
||||
const res = await exports.default.fetch(`${ORIGIN}${path}`)
|
||||
expect(res.status, path).toBe(200)
|
||||
expect(await res.json(), path).toEqual([])
|
||||
}
|
||||
})
|
||||
|
||||
test('GET /api/consumables/v2/getUnlocked 401s without a token, returns []', async () => {
|
||||
const anon = await exports.default.fetch(`${ORIGIN}/api/consumables/v2/getUnlocked`)
|
||||
expect(anon.status).toBe(401)
|
||||
@@ -2110,6 +2128,12 @@ describe('econ endpoints', () => {
|
||||
'GET /api/storefronts/v3/giftdropstore/{id}',
|
||||
'GET /api/storefronts/v4/balance/{currencyType}',
|
||||
'GET /econ/customAvatarItems/v1/owned',
|
||||
'GET /econ/roomGiftDropShops/room/{roomId}',
|
||||
'GET /econ/roomInventory/room/{roomId}',
|
||||
'GET /econ/roomInventory/room/{roomId}/player',
|
||||
'GET /econ/roomInventoryItemTags/room/{roomId}',
|
||||
'GET /econ/roomOffer/room/{roomId}',
|
||||
'GET /econ/roomOffer/room/{roomId}/purchaseCounts',
|
||||
'POST /api/CampusCard/v1/UpdateAndGetSubscription',
|
||||
'POST /api/avatar/v2/gifts/consume',
|
||||
'POST /api/avatar/v2/set',
|
||||
|
||||
Reference in New Issue
Block a user