* tests: fix float problems and PAT problem * extend CONTRIBUTING.md * extend build documentation, add GH action, fix build on MacOS * fix build on Vercel * update .gitignore and CONTRIBUTING.md * feat: begin work on monorepo * chore(actions/basic-build): use pnpm * fix: vercel-deploy * docs: updates with new folders * chore: apply PR review comments --------- Co-authored-by: martin-mfg <2026226+martin-mfg@users.noreply.github.com>
124 lines
2.6 KiB
JavaScript
124 lines
2.6 KiB
JavaScript
import { describe, expect, it } from "@jest/globals";
|
|
import "@testing-library/jest-dom";
|
|
import { calculateRank } from "../src/calculateRank.js";
|
|
import { approxNumber } from "./bench/utils.js";
|
|
|
|
describe("Test calculateRank", () => {
|
|
it("new user gets C rank", () => {
|
|
expect(
|
|
calculateRank({
|
|
all_commits: false,
|
|
commits: 0,
|
|
prs: 0,
|
|
issues: 0,
|
|
reviews: 0,
|
|
repos: 0,
|
|
stars: 0,
|
|
followers: 0,
|
|
}),
|
|
).toStrictEqual({ level: "C", percentile: 100 });
|
|
});
|
|
|
|
it("beginner user gets B- rank", () => {
|
|
expect(
|
|
calculateRank({
|
|
all_commits: false,
|
|
commits: 125,
|
|
prs: 25,
|
|
issues: 10,
|
|
reviews: 5,
|
|
repos: 0,
|
|
stars: 25,
|
|
followers: 5,
|
|
}),
|
|
).toStrictEqual({
|
|
level: "B-",
|
|
percentile: approxNumber(65.02918514848255),
|
|
});
|
|
});
|
|
|
|
it("median user gets B+ rank", () => {
|
|
expect(
|
|
calculateRank({
|
|
all_commits: false,
|
|
commits: 250,
|
|
prs: 50,
|
|
issues: 25,
|
|
reviews: 10,
|
|
repos: 0,
|
|
stars: 50,
|
|
followers: 10,
|
|
}),
|
|
).toStrictEqual({ level: "B+", percentile: approxNumber(46.09375) });
|
|
});
|
|
|
|
it("average user gets B+ rank (include_all_commits)", () => {
|
|
expect(
|
|
calculateRank({
|
|
all_commits: true,
|
|
commits: 1000,
|
|
prs: 50,
|
|
issues: 25,
|
|
reviews: 10,
|
|
repos: 0,
|
|
stars: 50,
|
|
followers: 10,
|
|
}),
|
|
).toStrictEqual({ level: "B+", percentile: approxNumber(46.09375) });
|
|
});
|
|
|
|
it("advanced user gets A rank", () => {
|
|
expect(
|
|
calculateRank({
|
|
all_commits: false,
|
|
commits: 500,
|
|
prs: 100,
|
|
issues: 50,
|
|
reviews: 20,
|
|
repos: 0,
|
|
stars: 200,
|
|
followers: 40,
|
|
}),
|
|
).toStrictEqual({
|
|
level: "A",
|
|
percentile: approxNumber(20.841471354166664),
|
|
});
|
|
});
|
|
|
|
it("expert user gets A+ rank", () => {
|
|
expect(
|
|
calculateRank({
|
|
all_commits: false,
|
|
commits: 1000,
|
|
prs: 200,
|
|
issues: 100,
|
|
reviews: 40,
|
|
repos: 0,
|
|
stars: 800,
|
|
followers: 160,
|
|
}),
|
|
).toStrictEqual({
|
|
level: "A+",
|
|
percentile: approxNumber(5.575988339442828),
|
|
});
|
|
});
|
|
|
|
it("sindresorhus gets S rank", () => {
|
|
expect(
|
|
calculateRank({
|
|
all_commits: false,
|
|
commits: 1300,
|
|
prs: 1500,
|
|
issues: 4500,
|
|
reviews: 1000,
|
|
repos: 0,
|
|
stars: 600000,
|
|
followers: 50000,
|
|
}),
|
|
).toStrictEqual({
|
|
level: "S",
|
|
percentile: approxNumber(0.4578556547153667),
|
|
});
|
|
});
|
|
});
|