# test.govlab/context/core/parsers/invariant.parser.test.ts

> 18 lines of code and 0 definitions.

Tree: Codebase Testing
Language: typescript
Canonical: https://banes-lab.com/anatomy/testing#file-testing-test-govlab-context-core-parsers-invariant-parser-test-ts
Source text: https://banes-lab.com/source/testing/test.govlab/context/core/parsers/invariant.parser.test.ts.txt

Listed in [test.govlab/context/core/parsers](https://banes-lab.com/api/source/testing/test.govlab/context/core/parsers.md), after [test.govlab/context/core/parsers/document.parser.test.ts](https://banes-lab.com/source/testing/test.govlab/context/core/parsers/document.parser.test.ts.md) and before [test.govlab/context/core/parsers/metadata.parser.test.ts](https://banes-lab.com/source/testing/test.govlab/context/core/parsers/metadata.parser.test.ts.md).

## Contained in

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

## Source

```typescript
import { LINE } from "./document.fixture.ts";
import assert from "node:assert/strict";
import { parseInvariant } from "@govlab/context/core/parsers/invariant.parser.ts";
import { test } from "vitest";

test("parseInvariant reads the name, the property and the three clauses", () => {
    const invariant = parseInvariant(
        "INVARIANT one-writer: a record has exactly one writer over: every record on the surface binds: every party writing there objector: [check] one open fence per record",
        LINE,
    );
    assert.equal(invariant.name, "one-writer");
    assert.equal(invariant.property, "a record has exactly one writer");
    assert.equal(invariant.set, "every record on the surface");
    assert.equal(invariant.parties, "every party writing there");
    assert.equal(invariant.objector, "[check] one open fence per record");
    const bare = parseInvariant("INVARIANT stated: a property", LINE);
    assert.equal(bare.set, null);
    assert.equal(bare.objector, null);
});
```
