mirror of
https://github.com/anuraghazra/github-readme-stats.git
synced 2024-12-21 06:11:29 +08:00
1c0332352a
filtering out private repos just in case, otherwise if a user somehow found out the name of any of the PAT owner's private - (considering they created the PAT with private repo access) repos's name then they could see the repo in github extra pins.
97 lines
2.6 KiB
JavaScript
97 lines
2.6 KiB
JavaScript
require("@testing-library/jest-dom");
|
|
const axios = require("axios");
|
|
const MockAdapter = require("axios-mock-adapter");
|
|
const fetchRepo = require("../src/fetchRepo");
|
|
|
|
const data_repo = {
|
|
repository: {
|
|
name: "convoychat",
|
|
stargazers: { totalCount: 38000 },
|
|
description: "Help us take over the world! React + TS + GraphQL Chat App",
|
|
primaryLanguage: {
|
|
color: "#2b7489",
|
|
id: "MDg6TGFuZ3VhZ2UyODc=",
|
|
name: "TypeScript",
|
|
},
|
|
forkCount: 100,
|
|
},
|
|
};
|
|
|
|
const data_user = {
|
|
data: {
|
|
user: { repository: data_repo },
|
|
organization: null,
|
|
},
|
|
};
|
|
const data_org = {
|
|
data: {
|
|
user: null,
|
|
organization: { repository: data_repo },
|
|
},
|
|
};
|
|
|
|
const mock = new MockAdapter(axios);
|
|
|
|
afterEach(() => {
|
|
mock.reset();
|
|
});
|
|
|
|
describe("Test fetchRepo", () => {
|
|
it("should fetch correct user repo", async () => {
|
|
mock.onPost("https://api.github.com/graphql").reply(200, data_user);
|
|
|
|
let repo = await fetchRepo("anuraghazra", "convoychat");
|
|
expect(repo).toStrictEqual(data_repo);
|
|
});
|
|
|
|
it("should fetch correct org repo", async () => {
|
|
mock.onPost("https://api.github.com/graphql").reply(200, data_org);
|
|
|
|
let repo = await fetchRepo("anuraghazra", "convoychat");
|
|
expect(repo).toStrictEqual(data_repo);
|
|
});
|
|
|
|
it("should throw error if user is found but repo is null", async () => {
|
|
mock
|
|
.onPost("https://api.github.com/graphql")
|
|
.reply(200, { data: { user: { repository: null }, organization: null } });
|
|
|
|
await expect(fetchRepo("anuraghazra", "convoychat")).rejects.toThrow(
|
|
"User Repository Not found"
|
|
);
|
|
});
|
|
|
|
it("should throw error if org is found but repo is null", async () => {
|
|
mock
|
|
.onPost("https://api.github.com/graphql")
|
|
.reply(200, { data: { user: null, organization: { repository: null } } });
|
|
|
|
await expect(fetchRepo("anuraghazra", "convoychat")).rejects.toThrow(
|
|
"Organization Repository Not found"
|
|
);
|
|
});
|
|
|
|
it("should throw error if both user & org data not found", async () => {
|
|
mock
|
|
.onPost("https://api.github.com/graphql")
|
|
.reply(200, { data: { user: null, organization: null } });
|
|
|
|
await expect(fetchRepo("anuraghazra", "convoychat")).rejects.toThrow(
|
|
"Not found"
|
|
);
|
|
});
|
|
|
|
it("should throw error if repository is private", async () => {
|
|
mock.onPost("https://api.github.com/graphql").reply(200, {
|
|
data: {
|
|
user: { repository: { ...data_repo, isPrivate: true } },
|
|
organization: null,
|
|
},
|
|
});
|
|
|
|
await expect(fetchRepo("anuraghazra", "convoychat")).rejects.toThrow(
|
|
"User Repository Not found"
|
|
);
|
|
});
|
|
});
|