flow-store-versioned-step-keying-stress.test.mjs
50 lines 1.8 KB
Raw
sha256:cfe8c8cf68336f6d46318bd40610c18d9ff7df231df2fb190af1f5a9c4f4f93b fix(flow-store): versioned step keying for multi-version fl… Human minor ⚠ breaking 4 hours ago
1 /**
2 * Tier 4 — STRESS: many version rows with shared step_ids (7A-10c).
3 */
4 import { describe, it, beforeEach, afterEach } from 'node:test';
5 import assert from 'node:assert/strict';
6 import fs from 'node:fs';
7 import path from 'node:path';
8 import { fileURLToPath } from 'node:url';
9 import { upsertFlowVersion, getFlow } from '../lib/flow/flow-store.mjs';
10 import { makeFlowBundle, emptyStarterDir } from './fixtures/flow/authoring-helpers.mjs';
11
12 const __dirname = path.dirname(fileURLToPath(import.meta.url));
13 const tmpRoot = path.join(__dirname, 'fixtures', 'tmp-flow-versioned-step-keying-stress');
14 const visible = new Set(['personal', 'project', 'org']);
15
16 describe('Flow store — versioned step keying (stress)', () => {
17 const dataDir = path.join(tmpRoot, 'data');
18 const vaultId = 'default';
19 let starterDir;
20
21 beforeEach(() => {
22 fs.rmSync(tmpRoot, { recursive: true, force: true });
23 fs.mkdirSync(dataDir, { recursive: true });
24 starterDir = emptyStarterDir(dataDir);
25 });
26
27 afterEach(() => {
28 fs.rmSync(tmpRoot, { recursive: true, force: true });
29 });
30
31 it('50 semver bumps each retain distinct step instruction text', () => {
32 const flowId = 'flow_10c_stress';
33 const instructions = [];
34 for (let minor = 0; minor < 50; minor += 1) {
35 const version = `1.${minor}.0`;
36 const bundle = makeFlowBundle({ flowId, version, steps: 3 });
37 bundle.steps[0].instruction = `Instruction for ${version}`;
38 instructions.push(bundle.steps[0].instruction);
39 upsertFlowVersion(dataDir, vaultId, bundle.flow, bundle.steps);
40 }
41
42 for (let minor = 0; minor < 50; minor += 1) {
43 const version = `1.${minor}.0`;
44 const got = getFlow(dataDir, vaultId, flowId, {
45 filterScopes: visible, version, starterDir,
46 });
47 assert.equal(got.steps[0].instruction, instructions[minor]);
48 }
49 });
50 });
File History 1 commit
sha256:cfe8c8cf68336f6d46318bd40610c18d9ff7df231df2fb190af1f5a9c4f4f93b fix(flow-store): versioned step keying for multi-version fl… Human minor 4 hours ago