test: encounter characterization (6 tests)

- Encounter.characterization.test.js: createEncounter, path nesting, togglePlayerDisplay on/off, deleteEncounter + clears activeDisplay
- testHelpers.js: createEncounterViaUI, selectEncounterByName

Locks encounter write paths + payload shapes.
This commit is contained in:
david raistrick
2026-06-28 18:30:57 -04:00
parent 672f042b60
commit 0c1196aee1
2 changed files with 141 additions and 0 deletions
+19
View File
@@ -34,4 +34,23 @@ export async function selectCampaignByName(name) {
await waitFor(() => screen.getByText(/Managing:/i));
}
// Open create-encounter modal, fill name, submit. Assumes campaign selected.
export async function createEncounterViaUI(name = 'Test Encounter') {
fireEvent.click(screen.getByRole('button', { name: /Create Encounter/i }));
await waitFor(() => screen.getByLabelText(/Encounter Name/i));
fireEvent.change(screen.getByLabelText(/Encounter Name/i), { target: { value: name } });
fireEvent.click(screen.getByRole('button', { name: /^Create$/i }));
const { getCalls } = require('./__mocks__/firebase/_mock-db');
await waitFor(() => getCalls().find(c => c.fn === 'setDoc' && c.path.includes('/encounters/')));
const call = getCalls().find(c => c.fn === 'setDoc' && c.path.includes('/encounters/'));
return call.path.split('/').pop();
}
// Click encounter card by name. Assumes campaign selected.
export async function selectEncounterByName(name) {
const card = await waitFor(() => screen.getByText(name));
fireEvent.click(card);
await waitFor(() => screen.getByText(/Managing Encounter:/i));
}
export { MOCK_DB };