CLose story 1.2
This commit is contained in:
@@ -0,0 +1,78 @@
|
||||
// @ts-nocheck
|
||||
/**
|
||||
* tests/helpers/foundryAdapterMock.js
|
||||
*
|
||||
* Canonical FoundryAdapter mock factory.
|
||||
* ALL tests in this project MUST use this factory — no ad-hoc stubs.
|
||||
*
|
||||
* Usage:
|
||||
* import { createFoundryAdapterMock } from '../helpers/foundryAdapterMock.js'
|
||||
* const adapter = createFoundryAdapterMock()
|
||||
* const adapter = createFoundryAdapterMock({ settings: { get: () => 'custom' } })
|
||||
*
|
||||
* Surface contract mirrors FoundryAdapter (src/foundry/FoundryAdapter.js):
|
||||
* settings, socket, users, scenes, notifications, webrtc, hooks
|
||||
*/
|
||||
|
||||
/**
|
||||
* Creates a mock FoundryAdapter with optional overrides.
|
||||
*
|
||||
* All methods are vi.fn() stubs by default; pass overrides to customise.
|
||||
*
|
||||
* @param {Partial<FoundryAdapterSurface>} [overrides={}]
|
||||
* @returns {FoundryAdapterSurface}
|
||||
*/
|
||||
export function createFoundryAdapterMock(overrides = {}) {
|
||||
const defaults = {
|
||||
settings: {
|
||||
register: () => {},
|
||||
get: () => null,
|
||||
set: () => Promise.resolve(),
|
||||
...overrides.settings,
|
||||
},
|
||||
socket: {
|
||||
emit: () => {},
|
||||
on: () => {},
|
||||
off: () => {},
|
||||
...overrides.socket,
|
||||
},
|
||||
users: {
|
||||
get: () => null,
|
||||
all: () => [],
|
||||
isGM: () => false,
|
||||
current: () => overrides.users?.get?.("test-user") ?? null,
|
||||
...overrides.users,
|
||||
},
|
||||
scenes: {
|
||||
current: () => null,
|
||||
get: () => null,
|
||||
...overrides.scenes,
|
||||
},
|
||||
notifications: {
|
||||
info: () => {},
|
||||
warn: () => {},
|
||||
error: () => {},
|
||||
...overrides.notifications,
|
||||
},
|
||||
/**
|
||||
* WebRTC track-disabling surface, or null when OQ-1 resolved to css-fallback.
|
||||
*
|
||||
* Default is null (CSS fallback path). FoundryVTT v14 spike (Story 1.2) confirmed
|
||||
* that track.enabled = false does not stop inbound RTP bandwidth, so the probe
|
||||
* always returns 'css-fallback' and this.webrtc remains null in production.
|
||||
*
|
||||
* To simulate the track-disable path in tests, override with:
|
||||
* createFoundryAdapterMock({ webrtc: { disableTrack: vi.fn(), enableTrack: vi.fn() } })
|
||||
*/
|
||||
webrtc: overrides.webrtc !== undefined ? overrides.webrtc : null,
|
||||
hooks: {
|
||||
on: () => {},
|
||||
once: () => {},
|
||||
off: () => {},
|
||||
callAll: () => {},
|
||||
...overrides.hooks,
|
||||
},
|
||||
};
|
||||
|
||||
return defaults;
|
||||
}
|
||||
Reference in New Issue
Block a user