# test.govlab/quality/core/aggregators/catalog.aggregator.test.ts

> 11 lines of code and 0 definitions.

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

Listed in [test.govlab/quality/core/aggregators](https://banes-lab.com/api/source/testing/test.govlab/quality/core/aggregators.md), before [test.govlab/quality/core/aggregators/concern.aggregator.test.ts](https://banes-lab.com/source/testing/test.govlab/quality/core/aggregators/concern.aggregator.test.ts.md).

## Contained in

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

## Source

```typescript
import { expect, test } from "vitest";
import { tallyBy } from "@govlab/quality/core/aggregators/catalog.aggregator.ts";

test("tallyBy counts rules per value of a field and buckets a missing value as none", () => {
    const rules = [
        { category: "style", ruleId: "a" },
        { category: "style", ruleId: "b" },
        { category: "bugs", ruleId: "c" },
        { ruleId: "d" },
    ];
    expect(tallyBy(rules, "category")).toStrictEqual({ bugs: 1, none: 1, style: 2 });
});
```
