Fix beta preset selection and improve test plan builder UI
This commit is contained in:
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user