refactor(cli): remove dead demo dep from KtxSetupDeps

The demo entry menu now calls runDemoTour directly, so the injectable
demo property and KtxDemoArgs import are unused. Update test to mock the
new module import.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Luca Martial 2026-05-11 22:03:20 -07:00
parent 76f727511b
commit 6943f1708d
2 changed files with 10 additions and 12 deletions

View file

@ -4,8 +4,13 @@ import { join } from 'node:path';
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
import { contextBuildCommands, writeKtxSetupContextState } from './setup-context.js';
import { runDemoTour } from './setup-demo-tour.js';
import { readKtxSetupStatus, runKtxSetup } from './setup.js';
vi.mock('./setup-demo-tour.js', () => ({
runDemoTour: vi.fn(async () => 0),
}));
function makeIo() {
let stdout = '';
let stderr = '';
@ -691,9 +696,8 @@ describe('setup status', () => {
);
});
it('runs the seeded demo when the first setup intent menu chooses packaged demo data', async () => {
it('runs the demo tour when the first setup intent menu chooses demo', async () => {
const testIo = makeIo();
const demo = vi.fn(async (_args: { projectDir: string }, _io: unknown) => 0);
await expect(
runKtxSetup(
@ -714,19 +718,15 @@ describe('setup status', () => {
showEntryMenu: true,
},
testIo.io,
{ entryMenuDeps: { prompts: { select: vi.fn(async () => 'demo'), cancel: vi.fn() } }, demo },
{ entryMenuDeps: { prompts: { select: vi.fn(async () => 'demo'), cancel: vi.fn() } } },
),
).resolves.toBe(0);
expect(demo).toHaveBeenCalledWith(
expect.objectContaining({
command: 'seeded',
outputMode: 'viz',
inputMode: 'auto',
}),
expect(runDemoTour).toHaveBeenCalledWith(
{ inputMode: 'auto' },
testIo.io,
expect.objectContaining({}),
);
expect(demo.mock.calls[0]?.[0].projectDir).toMatch(/ktx-demo-/);
});
it('creates a project through run mode when --new is selected', async () => {

View file

@ -3,7 +3,6 @@ import { join, resolve } from 'node:path';
import { cancel, isCancel, select } from '@clack/prompts';
import { loadKtxProject } from '@ktx/context/project';
import type { KtxCliIo } from './cli-runtime.js';
import type { KtxDemoArgs } from './demo.js';
import { formatSetupNextStepLines } from './next-steps.js';
import { isKtxSetupExitError, withSetupInterruptConfirmation } from './setup-interrupt.js';
import {
@ -146,7 +145,6 @@ export interface KtxSetupDeps {
removeAgents?: typeof removeKtxAgentInstall;
readyMenuDeps?: KtxSetupReadyMenuDeps;
entryMenuDeps?: KtxSetupEntryMenuDeps;
demo?: (args: KtxDemoArgs, io: KtxCliIo) => Promise<number>;
}
const SOURCE_DRIVERS = new Set(['dbt', 'metricflow', 'metabase', 'looker', 'lookml', 'notion']);