# test.govlab/docs/core/formatters/readme.formatter.test.ts

> 24 lines of code and 0 definitions.

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

Listed in [test.govlab/docs/core/formatters](https://banes-lab.com/api/source/testing/test.govlab/docs/core/formatters.md), after [test.govlab/docs/core/formatters/readme.fixture.ts](https://banes-lab.com/source/testing/test.govlab/docs/core/formatters/readme.fixture.ts.md) and before [test.govlab/docs/core/formatters/readme.section.formatter.test.ts](https://banes-lab.com/source/testing/test.govlab/docs/core/formatters/readme.section.formatter.test.ts.md).

## Contained in

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

## Source

```typescript
import { CORE_FIELDS, generateModuleDoc } from "@govlab/docs/core/formatters/readme.formatter.ts";
import { describe, expect, it } from "vitest";
import { README_CONTEXT } from "./readme.fixture.ts";

describe("generateModuleDoc", () => {
    it("renders every core layer in order, a custom field as its own layer and the metrics footer", () => {
        const readme = generateModuleDoc(README_CONTEXT);
        const order = [
            "# @govlab/mod",
            "## Purpose",
            "## When to use",
            "## Install",
            "## Quick start",
            "## API",
            "## Configuration",
        ];
        const positions = order.map((heading) => readme.indexOf(heading));
        expect(positions.every((position) => position >= 0)).toBe(true);
        expect(positions).toStrictEqual(positions.toSorted((left, right) => left - right));
        expect(readme).toContain("## The Extra\n\nExtra section.");
        expect(readme).toContain("<!-- concern:metrics -->");
        expect(readme).not.toContain("## Architecture charts");
        expect(CORE_FIELDS.has("the-extra")).toBe(false);
    });
});
```
