From 0b0a1d415240dfd53aa0673de464ab7e427e0d23 Mon Sep 17 00:00:00 2001 From: Rangga Fajar Oktariansyah <86386385+FajarKim@users.noreply.github.com> Date: Sat, 2 Dec 2023 19:56:12 +0700 Subject: [PATCH] tests: fixed test api performance --- tests/renderAPIStatsCard.test.ts | 59 +++++++++++++------------------- 1 file changed, 24 insertions(+), 35 deletions(-) diff --git a/tests/renderAPIStatsCard.test.ts b/tests/renderAPIStatsCard.test.ts index b4f314c..e13365a 100644 --- a/tests/renderAPIStatsCard.test.ts +++ b/tests/renderAPIStatsCard.test.ts @@ -1,3 +1,4 @@ +// __tests__/readmeStats.test.ts import readmeStats from "../api/index"; import getData from "../src/getData"; import cardStyle from "../src/card"; @@ -38,7 +39,7 @@ describe("Test GitHub Readme Profile API", () => { await readmeStats(mockRequest, mockResponse); - expect(await getData).toHaveBeenCalledWith(mockRequest.query.username); + expect(getData).toHaveBeenCalledWith(mockRequest.query.username); expect(mockResponse.json).toHaveBeenCalledWith(await getData(mockRequest.query.username)); expect(mockResponse.send).not.toHaveBeenCalled(); expect(mockResponse.setHeader).toHaveBeenCalledWith("Cache-Control", "s-maxage=3600, stale-while-revalidate"); @@ -50,49 +51,37 @@ describe("Test GitHub Readme Profile API", () => { await readmeStats(mockRequest, mockResponse); - expect(await getData).toHaveBeenCalledWith(mockRequest.query.username); + expect(getData).toHaveBeenCalledWith(mockRequest.query.username); expect(cardStyle).toHaveBeenCalledWith(await getData(mockRequest.query.username), expect.any(Object)); expect(mockResponse.send).toHaveBeenCalled(); expect(mockResponse.json).not.toHaveBeenCalled(); expect(mockResponse.setHeader).toHaveBeenCalledWith("Content-Type", "image/svg+xml"); }); - it("should handle request theme and generate SVG response", async () => { - const availableThemes = Object.keys(themes); - for (let i = 0; i < availableThemes.length; i += 1) { - const themesSlice = availableThemes.slice(i, i + 1); - const row = themesSlice.map(theme => valueReturn(theme)).join(""); - - mockRequest.query.username = "FajarKim"; - mockRequest.query.theme = row; + it.each(Object.keys(themes))("should handle request theme '%s' and generate SVG response", async (theme) => { + mockRequest.query.username = "FajarKim"; + mockRequest.query.theme = theme; - await readmeStats(mockRequest, mockResponse); + await readmeStats(mockRequest, mockResponse); - expect(await getData).toHaveBeenCalledWith(mockRequest.query.username); - expect(cardStyle).toHaveBeenCalledWith(await getData(mockRequest.query.username), expect.any(Object)); - expect(mockResponse.send).toHaveBeenCalled(); - expect(mockResponse.json).not.toHaveBeenCalled(); - expect(mockResponse.setHeader).toHaveBeenCalledWith("Content-Type", "image/svg+xml"); - } + expect(getData).toHaveBeenCalledWith(mockRequest.query.username); + expect(cardStyle).toHaveBeenCalledWith(await getData(mockRequest.query.username), expect.any(Object)); + expect(mockResponse.send).toHaveBeenCalled(); + expect(mockResponse.json).not.toHaveBeenCalled(); + expect(mockResponse.setHeader).toHaveBeenCalledWith("Content-Type", "image/svg+xml"); }); - it("should handle request locale and generate SVG response", async () => { - const availableLocales = Object.keys(locales); - for (let i = 0; i < availableLocales.length; i += 1) { - const localesSlice = availableLocales.slice(i, i + 1); - const row = localesSlice.map(locale => valueReturn(locale)).join(""); - - mockRequest.query.username = "FajarKim"; - mockRequest.query.locale = row; + it.each(Object.keys(locales))("should handle request locale '%s' and generate SVG response", async (locale) => { + mockRequest.query.username = "FajarKim"; + mockRequest.query.locale = locale; - await readmeStats(mockRequest, mockResponse); + await readmeStats(mockRequest, mockResponse); - expect(await getData).toHaveBeenCalledWith(mockRequest.query.username); - expect(cardStyle).toHaveBeenCalledWith(await getData(mockRequest.query.username), expect.any(Object)); - expect(mockResponse.send).toHaveBeenCalled(); - expect(mockResponse.json).not.toHaveBeenCalled(); - expect(mockResponse.setHeader).toHaveBeenCalledWith("Content-Type", "image/svg+xml"); - } + expect(getData).toHaveBeenCalledWith(mockRequest.query.username); + expect(cardStyle).toHaveBeenCalledWith(await getData(mockRequest.query.username), expect.any(Object)); + expect(mockResponse.send).toHaveBeenCalled(); + expect(mockResponse.json).not.toHaveBeenCalled(); + expect(mockResponse.setHeader).toHaveBeenCalledWith("Content-Type", "image/svg+xml"); }); it("should handle request hide stats and generate SVG response", async () => { @@ -101,7 +90,7 @@ describe("Test GitHub Readme Profile API", () => { await readmeStats(mockRequest, mockResponse); - expect(await getData).toHaveBeenCalledWith(mockRequest.query.username); + expect(getData).toHaveBeenCalledWith(mockRequest.query.username); expect(cardStyle).toHaveBeenCalledWith(await getData(mockRequest.query.username), expect.any(Object)); expect(mockResponse.send).toHaveBeenCalled(); expect(mockResponse.json).not.toHaveBeenCalled(); @@ -114,7 +103,7 @@ describe("Test GitHub Readme Profile API", () => { await readmeStats(mockRequest, mockResponse); - expect(await getData).toHaveBeenCalledWith(mockRequest.query.username); + expect(getData).toHaveBeenCalledWith(mockRequest.query.username); expect(cardStyle).toHaveBeenCalledWith(await getData(mockRequest.query.username), expect.any(Object)); expect(mockResponse.send).toHaveBeenCalled(); expect(mockResponse.json).not.toHaveBeenCalled(); @@ -124,7 +113,7 @@ describe("Test GitHub Readme Profile API", () => { it("should handle invalid username and send error response", async () => { await readmeStats(mockRequest, mockResponse); - expect(await getData).not.toHaveBeenCalledWith(); + expect(getData).not.toHaveBeenCalledWith(); expect(cardStyle).not.toHaveBeenCalledWith(); expect(mockResponse.send).toHaveBeenCalled(); expect(mockResponse.json).not.toHaveBeenCalled();