65 lines
2.1 KiB
TypeScript
65 lines
2.1 KiB
TypeScript
import { expect } from "bun:test";
|
|
import { existsSync, readFileSync } from "node:fs";
|
|
import { join } from "node:path";
|
|
import type { ChangeStatus } from "../../src/types.ts";
|
|
import { validateConfig } from "../../src/core/config.ts";
|
|
import type { RuneConfig } from "../../src/types.ts";
|
|
|
|
export function assertFileExists(projectDir: string, relativePath: string): void {
|
|
expect(existsSync(join(projectDir, relativePath))).toBe(true);
|
|
}
|
|
|
|
export function assertNoFile(projectDir: string, relativePath: string): void {
|
|
expect(existsSync(join(projectDir, relativePath))).toBe(false);
|
|
}
|
|
|
|
export function assertDirExists(projectDir: string, relativePath: string): void {
|
|
expect(existsSync(join(projectDir, relativePath))).toBe(true);
|
|
}
|
|
|
|
export function assertFileContains(
|
|
projectDir: string,
|
|
relativePath: string,
|
|
expected: string,
|
|
): void {
|
|
const content = readFileSync(join(projectDir, relativePath), "utf-8");
|
|
expect(content).toContain(expected);
|
|
}
|
|
|
|
export function assertDocCreated(projectDir: string, changeName: string, docName: string): void {
|
|
assertFileExists(projectDir, `.rune/changes/${changeName}/${docName}.md`);
|
|
const content = readFileSync(
|
|
join(projectDir, `.rune/changes/${changeName}/${docName}.md`),
|
|
"utf-8",
|
|
);
|
|
expect(content.length).toBeGreaterThan(0);
|
|
}
|
|
|
|
export function assertDocContains(
|
|
projectDir: string,
|
|
changeName: string,
|
|
docName: string,
|
|
expected: string,
|
|
): void {
|
|
assertFileContains(projectDir, `.rune/changes/${changeName}/${docName}.md`, expected);
|
|
}
|
|
|
|
export function assertAllTasksDone(change: ChangeStatus): void {
|
|
expect(change.taskProgress).not.toBeNull();
|
|
if (change.taskProgress) {
|
|
expect(change.taskProgress.completed).toBe(change.taskProgress.total);
|
|
}
|
|
}
|
|
|
|
export function assertTaskProgress(change: ChangeStatus, completed: number, total: number): void {
|
|
expect(change.taskProgress).toEqual({ completed, total });
|
|
}
|
|
|
|
export function assertConfigValid(config: RuneConfig): void {
|
|
expect(() => validateConfig(config)).not.toThrow();
|
|
}
|
|
|
|
export function assertConfigInvalid(config: RuneConfig): void {
|
|
expect(() => validateConfig(config)).toThrow();
|
|
}
|