refactor: deepen query architecture seams with compatibility shims
This commit is contained in:
@@ -1,10 +1,18 @@
|
||||
import { describe, it, expect } from 'vitest';
|
||||
import { COMMAND_DEFINITIONS, COMMAND_DEFINITIONS_BY_FAMILY, FAMILY_MUTATION_COMMANDS } from './command-definition.js';
|
||||
import {
|
||||
COMMAND_DEFINITIONS,
|
||||
COMMAND_DEFINITIONS_BY_FAMILY,
|
||||
FAMILY_MUTATION_COMMANDS,
|
||||
COMMAND_DEFINITION_BY_CANONICAL,
|
||||
COMMAND_MUTATION_SET,
|
||||
COMMAND_RAW_OUTPUT_SET,
|
||||
} from './command-definition.js';
|
||||
import { COMMAND_MANIFEST } from './command-manifest.js';
|
||||
import { NON_FAMILY_COMMAND_MANIFEST } from './command-manifest.non-family.js';
|
||||
|
||||
describe('command-definition module', () => {
|
||||
it('exposes canonical metadata with handler_key normalization contract', () => {
|
||||
expect(COMMAND_DEFINITIONS).toHaveLength(COMMAND_MANIFEST.length);
|
||||
expect(COMMAND_DEFINITIONS).toHaveLength(COMMAND_MANIFEST.length + NON_FAMILY_COMMAND_MANIFEST.length);
|
||||
for (const [index, manifestEntry] of COMMAND_MANIFEST.entries()) {
|
||||
const definition = COMMAND_DEFINITIONS[index];
|
||||
expect(definition.handler_key).toBe(manifestEntry.handlerKey ?? manifestEntry.canonical);
|
||||
@@ -15,11 +23,11 @@ describe('command-definition module', () => {
|
||||
}
|
||||
});
|
||||
|
||||
it('keeps family index canonicals in sync with flat list', () => {
|
||||
it('keeps family index canonicals in sync with family definitions', () => {
|
||||
const indexed = Object.values(COMMAND_DEFINITIONS_BY_FAMILY).flat();
|
||||
expect(indexed).toHaveLength(COMMAND_DEFINITIONS.length);
|
||||
expect(indexed).toHaveLength(COMMAND_MANIFEST.length);
|
||||
expect(indexed.map((entry) => entry.canonical).sort()).toEqual(
|
||||
[...COMMAND_DEFINITIONS.map((entry) => entry.canonical)].sort(),
|
||||
[...COMMAND_MANIFEST.map((entry) => entry.canonical)].sort(),
|
||||
);
|
||||
});
|
||||
|
||||
@@ -28,4 +36,12 @@ describe('command-definition module', () => {
|
||||
expect(FAMILY_MUTATION_COMMANDS).toContain('phase complete');
|
||||
expect(FAMILY_MUTATION_COMMANDS).toContain('roadmap.update-plan-progress');
|
||||
});
|
||||
|
||||
it('exposes indexed views for policy consumers', () => {
|
||||
expect(COMMAND_DEFINITION_BY_CANONICAL['state.load']?.canonical).toBe('state.load');
|
||||
expect(COMMAND_MUTATION_SET.has('state.update')).toBe(true);
|
||||
expect(COMMAND_MUTATION_SET.has('state.json')).toBe(false);
|
||||
expect(COMMAND_RAW_OUTPUT_SET.has('commit')).toBe(true);
|
||||
expect(COMMAND_RAW_OUTPUT_SET.has('verify summary')).toBe(true);
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user