-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcommittees.test.ts
More file actions
67 lines (61 loc) · 2.71 KB
/
Copy pathcommittees.test.ts
File metadata and controls
67 lines (61 loc) · 2.71 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
import { describe, it, expect } from "vitest";
import { mergeSenatoCommittees } from "./committees.js";
const row = (o: Partial<Record<string, string>> & { uri: string }) => ({
chamber: "senato",
uri: o.uri,
title: o.title ?? "",
short_title: o.short_title ?? "",
subtitle: o.subtitle ?? "",
category: o.category ?? "",
session_count: o.session_count ?? "",
});
// I due insiemi si intersecano solo in parte (#82): le Giunte hanno anagrafica
// ma non sedute, gli organi "2-*" hanno sedute ma non esistono come risorse.
describe("mergeSenatoCommittees", () => {
it("tiene gli organi con sedute e ne completa l'anagrafica", () => {
const out = mergeSenatoCommittees(
[row({ uri: "c/0-1", short_title: "Affari Costituzionali", session_count: "742" })],
[row({ uri: "c/0-1", title: "1a Commissione", short_title: "Affari Costituzionali", category: "Commissioni permanenti" })],
);
expect(out).toHaveLength(1);
expect(out[0].session_count).toBe("742");
expect(out[0].title).toBe("1a Commissione");
expect(out[0].category).toBe("Commissioni permanenti");
});
it("aggiunge gli organi descritti ma senza sedute, con conteggio 0 (le Giunte)", () => {
const out = mergeSenatoCommittees(
[row({ uri: "c/0-1", short_title: "Affari Costituzionali", session_count: "742" })],
[row({ uri: "c/0-21", short_title: "Giunta delle elezioni", category: "Giunte" })],
);
expect(out.map((r) => r.uri)).toEqual(["c/0-1", "c/0-21"]);
expect(out[1].session_count).toBe("0");
});
it("tiene gli organi con sedute ma privi di anagrafica, senza inventarne il nome", () => {
const out = mergeSenatoCommittees([row({ uri: "c/2-1", session_count: "647" })], []);
expect(out).toHaveLength(1);
expect(out[0].short_title).toBe("");
expect(out[0].title).toBe("");
expect(out[0].session_count).toBe("647");
});
it("ordina per numero di sedute decrescente, poi per titolo", () => {
const out = mergeSenatoCommittees(
[
row({ uri: "c/0-5", short_title: "Bilancio", session_count: "592" }),
row({ uri: "c/2-1", session_count: "647" }),
],
[
row({ uri: "c/0-22", short_title: "Biblioteca", category: "Giunte" }),
row({ uri: "c/0-21", short_title: "Giunta delle elezioni", category: "Giunte" }),
],
);
expect(out.map((r) => r.uri)).toEqual(["c/2-1", "c/0-5", "c/0-22", "c/0-21"]);
});
it("non duplica un organo presente in entrambi gli insiemi", () => {
const out = mergeSenatoCommittees(
[row({ uri: "c/0-1", session_count: "742" })],
[row({ uri: "c/0-1", short_title: "Affari Costituzionali" })],
);
expect(out).toHaveLength(1);
expect(out[0].short_title).toBe("Affari Costituzionali");
});
});