Files
community-rule/tests/integration/ContentProcessing.integration.test.js
T
adilallo 500d2d0965
CI Pipeline / test (20) (pull_request) Failing after 8m5s
CI Pipeline / test (18) (pull_request) Failing after 8m36s
CI Pipeline / e2e (chromium) (pull_request) Successful in 2m32s
CI Pipeline / e2e (webkit) (pull_request) Successful in 3m40s
CI Pipeline / e2e (firefox) (pull_request) Successful in 5m43s
CI Pipeline / performance (pull_request) Failing after 3m18s
CI Pipeline / visual-regression (pull_request) Failing after 3m20s
CI Pipeline / lint (pull_request) Successful in 1m7s
CI Pipeline / storybook (pull_request) Successful in 1m32s
CI Pipeline / build (pull_request) Successful in 1m22s
Run lint and prettier
2025-09-12 14:33:46 -06:00

99 lines
2.7 KiB
JavaScript

import { describe, it, expect, vi, beforeEach } from "vitest";
import fs from "fs";
import path from "path";
// Mock fs and path modules
vi.mock("fs");
vi.mock("path");
// Import the content processing functions
import { getBlogPostFiles, markdownToHtml } from "../../lib/content";
describe("Content Processing Integration", () => {
beforeEach(() => {
vi.clearAllMocks();
});
describe("File System Integration", () => {
it("should read blog post files from content directory", () => {
const mockFiles = ["post1.md", "post2.md", "image.png", "post3.md"];
fs.readdirSync.mockReturnValue(mockFiles);
const result = getBlogPostFiles();
expect(fs.readdirSync).toHaveBeenCalledWith(
path.join(process.cwd(), "content/blog"),
);
expect(result).toEqual(["post1.md", "post2.md", "post3.md"]);
});
it("should handle directory read errors gracefully", () => {
fs.readdirSync.mockImplementation(() => {
throw new Error("Directory not found");
});
const result = getBlogPostFiles();
expect(result).toEqual([]);
});
it("should filter out non-markdown files", () => {
const mockFiles = [
"post1.md",
"post2.mdx",
"image.png",
"post3.md",
"readme.txt",
];
fs.readdirSync.mockReturnValue(mockFiles);
const result = getBlogPostFiles();
expect(result).toEqual(["post1.md", "post2.mdx", "post3.md"]);
});
});
describe("Markdown to HTML Integration", () => {
it("should convert markdown to HTML with proper formatting", () => {
const markdown = `# Main Title
## Subtitle
This is a paragraph with **bold** and *italic* text.
- List item 1
- List item 2
[Link text](https://example.com)`;
const result = markdownToHtml(markdown);
expect(result).toContain("<h1>Main Title</h1>");
expect(result).toContain("<h2>Subtitle</h2>");
expect(result).toContain("<strong>bold</strong>");
expect(result).toContain("<em>italic</em>");
expect(result).toContain('<a href="https://example.com">Link text</a>');
});
it("should handle empty markdown gracefully", () => {
const result = markdownToHtml("");
expect(result).toBe("");
});
it("should handle markdown with special characters", () => {
const markdown = `# Title with Special Characters: & < > " '
Content with **bold** and *italic* text.`;
const result = markdownToHtml(markdown);
expect(result).toContain(
"<h1>Title with Special Characters: & < > \" '</h1>",
);
expect(result).toContain("<strong>bold</strong>");
expect(result).toContain("<em>italic</em>");
});
});
});