From 14668ea675942a0bdf81acd290885a2f70a3bded Mon Sep 17 00:00:00 2001 From: al8763be Date: Sun, 17 Mar 2024 19:05:39 +0100 Subject: [PATCH] Test file for API --- frontend/src/API/API.test.ts | 88 ++++++++++++++++++++++++++++++++++++ 1 file changed, 88 insertions(+) create mode 100644 frontend/src/API/API.test.ts diff --git a/frontend/src/API/API.test.ts b/frontend/src/API/API.test.ts new file mode 100644 index 0000000..e0a93f6 --- /dev/null +++ b/frontend/src/API/API.test.ts @@ -0,0 +1,88 @@ +import { describe, expect, test } from "@jest/globals"; +import { api } from "../API/API"; +import { NewUser, NewWeeklyReport } from "../Types/goTypes"; + +describe("API", () => { + test("registerUser", async () => { + const user: NewUser = { + username: "lol", // Add the username property + password: "lol", + }; + + const response = await api.registerUser(user); + + expect(response.success).toBe(true); + expect(response.data).toHaveProperty("userId"); + }); + + test("createProject", async () => { + const project = { + name: "Project X", + description: "This is a test project", + }; + const token = + "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhZG1pbiI6ZmFsc2UsImV4cCI6MTcxMDk0MDIwMywibmFtZSI6InJyZ3VtZHpwbWMifQ.V9NHoYMYV61t"; + + const response = await api.createProject(project, token); + + expect(response.success).toBe(true); + expect(response.data).toHaveProperty("projectId"); + }); + + test("renewToken", async () => { + const refreshToken = + "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhZG1pbiI6ZmFsc2UsImV4cCI6MTcxMDk0MDIwMywibmFtZSI6InJyZ3VtZHpwbWMifQ.V9NHoYMYV61t"; + + const response = await api.renewToken(refreshToken); + + expect(response.success).toBe(true); + expect(response.data).toHaveProperty("accessToken"); + expect(response.data).toHaveProperty("refreshToken"); + }); + + test("getUserProjects", async () => { + const token = + "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhZG1pbiI6ZmFsc2UsImV4cCI6MTcxMDk0MDIwMywibmFtZSI6InJyZ3VtZHpwbWMifQ.V9NHoYMYV61t"; + const username = "rrgumdzpmc"; + const response = await api.getUserProjects(username, token); + + expect(response.success).toBe(true); + expect(response.data).toHaveProperty("projects"); + }); + + test("submitWeeklyReport", async () => { + const report: NewWeeklyReport = { + projectName: "vtmosxssst", + week: 2, + developmentTime: 40, + meetingTime: 5, + adminTime: 2, + ownWorkTime: 10, + studyTime: 12, + testingTime: 41, + }; + const token = + "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhZG1pbiI6ZmFsc2UsImV4cCI6MTcxMDk0MDIwMywibmFtZSI6InJyZ3VtZHpwbWMifQ.V9NHoYMYV61t"; + + const response = await api.submitWeeklyReport(report, token); + + expect(response.success).toBe(true); + expect(response.data).toHaveProperty( + "message", + "Report submitted successfully", + ); + }); + + test("login", async () => { + const user: NewUser = { + username: "rrgumdzpmc", // Add an empty string value for the username property + password: "always_same", + }; + + const response = await api.login(user); + + expect(response.success).toBe(true); + expect(response.data).toHaveProperty("accessToken"); + expect(response.data).toHaveProperty("refreshToken"); + }); +});