# test.web/domain/loaders/search.loader.test.ts

> 52 lines of code and 0 definitions.

Tree: Codebase Testing
Language: typescript
Canonical: https://banes-lab.com/anatomy/testing#file-testing-test-web-domain-loaders-search-loader-test-ts
Source text: https://banes-lab.com/source/testing/test.web/domain/loaders/search.loader.test.ts.txt

Listed in [test.web/domain/loaders](https://banes-lab.com/api/source/testing/test.web/domain/loaders.md), before [test.web/domain/loaders/surface.loader.test.ts](https://banes-lab.com/source/testing/test.web/domain/loaders/surface.loader.test.ts.md).

## Contained in

- [test.web/domain/loaders](https://banes-lab.com/anatomy/testing/folder-testing-test-web-domain-loaders.md)

## Source

```typescript
import "@banes-lab/web/presentation/records/search.record.ts";
import { describe, expect, it } from "vitest";
import { loadCorpus, searchPages } from "@banes-lab/web/domain/loaders/search.loader.ts";
import { SEARCH } from "@banes-lab/web/core/generated/search.generated.ts";
import { SEARCH_PAGE } from "@banes-lab/web/core/ids/page.ids.ts";
import { createElement } from "@banes-lab/web/core/factories/element.factory.ts";
import { registerPage } from "@banes-lab/web/domain/registries/page.registry.ts";

const FAKE = "fake-searchable";

registerPage({
    accent: FAKE,
    description: FAKE,
    icon: "bi-x",
    id: FAKE,
    listed: false,
    load: async () => {
        await Promise.resolve();
        return {
            content: {
                kind: "document",
                meta: { closing: "c", effectiveDate: "e", lastUpdated: "l", title: FAKE, version: "1" },
                sections: [],
            },
            description: FAKE,
            id: FAKE,
            render: () => createElement("div"),
            title: FAKE,
        };
    },
    mark: FAKE,
    order: 1,
    share: { headline: FAKE, tagline: FAKE },
    title: FAKE,
});

describe("loadCorpus", () => {
    it("gathers every registered page but the search page, with the built positions and the source definitions", async () => {
        const corpus = await loadCorpus();
        const ids = corpus.pages.map((page) => page.definition.id);
        expect(ids).toContain(FAKE);
        expect(ids).not.toContain(SEARCH_PAGE);
        expect(corpus.positions).toBe(SEARCH.positions);
        expect(corpus.definitions).toBe(SEARCH.definitions);
        expect(corpus.definitions.length).toBeGreaterThan(0);
        expect(await loadCorpus()).toBe(corpus);
    });
});

describe("searchPages", () => {
    it("loads every registered page but the search page itself", async () => {
        const ids = (await searchPages()).map((page) => page.definition.id);
        expect(ids).toContain(FAKE);
        expect(ids).not.toContain(SEARCH_PAGE);
    });
});
```
