71 lines
2.3 KiB
TypeScript
71 lines
2.3 KiB
TypeScript
import { beforeEach, describe, expect, test } from "bun:test";
|
|
|
|
import { useSessionFindStore } from "../src/react-app/domains/session/surface/find-store";
|
|
|
|
function resetFindStore() {
|
|
useSessionFindStore.setState({
|
|
open: false,
|
|
sessionId: null,
|
|
lastFocusedSessionId: null,
|
|
query: "",
|
|
appliedQuery: "",
|
|
target: null,
|
|
focusNonce: 0,
|
|
});
|
|
}
|
|
|
|
describe("session find store", () => {
|
|
beforeEach(resetFindStore);
|
|
|
|
test("openFind sets owner, query, target, and bumps focus nonce", () => {
|
|
const target = { sessionId: "session-a", messageId: "message-a" };
|
|
useSessionFindStore.getState().openFind({
|
|
sessionId: "session-a",
|
|
query: "zebra",
|
|
target,
|
|
});
|
|
|
|
const state = useSessionFindStore.getState();
|
|
expect(state.open).toBe(true);
|
|
expect(state.sessionId).toBe("session-a");
|
|
expect(state.query).toBe("zebra");
|
|
expect(state.appliedQuery).toBe("zebra");
|
|
expect(state.target).toBe(target);
|
|
expect(state.focusNonce).toBe(1);
|
|
});
|
|
|
|
test("openFind can move ownership to another session", () => {
|
|
useSessionFindStore.getState().openFind({ sessionId: "session-a", query: "zebra" });
|
|
useSessionFindStore.getState().openFind({ sessionId: "session-b" });
|
|
|
|
const state = useSessionFindStore.getState();
|
|
expect(state.open).toBe(true);
|
|
expect(state.sessionId).toBe("session-b");
|
|
expect(state.query).toBe("zebra");
|
|
expect(state.focusNonce).toBe(2);
|
|
});
|
|
|
|
test("closeFind clears find state but keeps the last focused session", () => {
|
|
const store = useSessionFindStore.getState();
|
|
store.setLastFocused("session-a");
|
|
store.openFind({ sessionId: "session-a", query: "zebra", target: { sessionId: "session-a" } });
|
|
useSessionFindStore.getState().closeFind();
|
|
|
|
const state = useSessionFindStore.getState();
|
|
expect(state.open).toBe(false);
|
|
expect(state.sessionId).toBeNull();
|
|
expect(state.query).toBe("");
|
|
expect(state.appliedQuery).toBe("");
|
|
expect(state.target).toBeNull();
|
|
expect(state.lastFocusedSessionId).toBe("session-a");
|
|
});
|
|
|
|
test("setLastFocused no-ops when the session is unchanged", () => {
|
|
useSessionFindStore.getState().setLastFocused("session-a");
|
|
const before = useSessionFindStore.getState();
|
|
before.setLastFocused("session-a");
|
|
|
|
expect(useSessionFindStore.getState()).toBe(before);
|
|
});
|
|
});
|