| 1 | import { describe, expect, it } from "vite-plus/test"; |
| 2 | |
| 3 | import { |
| 4 | alternateComposerDispatchAction, |
| 5 | resolveComposerDispatchMode, |
| 6 | } from "./composerDispatch.ts"; |
| 7 | |
| 8 | describe("resolveComposerDispatchMode", () => { |
| 9 | it("starts an ordinary turn while idle", () => { |
| 10 | expect(resolveComposerDispatchMode({ running: false, alternateModifier: false })).toBe("auto"); |
| 11 | }); |
| 12 | |
| 13 | it("steers by default and reserves Mod+Enter for queueing while running", () => { |
| 14 | expect(resolveComposerDispatchMode({ running: true, alternateModifier: false })).toBe("steer"); |
| 15 | expect(resolveComposerDispatchMode({ running: true, alternateModifier: true })).toBe("queue"); |
| 16 | }); |
| 17 | |
| 18 | it("queues as the alternate action when restarting is the default", () => { |
| 19 | expect( |
| 20 | resolveComposerDispatchMode({ |
| 21 | running: true, |
| 22 | alternateModifier: false, |
| 23 | activeTurnDefault: "restart", |
| 24 | }), |
| 25 | ).toBe("restart"); |
| 26 | expect( |
| 27 | resolveComposerDispatchMode({ |
| 28 | running: true, |
| 29 | alternateModifier: true, |
| 30 | activeTurnDefault: "restart", |
| 31 | }), |
| 32 | ).toBe("queue"); |
| 33 | }); |
| 34 | it.each([ |
| 35 | ["queue", "steer"], |
| 36 | ["steer", "queue"], |
| 37 | ] as const)( |
| 38 | "uses configured %s behavior only during a running turn", |
| 39 | (activeTurnDefault, alternateAction) => { |
| 40 | expect( |
| 41 | resolveComposerDispatchMode({ |
| 42 | running: true, |
| 43 | alternateModifier: false, |
| 44 | activeTurnDefault, |
| 45 | }), |
| 46 | ).toBe(activeTurnDefault); |
| 47 | expect( |
| 48 | resolveComposerDispatchMode({ |
| 49 | running: true, |
| 50 | alternateModifier: true, |
| 51 | activeTurnDefault, |
| 52 | }), |
| 53 | ).toBe(alternateAction); |
| 54 | expect( |
| 55 | resolveComposerDispatchMode({ |
| 56 | running: false, |
| 57 | alternateModifier: false, |
| 58 | activeTurnDefault, |
| 59 | }), |
| 60 | ).toBe("auto"); |
| 61 | expect( |
| 62 | resolveComposerDispatchMode({ running: false, alternateModifier: true, activeTurnDefault }), |
| 63 | ).toBe("auto"); |
| 64 | }, |
| 65 | ); |
| 66 | |
| 67 | it("names the alternate action so the affordance can be labelled", () => { |
| 68 | expect(alternateComposerDispatchAction("queue")).toBe("steer"); |
| 69 | expect(alternateComposerDispatchAction("steer")).toBe("queue"); |
| 70 | expect(alternateComposerDispatchAction()).toBe("queue"); |
| 71 | }); |
| 72 | }); |