# test.govlab/quality/core/converters/target.converter.test.ts

> 26 lines of code and 0 definitions.

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

Listed in [test.govlab/quality/core/converters](https://banes-lab.com/api/source/testing/test.govlab/quality/core/converters.md), after [test.govlab/quality/core/converters/surface.converter.test.ts](https://banes-lab.com/source/testing/test.govlab/quality/core/converters/surface.converter.test.ts.md).

## Contained in

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

## Source

```typescript
import { describe, expect, it } from "vitest";
import { bumpEsTokens } from "@govlab/quality/core/converters/target.converter.ts";

const ENFORCED_YEAR = 2025;

const TSCONFIG = `{
    // frontend package
    "compilerOptions": {
        "target": "ES2021",
        "module": "NodeNext",
        "lib": ["ES2021", "DOM", "DOM.Iterable"]
    }
}
`;

describe("bumpEsTokens", () => {
    it("rewrites only the stale ES tokens to the replacement, preserving DOM libs, module, and comments", () => {
        const result = bumpEsTokens(TSCONFIG, ENFORCED_YEAR, "ESNext");
        expect(result.changed).toBe(true);
        expect(result.text).toContain(`"target": "ESNext"`);
        expect(result.text).toContain(`"lib": ["ESNext", "DOM", "DOM.Iterable"]`);
        expect(result.text).toContain(`"module": "NodeNext"`);
        expect(result.text).toContain("// frontend package");
    });

    it("is a no-op when everything already meets the enforced revision", () => {
        const text = `{ "target": "ESNext", "lib": ["ESNext", "DOM"] }`;
        expect(bumpEsTokens(text, ENFORCED_YEAR, "ESNext")).toEqual({ changed: false, text });
    });
});
```
