Skip to content
Snippets Groups Projects
Verified Commit fb4430c3 authored by Defendi Alberto's avatar Defendi Alberto
Browse files

Create SignUpForm

parent 4bea6cd3
No related branches found
No related tags found
2 merge requests!56Refined auth flow and new website pages.,!40Sign up/Log in form nest into AuthUser
import React from 'react';
import { render } from '@testing-library/react';
import { SignUpForm } from './SignUpForm';
describe('<SignUpForm />', () => {
it('should render form', () => {
const wrapper = render(<SignUpForm />);
expect(wrapper.queryByTestId('Form')).toBeTruthy();
});
});
import React, { FC } from 'react';
import { SubmitHandler, useForm } from 'react-hook-form';
import { Button } from '@material-ui/core';
import { InputField } from 'components/AuthUser/InputField/InputField';
import { useStyles } from 'components/AuthUser/SignUpForm/useStyles';
export const SignUpForm: FC = () => {
interface FormData {
firstName: string;
lastName: string;
phoneNumber: number;
homeAddress: string;
cardNumber: number;
email: string;
password: string;
}
const { control, errors, handleSubmit } = useForm<FormData>();
const onSubmit: SubmitHandler<FormData> = (values: FormData) => {
// Submit data
};
const classes = useStyles();
return (
<>
<form
className={classes.form}
onSubmit={handleSubmit(onSubmit)}
data-testid="Form"
>
<InputField
name="firstName"
control={control}
rules={{
validate: (value: string) => /^[A-Za-z]$/.test(value),
required: {
value: true,
message: 'firstName is not valid',
},
}}
label="Email"
error={!!errors.firstName}
errorMessage="Insert firstName"
/>
<InputField
name="lastName"
control={control}
rules={{
validate: (value: string) => /^[A-Za-z]$/.test(value),
required: {
value: true,
message: 'lastName is not valid',
},
}}
label="Email"
error={!!errors.lastName}
errorMessage="Insert lastName"
/>
<InputField
name="phoneNumber"
control={control}
rules={{
validate: (value: string) => /^[/d]$/.test(value),
required: {
value: true,
message: 'phoneNumber is not valid',
},
}}
label="Email"
error={!!errors.phoneNumber}
errorMessage="Insert phoneNumber"
/>
<InputField
name="cardNumber"
control={control}
rules={{
validate: (value: string) => /^[/d]$/.test(value),
required: {
value: true,
message: 'cardNumber is not valid',
},
}}
label="cardNumber"
error={!!errors.cardNumber}
errorMessage="Insert cardNumber"
/>
<InputField
name="homeAddress"
control={control}
rules={{
validate: (value: string) => /^[A-Za-z]$/.test(value),
required: {
value: true,
message: 'homeAddress is not valid',
},
}}
label="Email"
error={!!errors.homeAddress}
errorMessage="Insert homeAddress"
/>
<InputField
name="email"
control={control}
rules={{
validate: (value: string) =>
/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}$/i.test(value),
required: {
value: true,
message: 'Email is not valid',
},
}}
label="Email"
error={!!errors.email}
errorMessage="Insert email"
/>
<InputField
name="password"
control={control}
rules={{
minLength: 8,
maxLength: 60,
required: {
value: true,
message: 'Insert valid password',
},
}}
label="Password"
error={!!errors.password}
errorMessage="Insert valid password"
/>
<Button
data-testid="Submit"
type="submit"
fullWidth
variant="contained"
color="primary"
className={classes.submit}
>
Sign Up
</Button>
</form>
</>
);
};
import { createStyles, makeStyles, Theme } from '@material-ui/core/styles';
export const useStyles = makeStyles((theme: Theme) =>
createStyles({
root: {
'& > *': {
margin: theme.spacing(0),
},
},
form: {
width: '100%', // Fix IE 11 issue.
marginTop: theme.spacing(1),
},
submit: {
margin: theme.spacing(3, 0, 2),
},
}),
);
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment