Your question is Testing a Given Function. Take a moment with it on the right.
Talk me through your thinking if you like. When you're confident, submit your answer and I'll grade it like a real screen (7/10 or better passes).
Cambridge Intelligence's graph-visualization library needs a small utility that computes the degree (number of connected links) of every node in a chart, so the UI can size nodes by how connected they are. A colleague wrote the function below and is about to merge it without any tests.
interface ChartNode { id: string; }
interface ChartLink { id1: string; id2: string; }
function computeDegrees(nodes: ChartNode[], links: ChartLink[]): Record<string, number> {
const degrees: Record<string, number> = {};
for (const node of nodes) {
degrees[node.id] = 0;
}
for (const link of links) {
degrees[link.id1]++;
degrees[link.id2]++;
}
nodes.sort((a, b) => degrees[b.id] - degrees[a.id]);
return degrees;
}
You are asked to review this before it merges. How would you test computeDegrees, and what test cases would you insist on seeing before you'd trust it in the chart renderer? Explain your reasoning, don't just list test names.