# test.govlab/quality/core/formatters/catalog.formatter.test.ts

> 14 lines of code and 0 definitions.

Tree: Codebase Testing
Language: typescript
Canonical: https://banes-lab.com/anatomy/testing#file-testing-test-govlab-quality-core-formatters-catalog-formatter-test-ts
Source text: https://banes-lab.com/source/testing/test.govlab/quality/core/formatters/catalog.formatter.test.ts.txt

Listed in [test.govlab/quality/core/formatters](https://banes-lab.com/api/source/testing/test.govlab/quality/core/formatters.md), after [test.govlab/quality/core/formatters/canon.reference.formatter.test.ts](https://banes-lab.com/source/testing/test.govlab/quality/core/formatters/canon.reference.formatter.test.ts.md) and before [test.govlab/quality/core/formatters/config.formatter.test.ts](https://banes-lab.com/source/testing/test.govlab/quality/core/formatters/config.formatter.test.ts.md).

## Contained in

- [test.govlab/quality/core/formatters](https://banes-lab.com/anatomy/testing/folder-testing-test-govlab-quality-core-formatters.md)

## Source

```typescript
import { expect, test } from "vitest";
import { coverageMarkdown } from "@govlab/quality/core/formatters/catalog.formatter.ts";

const RULES = 12;

test("coverageMarkdown lists each tool and each ecosystem with its rule count", () => {
    const markdown = coverageMarkdown({
        byEcosystem: { python: 4, typescript: 8 },
        ecosystems: 2,
        tools: [{ ecosystem: "typescript", rules: 8, tool: "eslint", version: "9.0.0" }],
        totalRules: RULES,
    });
    expect(markdown).toContain("**12 rules** across **1 tools** and **2 ecosystems**.");
    expect(markdown).toContain("| eslint | typescript | 8 | 9.0.0 |");
    expect(markdown.indexOf("| typescript | 8 |")).toBeLessThan(markdown.indexOf("| python | 4 |"));
});
```
