import fs from 'node:fs/promises' import path from 'node:path' import { tmpdir } from 'node:os' import { afterEach, expect, test, vi } from 'vitest' import { resolveComponentProjectInstallRoot } from './index' afterEach(() => { vi.unstubAllEnvs() vi.restoreAllMocks() }) test('resolves a video project template root before a parent monorepo root', async () => { const workspaceRoot = await fs.mkdtemp(path.join(tmpdir(), 'component-project-helper-runtime-')) const monorepoRoot = path.join(workspaceRoot, 'repo') const videoProjectRoot = path.join(monorepoRoot, 'project-templates', 'video-project') await fs.mkdir(path.join(monorepoRoot, 'src', 'components'), { recursive: true }) await fs.mkdir(path.join(videoProjectRoot, 'src', 'video', 'chapters'), { recursive: true }) vi.stubEnv('INIT_CWD', path.join(videoProjectRoot, 'src', 'video')) vi.stubEnv('npm_config_local_prefix', '') vi.spyOn(process, 'cwd').mockReturnValue(path.join(videoProjectRoot, 'src', 'video')) expect(resolveComponentProjectInstallRoot()).toBe(videoProjectRoot) })