Fix beta preset selection and improve test plan builder UI

This commit is contained in:
2026-09-17 21:51:25 -04:00
parent a50eae9d21
commit 4237371360
4 changed files with 256 additions and 60 deletions
+12
View File
@@ -6,6 +6,18 @@ const signal = (event: TestSignal['event'], extra: Partial<TestSignal> = {}): Te
const planWith = (...kinds: Parameters<typeof requirement>[0][]): BetaPlan => ({ ...defaultPlan(), requirements: kinds.map((k, i) => requirement(k, `r${i}`)) });
describe('beta requirement evaluation', () => {
it('copies a reactive preset without cloning proxies or mutating the saved requirements', () => {
const source = defaultPlan();
const proxied = new Proxy(source, { get(target, key, receiver) {
return key === 'requirements' ? new Proxy(target.requirements, {}) : Reflect.get(target, key, receiver);
} });
const selected = parseBetaPlan(proxied);
expect(selected).toEqual(source);
selected.requirements[0].target = 15;
selected.requirements.push(requirement('round', 'round'));
expect(source.requirements).toHaveLength(1);
expect(source.requirements[0].target).toBe(1);
});
it('validates plans without accepting unknown kinds, duplicate IDs, fractional counts or unsafe numbers', () => {
expect(parseBetaPlan(defaultPlan())).toEqual(defaultPlan());
expect(() => parseBetaPlan({ ...defaultPlan(), requirements: [] })).toThrow();