diff --git a/frontend/__tests__/routes/login.test.tsx b/frontend/__tests__/routes/login.test.tsx
index f88b5184b5..85a262fdb4 100644
--- a/frontend/__tests__/routes/login.test.tsx
+++ b/frontend/__tests__/routes/login.test.tsx
@@ -7,14 +7,19 @@ import LoginPage from "#/routes/login";
import OptionService from "#/api/option-service/option-service.api";
import AuthService from "#/api/auth-service/auth-service.api";
-const { useEmailVerificationMock } = vi.hoisted(() => ({
- useEmailVerificationMock: vi.fn(() => ({
- emailVerified: false,
- hasDuplicatedEmail: false,
- emailVerificationModalOpen: false,
- setEmailVerificationModalOpen: vi.fn(),
- })),
-}));
+const { useEmailVerificationMock, resendEmailVerificationMock } = vi.hoisted(
+ () => ({
+ useEmailVerificationMock: vi.fn(() => ({
+ emailVerified: false,
+ hasDuplicatedEmail: false,
+ emailVerificationModalOpen: false,
+ setEmailVerificationModalOpen: vi.fn(),
+ userId: null as string | null,
+ resendEmailVerification: vi.fn(),
+ })),
+ resendEmailVerificationMock: vi.fn(),
+ }),
+);
vi.mock("#/hooks/use-github-auth-url", () => ({
useGitHubAuthUrl: () => "https://github.com/login/oauth/authorize",
@@ -348,6 +353,8 @@ describe("LoginPage", () => {
hasDuplicatedEmail: false,
emailVerificationModalOpen: false,
setEmailVerificationModalOpen: vi.fn(),
+ userId: null,
+ resendEmailVerification: resendEmailVerificationMock,
});
render(, {
@@ -367,6 +374,8 @@ describe("LoginPage", () => {
hasDuplicatedEmail: true,
emailVerificationModalOpen: false,
setEmailVerificationModalOpen: vi.fn(),
+ userId: null,
+ resendEmailVerification: resendEmailVerificationMock,
});
render(, {
@@ -379,6 +388,41 @@ describe("LoginPage", () => {
).toBeInTheDocument();
});
});
+
+ it("should pass userId to EmailVerificationModal when userId is provided", async () => {
+ const user = userEvent.setup();
+ const testUserId = "test-user-id-123";
+ const setEmailVerificationModalOpen = vi.fn();
+
+ useEmailVerificationMock.mockReturnValue({
+ emailVerified: false,
+ hasDuplicatedEmail: false,
+ emailVerificationModalOpen: true,
+ setEmailVerificationModalOpen,
+ userId: testUserId,
+ resendEmailVerification: resendEmailVerificationMock,
+ });
+
+ render(, {
+ wrapper: createWrapper(),
+ });
+
+ await waitFor(() => {
+ expect(
+ screen.getByText("AUTH$PLEASE_CHECK_EMAIL_TO_VERIFY"),
+ ).toBeInTheDocument();
+ });
+
+ const resendButton = screen.getByRole("button", {
+ name: /SETTINGS\$RESEND_VERIFICATION/i,
+ });
+ await user.click(resendButton);
+
+ expect(resendEmailVerificationMock).toHaveBeenCalledWith({
+ userId: testUserId,
+ isAuthFlow: true,
+ });
+ });
});
describe("Loading States", () => {
@@ -415,6 +459,15 @@ describe("LoginPage", () => {
describe("Terms and Privacy", () => {
it("should display Terms and Privacy notice", async () => {
+ useEmailVerificationMock.mockReturnValue({
+ emailVerified: false,
+ hasDuplicatedEmail: false,
+ emailVerificationModalOpen: false,
+ setEmailVerificationModalOpen: vi.fn(),
+ userId: null as string | null,
+ resendEmailVerification: resendEmailVerificationMock,
+ });
+
render(, {
wrapper: createWrapper(),
});
diff --git a/frontend/src/routes/login.tsx b/frontend/src/routes/login.tsx
index 08758991b3..35537db54d 100644
--- a/frontend/src/routes/login.tsx
+++ b/frontend/src/routes/login.tsx
@@ -20,6 +20,7 @@ export default function LoginPage() {
recaptchaBlocked,
emailVerificationModalOpen,
setEmailVerificationModalOpen,
+ userId,
} = useEmailVerification();
const gitHubAuthUrl = useGitHubAuthUrl({
@@ -77,6 +78,7 @@ export default function LoginPage() {
onClose={() => {
setEmailVerificationModalOpen(false);
}}
+ userId={userId}
/>
)}
>