mirror of
https://github.com/anuraghazra/github-readme-stats.git
synced 2024-12-27 06:25:47 +08:00
6c92fe9d2a
* eslint integration * ci & pre commit * dev * dev * dev
152 lines
3.7 KiB
JavaScript
152 lines
3.7 KiB
JavaScript
import "@testing-library/jest-dom";
|
|
import axios from "axios";
|
|
import MockAdapter from "axios-mock-adapter";
|
|
import { fetchTopLanguages } from "../src/fetchers/top-languages-fetcher.js";
|
|
import { expect, it, describe, afterEach } from "@jest/globals";
|
|
|
|
const mock = new MockAdapter(axios);
|
|
|
|
afterEach(() => {
|
|
mock.reset();
|
|
});
|
|
|
|
const data_langs = {
|
|
data: {
|
|
user: {
|
|
repositories: {
|
|
nodes: [
|
|
{
|
|
name: "test-repo-1",
|
|
languages: {
|
|
edges: [{ size: 100, node: { color: "#0f0", name: "HTML" } }],
|
|
},
|
|
},
|
|
{
|
|
name: "test-repo-2",
|
|
languages: {
|
|
edges: [{ size: 100, node: { color: "#0f0", name: "HTML" } }],
|
|
},
|
|
},
|
|
{
|
|
name: "test-repo-3",
|
|
languages: {
|
|
edges: [
|
|
{ size: 100, node: { color: "#0ff", name: "javascript" } },
|
|
],
|
|
},
|
|
},
|
|
{
|
|
name: "test-repo-4",
|
|
languages: {
|
|
edges: [
|
|
{ size: 100, node: { color: "#0ff", name: "javascript" } },
|
|
],
|
|
},
|
|
},
|
|
],
|
|
},
|
|
},
|
|
},
|
|
};
|
|
|
|
const error = {
|
|
errors: [
|
|
{
|
|
type: "NOT_FOUND",
|
|
path: ["user"],
|
|
locations: [],
|
|
message: "Could not resolve to a User with the login of 'noname'.",
|
|
},
|
|
],
|
|
};
|
|
|
|
describe("FetchTopLanguages", () => {
|
|
it("should fetch correct language data while using the new calculation", async () => {
|
|
mock.onPost("https://api.github.com/graphql").reply(200, data_langs);
|
|
|
|
let repo = await fetchTopLanguages("anuraghazra", [], 0.5, 0.5);
|
|
expect(repo).toStrictEqual({
|
|
HTML: {
|
|
color: "#0f0",
|
|
count: 2,
|
|
name: "HTML",
|
|
size: 20.000000000000004,
|
|
},
|
|
javascript: {
|
|
color: "#0ff",
|
|
count: 2,
|
|
name: "javascript",
|
|
size: 20.000000000000004,
|
|
},
|
|
});
|
|
});
|
|
|
|
it("should fetch correct language data while excluding the 'test-repo-1' repository", async () => {
|
|
mock.onPost("https://api.github.com/graphql").reply(200, data_langs);
|
|
|
|
let repo = await fetchTopLanguages("anuraghazra", ["test-repo-1"]);
|
|
expect(repo).toStrictEqual({
|
|
HTML: {
|
|
color: "#0f0",
|
|
count: 1,
|
|
name: "HTML",
|
|
size: 100,
|
|
},
|
|
javascript: {
|
|
color: "#0ff",
|
|
count: 2,
|
|
name: "javascript",
|
|
size: 200,
|
|
},
|
|
});
|
|
});
|
|
|
|
it("should fetch correct language data while using the old calculation", async () => {
|
|
mock.onPost("https://api.github.com/graphql").reply(200, data_langs);
|
|
|
|
let repo = await fetchTopLanguages("anuraghazra", [], 1, 0);
|
|
expect(repo).toStrictEqual({
|
|
HTML: {
|
|
color: "#0f0",
|
|
count: 2,
|
|
name: "HTML",
|
|
size: 200,
|
|
},
|
|
javascript: {
|
|
color: "#0ff",
|
|
count: 2,
|
|
name: "javascript",
|
|
size: 200,
|
|
},
|
|
});
|
|
});
|
|
|
|
it("should rank languages by the number of repositories they appear in", async () => {
|
|
mock.onPost("https://api.github.com/graphql").reply(200, data_langs);
|
|
|
|
let repo = await fetchTopLanguages("anuraghazra", [], 0, 1);
|
|
expect(repo).toStrictEqual({
|
|
HTML: {
|
|
color: "#0f0",
|
|
count: 2,
|
|
name: "HTML",
|
|
size: 2,
|
|
},
|
|
javascript: {
|
|
color: "#0ff",
|
|
count: 2,
|
|
name: "javascript",
|
|
size: 2,
|
|
},
|
|
});
|
|
});
|
|
|
|
it("should throw error", async () => {
|
|
mock.onPost("https://api.github.com/graphql").reply(200, error);
|
|
|
|
await expect(fetchTopLanguages("anuraghazra")).rejects.toThrow(
|
|
"Could not resolve to a User with the login of 'noname'.",
|
|
);
|
|
});
|
|
});
|