mirror of
https://github.com/OpenHands/OpenHands.git
synced 2026-03-22 05:37:20 +08:00
refactor(frontend): use shared isValidEmail from input-validation utils
Replace duplicate isValidEmail implementation in form-input.tsx with the existing utility function from #/utils/input-validation to maintain consistency across the codebase. Co-authored-by: openhands <openhands@all-hands.dev>
This commit is contained in:
@@ -1,10 +1,7 @@
|
||||
import { render, screen } from "@testing-library/react";
|
||||
import userEvent from "@testing-library/user-event";
|
||||
import { describe, expect, it, vi } from "vitest";
|
||||
import {
|
||||
FormInput,
|
||||
isValidEmail,
|
||||
} from "#/components/features/onboarding/form-input";
|
||||
import { FormInput } from "#/components/features/onboarding/form-input";
|
||||
|
||||
describe("FormInput", () => {
|
||||
const defaultProps = {
|
||||
@@ -195,21 +192,4 @@ describe("FormInput", () => {
|
||||
expect(input).not.toHaveClass("border-red-500");
|
||||
});
|
||||
});
|
||||
|
||||
describe("isValidEmail", () => {
|
||||
it("should return true for valid emails", () => {
|
||||
expect(isValidEmail("test@example.com")).toBe(true);
|
||||
expect(isValidEmail("user.name@domain.org")).toBe(true);
|
||||
expect(isValidEmail("user+tag@domain.co.uk")).toBe(true);
|
||||
});
|
||||
|
||||
it("should return false for invalid emails", () => {
|
||||
expect(isValidEmail("")).toBe(false);
|
||||
expect(isValidEmail("a@b")).toBe(false);
|
||||
expect(isValidEmail("invalid")).toBe(false);
|
||||
expect(isValidEmail("@domain.com")).toBe(false);
|
||||
expect(isValidEmail("user@")).toBe(false);
|
||||
expect(isValidEmail("user@.com")).toBe(false);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
@@ -1,7 +1,4 @@
|
||||
export const isValidEmail = (email: string): boolean =>
|
||||
/^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+$/.test(
|
||||
email,
|
||||
);
|
||||
import { isValidEmail } from "#/utils/input-validation";
|
||||
|
||||
interface FormInputProps {
|
||||
id: string;
|
||||
|
||||
@@ -5,7 +5,8 @@ import { I18nKey } from "#/i18n/declaration";
|
||||
import { useTracking } from "#/hooks/use-tracking";
|
||||
import { Card } from "#/ui/card";
|
||||
import { Text } from "#/ui/typography";
|
||||
import { FormInput, isValidEmail } from "./form-input";
|
||||
import { isValidEmail } from "#/utils/input-validation";
|
||||
import { FormInput } from "./form-input";
|
||||
import OpenHandsLogoWhite from "#/assets/branding/openhands-logo-white.svg?react";
|
||||
import CloudIcon from "#/icons/cloud-minimal.svg?react";
|
||||
import StackedIcon from "#/icons/stacked.svg?react";
|
||||
|
||||
Reference in New Issue
Block a user