← Files Biological Sequence & Alignment ViewerARCHIVED FILE
src/sequence/interaction-state.test.ts
1.18 KB · Sep 30, 2026 · 23:01 UTC
import { describe, expect, it } from "vitest";
import {
createSequenceInteractionState,
sequenceInteractionReducer,
} from "./interaction-state";
describe("sequenceInteractionReducer", () => {
it("clears record-derived selection, focus, feature, and search state atomically", () => {
const populated = {
...createSequenceInteractionState("first"),
activeSearchHitIndex: 3,
focusCoordinate: 8,
selectedFeature: {
end: 9,
id: "cds-1",
qualifiers: {},
start: 1,
strand: "+" as const,
type: "CDS",
},
selection: { end: 9, recordId: "first", start: 1 },
};
expect(
sequenceInteractionReducer(populated, {
recordId: "second",
type: "select-record",
}),
).toEqual(createSequenceInteractionState("second"));
});
it("updates focus and selection together", () => {
expect(
sequenceInteractionReducer(createSequenceInteractionState("record"), {
selection: { end: 5, recordId: "record", start: 3 },
type: "select-range",
}),
).toMatchObject({
focusCoordinate: 3,
selection: { end: 5, recordId: "record", start: 3 },
});
});
});
SHA-256: 63fa278c4f2d31bb04732bd7b52d13d9387fdc2a43f35bbbe168a4a52ebab937