flow-store-versioned-step-keying-e2e.test.mjs
51 lines 2.1 KB
Raw
sha256:cfe8c8cf68336f6d46318bd40610c18d9ff7df231df2fb190af1f5a9c4f4f93b fix(flow-store): versioned step keying for multi-version fl… Human minor ⚠ breaking 11 hours ago
1 /**
2 * Tier 3 — E2E: seed → version bump → pin both versions (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 { seedStarterFlows, getFlow, upsertFlowVersion } from '../lib/flow/flow-store.mjs';
10 import { makeFlowBundle } 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-e2e');
14 const visible = new Set(['personal', 'project', 'org']);
15
16 describe('Flow store — versioned step keying (e2e)', () => {
17 const dataDir = path.join(tmpRoot, 'data');
18 const vaultId = 'default';
19 const starterDir = path.join(tmpRoot, 'starters');
20
21 beforeEach(() => {
22 fs.rmSync(tmpRoot, { recursive: true, force: true });
23 fs.mkdirSync(dataDir, { recursive: true });
24 fs.mkdirSync(starterDir, { recursive: true });
25
26 const v1 = makeFlowBundle({ flowId: 'flow_10c_e2e', version: '1.0.0', steps: 2 });
27 fs.writeFileSync(path.join(starterDir, 'flow_10c_e2e.json'), JSON.stringify(v1, null, 2));
28 seedStarterFlows(dataDir, vaultId, { starterDir });
29
30 const v2 = structuredClone(makeFlowBundle({ flowId: 'flow_10c_e2e', version: '2.0.0', steps: 2 }));
31 v2.steps[1].instruction = 'E2E-only step 2 wording.';
32 upsertFlowVersion(dataDir, vaultId, v2.flow, v2.steps);
33 });
34
35 afterEach(() => {
36 fs.rmSync(tmpRoot, { recursive: true, force: true });
37 });
38
39 it('seeded v1 and upserted v2 are both readable end-to-end', () => {
40 const pinnedV1 = getFlow(dataDir, vaultId, 'flow_10c_e2e', {
41 filterScopes: visible, version: '1.0.0', starterDir,
42 });
43 const pinnedV2 = getFlow(dataDir, vaultId, 'flow_10c_e2e', {
44 filterScopes: visible, version: '2.0.0', starterDir,
45 });
46 assert.equal(pinnedV1.flow.version, '1.0.0');
47 assert.equal(pinnedV2.flow.version, '2.0.0');
48 assert.notEqual(pinnedV1.steps[1].instruction, pinnedV2.steps[1].instruction);
49 assert.equal(pinnedV2.steps[1].instruction, 'E2E-only step 2 wording.');
50 });
51 });
File History 1 commit
sha256:cfe8c8cf68336f6d46318bd40610c18d9ff7df231df2fb190af1f5a9c4f4f93b fix(flow-store): versioned step keying for multi-version fl… Human minor 11 hours ago