mirror of
https://github.com/anuraghazra/github-readme-stats.git
synced 2024-12-21 06:11:29 +08:00
416f027fae
* fix: wip fix total commit counts * tests: added tests * chore: remove console logs * docs: added docs for include_all_commits * chore: increased value offset x * chore: added reference/links comments * docs: updated docs
137 lines
3.3 KiB
JavaScript
137 lines
3.3 KiB
JavaScript
require("@testing-library/jest-dom");
|
|
const axios = require("axios");
|
|
const MockAdapter = require("axios-mock-adapter");
|
|
const fetchStats = require("../src/fetchStats");
|
|
const calculateRank = require("../src/calculateRank");
|
|
|
|
const data = {
|
|
data: {
|
|
user: {
|
|
name: "Anurag Hazra",
|
|
repositoriesContributedTo: { totalCount: 61 },
|
|
contributionsCollection: {
|
|
totalCommitContributions: 100,
|
|
restrictedContributionsCount: 50,
|
|
},
|
|
pullRequests: { totalCount: 300 },
|
|
issues: { totalCount: 200 },
|
|
followers: { totalCount: 100 },
|
|
repositories: {
|
|
totalCount: 5,
|
|
nodes: [
|
|
{ stargazers: { totalCount: 100 } },
|
|
{ stargazers: { totalCount: 100 } },
|
|
{ stargazers: { totalCount: 100 } },
|
|
{ stargazers: { totalCount: 50 } },
|
|
{ stargazers: { totalCount: 50 } },
|
|
],
|
|
},
|
|
},
|
|
},
|
|
};
|
|
|
|
const error = {
|
|
errors: [
|
|
{
|
|
type: "NOT_FOUND",
|
|
path: ["user"],
|
|
locations: [],
|
|
message: "Could not resolve to a User with the login of 'noname'.",
|
|
},
|
|
],
|
|
};
|
|
|
|
const mock = new MockAdapter(axios);
|
|
|
|
afterEach(() => {
|
|
mock.reset();
|
|
});
|
|
|
|
describe("Test fetchStats", () => {
|
|
it("should fetch correct stats", async () => {
|
|
mock.onPost("https://api.github.com/graphql").reply(200, data);
|
|
|
|
let stats = await fetchStats("anuraghazra");
|
|
const rank = calculateRank({
|
|
totalCommits: 100,
|
|
totalRepos: 5,
|
|
followers: 100,
|
|
contributions: 61,
|
|
stargazers: 400,
|
|
prs: 300,
|
|
issues: 200,
|
|
});
|
|
|
|
expect(stats).toStrictEqual({
|
|
contributedTo: 61,
|
|
name: "Anurag Hazra",
|
|
totalCommits: 100,
|
|
totalIssues: 200,
|
|
totalPRs: 300,
|
|
totalStars: 400,
|
|
rank,
|
|
});
|
|
});
|
|
|
|
it("should throw error", async () => {
|
|
mock.onPost("https://api.github.com/graphql").reply(200, error);
|
|
|
|
await expect(fetchStats("anuraghazra")).rejects.toThrow(
|
|
"Could not resolve to a User with the login of 'noname'."
|
|
);
|
|
});
|
|
|
|
it("should fetch and add private contributions", async () => {
|
|
mock.onPost("https://api.github.com/graphql").reply(200, data);
|
|
|
|
let stats = await fetchStats("anuraghazra", true);
|
|
const rank = calculateRank({
|
|
totalCommits: 150,
|
|
totalRepos: 5,
|
|
followers: 100,
|
|
contributions: 61,
|
|
stargazers: 400,
|
|
prs: 300,
|
|
issues: 200,
|
|
});
|
|
|
|
expect(stats).toStrictEqual({
|
|
contributedTo: 61,
|
|
name: "Anurag Hazra",
|
|
totalCommits: 150,
|
|
totalIssues: 200,
|
|
totalPRs: 300,
|
|
totalStars: 400,
|
|
rank,
|
|
});
|
|
});
|
|
|
|
it("should fetch total commits", async () => {
|
|
mock.onPost("https://api.github.com/graphql").reply(200, data);
|
|
mock
|
|
.onGet("https://api.github.com/search/commits?q=author:anuraghazra")
|
|
.reply(200, { total_count: 1000 });
|
|
|
|
let stats = await fetchStats("anuraghazra", true, true);
|
|
const rank = calculateRank({
|
|
totalCommits: 1000 + 150,
|
|
totalRepos: 5,
|
|
followers: 100,
|
|
contributions: 61,
|
|
stargazers: 400,
|
|
prs: 300,
|
|
issues: 200,
|
|
});
|
|
|
|
expect(stats).toStrictEqual({
|
|
contributedTo: 61,
|
|
name: "Anurag Hazra",
|
|
totalCommits: 1000 + 150,
|
|
totalIssues: 200,
|
|
totalPRs: 300,
|
|
totalStars: 400,
|
|
rank,
|
|
});
|
|
});
|
|
});
|