# test.govlab/quality/core/factories/tool.factory.test.ts

> 14 lines of code and 0 definitions.

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

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

## Contained in

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

## Source

```typescript
import { expect, test } from "vitest";
import { gatingAdvisory, quietGatingAdvisory, toolAdvisory } from "@govlab/quality/core/factories/tool.factory.ts";
import type { RunnerContext } from "@govlab/quality/types/tool.types.ts";

const context: RunnerContext = { ecosystem: "go", fix: false, languageId: "go", paths: [], root: "/repo" };

test("toolAdvisory builds a plain advisory context and the gating variants add their failure policy", () => {
    expect(toolAdvisory(context, "gosec", "hint")).toStrictEqual({
        ecosystem: "go",
        installHint: "hint",
        root: "/repo",
        tool: "gosec",
    });
    expect(gatingAdvisory(context, "gosec", "hint")).toMatchObject({ failureSeverity: "error", gating: true });
    expect(quietGatingAdvisory(context, "gosec", "hint").notInstalledOutput).toBe("gosec is not installed.");
});
```
