import { describe, expect, test } from 'vitest' import { runRule } from '../../lib/init-test' import { frontmatterVideoTranscripts } from '../../lib/linting-rules/frontmatter-video-transcripts' const GOOD_FIXTURE_LANDING = 'src/content-linter/tests/fixtures/actions/index.md' const BAD_FIXTURE_LANDING = 'src/content-linter/tests/fixtures/early-access/index.md' const GOOD_FIXTURE_TRANSCRIPT = 'src/content-linter/tests/fixtures/video-transcripts/transcript-codespaces-your-instant-dev-box-in-the-cloud.md' const BAD_FIXTURE_TRANSCRIPT = 'src/content-linter/tests/fixtures/video-transcripts/transcript-using-projects-for-feature-planning.md' const INDEX_VIDEO_TRANSCRIPT = 'src/content-linter/tests/fixtures/video-transcripts/index.md' const fmOptions = { markdownlintOptions: { frontMatter: null } } describe(frontmatterVideoTranscripts.names.join(' - '), () => { test('a video transcript with correct title and fm passes', async () => { const result = await runRule(frontmatterVideoTranscripts, { files: [GOOD_FIXTURE_TRANSCRIPT], ...fmOptions, }) const errors = result[GOOD_FIXTURE_TRANSCRIPT] expect(errors.length).toBe(0) }) test('a video transcript with bad title and fm fails', async () => { const result = await runRule(frontmatterVideoTranscripts, { files: [BAD_FIXTURE_TRANSCRIPT], ...fmOptions, }) const errors = result[BAD_FIXTURE_TRANSCRIPT] expect(errors.length).toBe(2) }) test('a product landing page with correct video transcript fm passes', async () => { const result = await runRule(frontmatterVideoTranscripts, { files: [GOOD_FIXTURE_LANDING], ...fmOptions, }) const errors = result[GOOD_FIXTURE_LANDING] expect(errors.length).toBe(0) }) test('a product landing page without required video transcript fm fails', async () => { const result = await runRule(frontmatterVideoTranscripts, { files: [BAD_FIXTURE_LANDING], ...fmOptions, }) const errors = result[BAD_FIXTURE_LANDING] expect(errors.length).toBe(1) }) test('a video transcript landing page is not checked for title and product_video properties', async () => { const result = await runRule(frontmatterVideoTranscripts, { files: [INDEX_VIDEO_TRANSCRIPT], ...fmOptions, }) const errors = result[INDEX_VIDEO_TRANSCRIPT] expect(errors.length).toBe(0) }) })