# test.govlab/patterns/core/parsers/schema.parser.test.ts

> 21 lines of code and 0 definitions.

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

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

## Contained in

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

## Source

```typescript
import { describe, expect, it } from "vitest";
import { DataLoadError } from "@govlab/patterns/core/classifiers/schema.classifier.ts";
import { schemaFromDict } from "@govlab/patterns/core/parsers/schema.parser.ts";

describe("schemaFromDict", () => {
    it("reads field descriptors, defaulting the optional properties", () => {
        expect(schemaFromDict([{ kind: "scalar", name: "color", primitive: "string" }])).toStrictEqual([
            {
                elementNumeric: false,
                fixedLength: null,
                kind: "scalar",
                name: "color",
                nullable: false,
                primitive: "string",
            },
        ]);
    });

    it("refuses a non-array schema and a descriptor with an unknown kind", () => {
        expect(() => schemaFromDict({})).toThrow(DataLoadError);
        expect(() => schemaFromDict([{ kind: "blob", name: "x" }])).toThrow(DataLoadError);
    });
});
```
