diff --git a/tests/renderStatsCard.test.ts b/tests/renderStatsCard.test.ts index f0feb0fb..e7e6d175 100644 --- a/tests/renderStatsCard.test.ts +++ b/tests/renderStatsCard.test.ts @@ -17,7 +17,12 @@ jest.mock("express", () => ({ }, })); -const exampleUserData: User = { +type ExtendUser = User & { + joinedAt: string; + totalCommitsSinceJoined: number; +} + +const exampleUserData: ExtendUser = { name: "Fajar", login: "FajarKim", avatarUrl: "base64-encoded-image", @@ -34,6 +39,8 @@ const exampleUserData: User = { totalCommitContributions: 1200, restrictedContributionsCount: 130, totalPullRequestReviewContributions: 340, + joinedAt: "2020-01-01T00:00:00Z", + totalCommitsSinceJoined: 1500, }; describe("Test GitHub Readme Profile API", () => { @@ -52,6 +59,8 @@ describe("Test GitHub Readme Profile API", () => { status: jest.fn(), }; + (getData as jest.Mock).mockResolvedValue(exampleUserData); + jest.clearAllMocks(); }); @@ -148,4 +157,19 @@ describe("Test GitHub Readme Profile API", () => { expect(mockResponse.send).toHaveBeenCalled(); expect(mockResponse.json).not.toHaveBeenCalled(); }); + + it("should correctly fetch user join date and total commits since joining", async () => { + mockRequest.query.username = "FajarKim"; + (getData as jest.Mock).mockResolvedValueOnce(exampleUserData); + + await readmeStats(mockRequest, mockResponse); + + expect(getData).toHaveBeenCalledWith(mockRequest.query.username); + expect(mockResponse.json).toHaveBeenCalledWith( + expect.objectContaining({ + joinedAt: "2020-01-01T00:00:00Z", + totalCommitsSinceJoined: 1500, + }) + ); + }); });