diff --git a/nuxt.config.ts b/nuxt.config.ts index a21fc498f..846e1b8f6 100644 --- a/nuxt.config.ts +++ b/nuxt.config.ts @@ -163,6 +163,11 @@ export default defineNuxtConfig({ base: './.cache/atproto-oauth/session', }, }, + typescript: { + tsConfig: { + include: ['../test/unit/server/**/*.ts'], + }, + }, }, fonts: { diff --git a/test/unit/search-operators.spec.ts b/test/nuxt/composables/useStructuredFilters.spec.ts similarity index 98% rename from test/unit/search-operators.spec.ts rename to test/nuxt/composables/useStructuredFilters.spec.ts index 327470eef..aa37df432 100644 --- a/test/unit/search-operators.spec.ts +++ b/test/nuxt/composables/useStructuredFilters.spec.ts @@ -1,8 +1,5 @@ import { describe, expect, it } from 'vitest' -import { - hasSearchOperators, - parseSearchOperators, -} from '../../app/composables/useStructuredFilters' +import { hasSearchOperators, parseSearchOperators } from '~/composables/useStructuredFilters' describe('parseSearchOperators', () => { describe('basic operator parsing', () => { diff --git a/test/unit/server/utils/dependency-analysis.spec.ts b/test/unit/server/utils/dependency-analysis.spec.ts index a70abad4e..703a245c3 100644 --- a/test/unit/server/utils/dependency-analysis.spec.ts +++ b/test/unit/server/utils/dependency-analysis.spec.ts @@ -2,7 +2,8 @@ import { describe, expect, it, vi, beforeEach } from 'vitest' // Mock Nitro globals before importing the module vi.stubGlobal('defineCachedFunction', (fn: Function) => fn) -vi.stubGlobal('$fetch', vi.fn()) +const $fetchMock = vi.fn() +vi.stubGlobal('$fetch', $fetchMock) // Import module under test const { analyzeDependencyTree } = await import('../../../../server/utils/dependency-analysis') @@ -26,7 +27,7 @@ function mockOsvApi( batchResults: Array<{ vulns?: Array<{ id: string; modified: string }> }>, detailResults: Map> }> = new Map(), ) { - vi.mocked($fetch).mockImplementation(async (url: string, options?: { body?: unknown }) => { + $fetchMock.mockImplementation(async (url: string, options?: { body?: unknown }) => { if (url === 'https://api.osv.dev/v1/querybatch') { return { results: batchResults } } @@ -102,7 +103,7 @@ describe('dependency-analysis', () => { vi.mocked(resolveDependencyTree).mockResolvedValue(mockResolved) // Batch query fails entirely - vi.mocked($fetch).mockRejectedValue(new Error('OSV API error')) + $fetchMock.mockRejectedValue(new Error('OSV API error')) const result = await analyzeDependencyTree('test-pkg', '1.0.0') diff --git a/test/unit/server/utils/readme.spec.ts b/test/unit/server/utils/readme.spec.ts index 76e97875a..4a15bf940 100644 --- a/test/unit/server/utils/readme.spec.ts +++ b/test/unit/server/utils/readme.spec.ts @@ -47,7 +47,7 @@ describe('Playground Link Extraction', () => { const result = await renderReadmeHtml(markdown, 'test-pkg') expect(result.playgroundLinks).toHaveLength(1) - expect(result.playgroundLinks[0].provider).toBe('codesandbox') + expect(result.playgroundLinks[0]!.provider).toBe('codesandbox') }) }) @@ -56,21 +56,21 @@ describe('Playground Link Extraction', () => { const markdown = `[Pen](https://codepen.io/user/pen/abc123)` const result = await renderReadmeHtml(markdown, 'test-pkg') - expect(result.playgroundLinks[0].provider).toBe('codepen') + expect(result.playgroundLinks[0]!.provider).toBe('codepen') }) it('extracts Replit links', async () => { const markdown = `[Repl](https://replit.com/@user/project)` const result = await renderReadmeHtml(markdown, 'test-pkg') - expect(result.playgroundLinks[0].provider).toBe('replit') + expect(result.playgroundLinks[0]!.provider).toBe('replit') }) it('extracts Gitpod links', async () => { const markdown = `[Open in Gitpod](https://gitpod.io/#https://github.com/user/repo)` const result = await renderReadmeHtml(markdown, 'test-pkg') - expect(result.playgroundLinks[0].provider).toBe('gitpod') + expect(result.playgroundLinks[0]!.provider).toBe('gitpod') }) }) @@ -83,8 +83,8 @@ describe('Playground Link Extraction', () => { const result = await renderReadmeHtml(markdown, 'test-pkg') expect(result.playgroundLinks).toHaveLength(2) - expect(result.playgroundLinks[0].provider).toBe('stackblitz') - expect(result.playgroundLinks[1].provider).toBe('codesandbox') + expect(result.playgroundLinks[0]!.provider).toBe('stackblitz') + expect(result.playgroundLinks[1]!.provider).toBe('codesandbox') }) it('deduplicates same URL', async () => { @@ -127,7 +127,7 @@ describe('Playground Link Extraction', () => { const result = await renderReadmeHtml(markdown, 'test-pkg') expect(result.playgroundLinks).toHaveLength(1) - expect(result.playgroundLinks[0].provider).toBe('stackblitz') + expect(result.playgroundLinks[0]!.provider).toBe('stackblitz') }) }) })