From b50555ad9afc008729b5a7e15cad3bbe47a561cf Mon Sep 17 00:00:00 2001 From: anuraghazra Date: Tue, 21 Jul 2020 17:22:22 +0530 Subject: [PATCH] tests: added test for fetchTopLanguages --- tests/fetchTopLanguages.test.js | 84 +++++++++++++++++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 tests/fetchTopLanguages.test.js diff --git a/tests/fetchTopLanguages.test.js b/tests/fetchTopLanguages.test.js new file mode 100644 index 0000000..9f90e77 --- /dev/null +++ b/tests/fetchTopLanguages.test.js @@ -0,0 +1,84 @@ +require("@testing-library/jest-dom"); +const axios = require("axios"); +const MockAdapter = require("axios-mock-adapter"); +const fetchTopLanguages = require("../src/fetchTopLanguages"); + +const mock = new MockAdapter(axios); + +afterEach(() => { + mock.reset(); +}); + +const data_langs = { + data: { + user: { + repositories: { + nodes: [ + { + languages: { + edges: [{ size: 100, node: { color: "#0f0", name: "HTML" } }], + }, + }, + { + languages: { + edges: [{ size: 100, node: { color: "#0f0", name: "HTML" } }], + }, + }, + { + languages: { + edges: [ + { size: 100, node: { color: "#0ff", name: "javascript" } }, + ], + }, + }, + { + 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", async () => { + mock.onPost("https://api.github.com/graphql").reply(200, data_langs); + + let repo = await fetchTopLanguages("anuraghazra"); + expect(repo).toStrictEqual({ + HTML: { + color: "#0f0", + name: "HTML", + size: 200, + }, + javascript: { + color: "#0ff", + name: "javascript", + size: 200, + }, + }); + }); + + 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'." + ); + }); +});