Skip to content

Commit

Permalink
tests: fixed test api performance
Browse files Browse the repository at this point in the history
  • Loading branch information
FajarKim committed Dec 2, 2023
1 parent 86b3505 commit 0b0a1d4
Showing 1 changed file with 24 additions and 35 deletions.
59 changes: 24 additions & 35 deletions tests/renderAPIStatsCard.test.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
// __tests__/readmeStats.test.ts
import readmeStats from "../api/index";
import getData from "../src/getData";
import cardStyle from "../src/card";
Expand Down Expand Up @@ -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");
Expand All @@ -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 () => {
Expand All @@ -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();
Expand All @@ -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();
Expand All @@ -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();
Expand Down

0 comments on commit 0b0a1d4

Please sign in to comment.