53 lines
2 KiB
TypeScript
53 lines
2 KiB
TypeScript
import { describe, expect, it } from "vitest";
|
|
import {
|
|
buildUnmatchedTeamResolutionView,
|
|
rankParticipantMatches,
|
|
type ReconciliationParticipant,
|
|
} from "../unmatched-team-reconciliation";
|
|
|
|
const participants: ReconciliationParticipant[] = [
|
|
{ id: "1", name: "Los Angeles Lakers" },
|
|
{ id: "2", name: "Golden State Warriors" },
|
|
{ id: "3", name: "Boston Celtics" },
|
|
{ id: "4", name: "New York Knicks" },
|
|
];
|
|
|
|
describe("unmatched team reconciliation helpers", () => {
|
|
it("suggests an exact normalized match first", () => {
|
|
const result = buildUnmatchedTeamResolutionView("los angeles lakers", participants);
|
|
|
|
expect(result.confidence).toBe("exact");
|
|
expect(result.suggestedParticipantName).toBe("Los Angeles Lakers");
|
|
expect(result.suggestedParticipantId).toBe("1");
|
|
});
|
|
|
|
it("suggests a substring match when an exact match is absent", () => {
|
|
const result = buildUnmatchedTeamResolutionView("Golden State", participants);
|
|
|
|
expect(result.confidence).toBe("partial");
|
|
expect(result.suggestedParticipantName).toBe("Golden State Warriors");
|
|
expect(result.orderedParticipants[0]?.name).toBe("Golden State Warriors");
|
|
});
|
|
|
|
it("leaves the picker unselected when only review-ranked matches exist", () => {
|
|
const result = buildUnmatchedTeamResolutionView("Boston Club", participants);
|
|
|
|
expect(result.confidence).toBe("review");
|
|
expect(result.suggestedParticipantId).toBeNull();
|
|
expect(result.topCandidates.length).toBeGreaterThan(0);
|
|
});
|
|
|
|
it("keeps top candidates ahead of the full participant list", () => {
|
|
const ranked = rankParticipantMatches("Boston", participants);
|
|
const result = buildUnmatchedTeamResolutionView("Boston", participants);
|
|
|
|
expect(ranked[0]?.participantName).toBe("Boston Celtics");
|
|
expect(result.orderedParticipants[0]?.name).toBe("Boston Celtics");
|
|
expect(result.orderedParticipants.map((participant) => participant.id)).toEqual([
|
|
"3",
|
|
"1",
|
|
"2",
|
|
"4",
|
|
]);
|
|
});
|
|
});
|