feat(planning): implement constraint-first leave planner
This commit is contained in:
1 parent
ba8dbe92d9
commit
7ceaf1a57a
32 files changed
+4842
-880
No files matched your search
@@ -0,0 +1,37 @@
|
||||
import { vi } from 'vitest';
|
||||
import {
|
||||
benchmarkReport,
|
||||
benchmarkScenarios,
|
||||
runLeavePlannerBenchmark,
|
||||
} from './leave-planner-benchmark';
|
||||
|
||||
describe('leave planner benchmark protocol', () => {
|
||||
it('keeps five deterministic scenarios and exercises a later earned consumer', async () => {
|
||||
const scenarios = benchmarkScenarios();
|
||||
expect(scenarios).toHaveLength(5);
|
||||
const chain = scenarios.find((scenario) => scenario.name === 'chained earned entitlements');
|
||||
expect(chain?.request.rules?.map((rule) => rule.id)).toEqual([
|
||||
'wednesday-holidays',
|
||||
'thursday-consumer',
|
||||
]);
|
||||
|
||||
const browserWindow = globalThis.window;
|
||||
vi.stubGlobal('window', undefined);
|
||||
try {
|
||||
const measurements = await runLeavePlannerBenchmark(1);
|
||||
const chained = measurements.find(
|
||||
(measurement) => measurement.scenario === 'chained earned entitlements',
|
||||
);
|
||||
const loaded = measurements.find(
|
||||
(measurement) => measurement.scenario === 'loaded year',
|
||||
);
|
||||
expect(chained?.outcome).toBe('Plan');
|
||||
expect(chained?.placements).toBeGreaterThanOrEqual(3);
|
||||
expect(loaded?.outcome).toBe('Plan');
|
||||
expect(loaded?.deterministic).toBe(true);
|
||||
expect(benchmarkReport(measurements).split('\n')).toHaveLength(6);
|
||||
} finally {
|
||||
vi.stubGlobal('window', browserWindow);
|
||||
}
|
||||
}, 30_000);
|
||||
});
|
||||
Reference in new issue
Block a user