Skip to content

Commit

Permalink
[EN-4026] chore(inputs): continue testing
Browse files Browse the repository at this point in the history
  • Loading branch information
emile-bex committed Aug 18, 2023
1 parent ee6a061 commit 4d9f50f
Show file tree
Hide file tree
Showing 24 changed files with 392 additions and 383 deletions.
2 changes: 1 addition & 1 deletion cypress/e2e/parcours-travailler.cy.js
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ describe('Parcours travailler', () => {
'[email protected]'
);
cy.get('[data-testid="form-candidate-inscription-heardAbout"]').click();
cy.get('[data-testid="select-option-LinkedIn"]').click();
cy.get('[data-testid="select-option-linkedin"]').click();
cy.get('[data-testid="form-candidate-inscription-infoCoSubtitle"]').should(
'include.text',
Cypress.env('adresseLocauxParis')
Expand Down
1 change: 0 additions & 1 deletion src/api/api.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@ import {
ContactCandidate,
ContactNewsletter,
ExternalOpportunityDto,
Opportunity,
OpportunityJoin,
OpportunityUserEvent,
PutCandidate,
Expand Down
8 changes: 6 additions & 2 deletions src/api/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,12 @@ import {
import { AdminZone, Department } from 'src/constants/departements';
import { AdminRole, Gender, UserRole } from 'src/constants/users';

export type SocialMedia = 'facebook' | 'linkedin' | 'twitter' |'whatsapp' | 'other';
export type SocialMedia =
| 'facebook'
| 'linkedin'
| 'twitter'
| 'whatsapp'
| 'other';

export const APIRoutes = {
USERS: 'user',
Expand Down Expand Up @@ -80,7 +85,6 @@ export type User = {
hashReset: string;
saltReset: string;
zone: AdminZone;
userToCoach: string;
organization: Organization;
deletedAt?: string;
};
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
import _ from 'lodash';
import React, { useCallback, useEffect, useMemo } from 'react';
import UIkit from 'uikit';
import { ExtractFormSchemaValidation } from '../../../../forms/FormSchema';
import { Api } from 'src/api';
import { User, UserDto } from 'src/api/types';
import { useOnMemberFormSubmit } from 'src/components/backoffice/admin/useOnMemberFormSubmit';
import { ExtractFormSchemaValidation } from 'src/components/forms/FormSchema';
import { formAddUser } from 'src/components/forms/schemas/formAddUser';
import { openModal } from 'src/components/modals/Modal';
import { ModalConfirm } from 'src/components/modals/Modal/ModalGeneric/ModalConfirm';
Expand Down Expand Up @@ -108,7 +108,15 @@ export function EditMemberModal({ user, setUser }: EditMemberModal) {
},
onCancel: () => setFilledUserFields({}),
defaultValues: {
...user,
firstName: user.firstName,
lastName: user.lastName,
email: user.email,
role: user.role,
adminRole: user.adminRole,
gender: user.gender,
phone: user.phone,
address: user.address,
zone: user.zone,
organizationId: organization,
userToLinkId: userToLink,
},
Expand All @@ -121,6 +129,7 @@ export function EditMemberModal({ user, setUser }: EditMemberModal) {
userToLink,
]);

// TODO TEST AND FIX
useEffect(() => {
if (
!_.isEmpty(filledUserFields) &&
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,23 +30,26 @@ export const ExternalCoachMemberList = () => {
useEffect(() => {
if (user) {
const getRelatedUsers = async () => {
const relatedUsersPromises = user.coaches.map(async (relatedUser) => {
const { candidat, ...relatedUserWithoutCandidate } = relatedUser;
try {
const response = await Api.getCVByCandidateId(candidat.id);
return {
...candidat,
candidat: {
...relatedUserWithoutCandidate,
cvs: [response.data],
},
};
} catch (err) {
console.error(err);
}
});
const membersData = await Promise.all(relatedUsersPromises);
setMembers(membersData);
if (user.coaches) {
const relatedUsersPromises = user.coaches.map(async (relatedUser) => {
const { candidat, ...relatedUserWithoutCandidate } = relatedUser;
try {
const response = await Api.getCVByCandidateId(candidat.id);
return {
...candidat,
candidat: {
...relatedUserWithoutCandidate,
cvs: [response.data],
},
};
} catch (err) {
console.error(err);
}
});
const membersData = await Promise.all(relatedUsersPromises);
setMembers(membersData);
}

setLoading(false);
};
getRelatedUsers();
Expand Down
2 changes: 2 additions & 0 deletions src/components/forms/FormFooter/FormFooter.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@ interface FooterFormProps {
formId: string;
noCompulsory?: boolean;
}

// TODO NEW STYLE
export const FormFooter = ({
error,
onSubmit,
Expand Down
111 changes: 62 additions & 49 deletions src/components/forms/FormWithValidation.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,13 @@ import { Text } from 'src/components/utils/Inputs/Text';
import { AnyCantFix } from 'src/utils/Types';
import {
ComponentException,
ExtractFormSchemaValidation,
FormField,
FormSchema,
isFormFieldGroup,
isFormFieldInput,
isFormFieldMultiple,
isFormFieldText,
ExtractFormSchemaValidation,
FormField,
isFormFieldInput,
} from './FormSchema';
import { StyledForm } from './Forms.styles';
import { GenericField } from './fields/GenericField';
Expand Down Expand Up @@ -71,8 +71,8 @@ export function FormWithValidation<S extends FormSchema<AnyCantFix>>({

const onValidForm: SubmitHandler<ExtractFormSchemaValidation<S>> =
useCallback(
(formValues) => {
onSubmit(formValues, (msg) => {
(fieldValues) => {
onSubmit(fieldValues, (msg) => {
setError(msg);
});
},
Expand All @@ -90,34 +90,36 @@ export function FormWithValidation<S extends FormSchema<AnyCantFix>>({
<StyledForm
id={formId}
data-testid="form-with-validation"
onSubmit={handleSubmit(onValidForm, onErrorForm)}
onKeyDown={(ev) => {
if (enterToSubmit) {
if (ev.key === 'Enter') {
handleSubmit(() => onValidForm(ev), onErrorForm);
handleSubmit(onValidForm, onErrorForm)();
}
}
}}
>
<fieldset>
{fields.map((field: FormField<ExtractFormSchemaValidation<S>>, i) => {
const shouldHide = field.hide
? field.hide(getValues)
? field.hide(getValues, fieldOptions)
: field.hidden;

if (shouldHide) {
return null;
}

if (isFormFieldText(field)) {
if (shouldHide) {
return null;
}
const title =
typeof field.title === 'function'
? field.title(getValues)
: field.title;

if (field.component === 'heading') {
return (
<Heading id={`${formId}-${field.id}`} title={title} key={i} />
);
}

if (field.component === 'text') {
return (
<Text id={`${formId}-${field.id}`} title={title} key={i} />
Expand All @@ -126,60 +128,71 @@ export function FormWithValidation<S extends FormSchema<AnyCantFix>>({
}

if (isFormFieldGroup(field)) {
if (shouldHide) {
return null;
}

if (field.component === 'fieldgroup') {
const { fields: childrenFields } = field;

return (
!shouldHide && (
<li key={i}>
<InputsContainer
fields={childrenFields.map((childrenField) => {
<li key={i}>
<InputsContainer
fields={childrenFields.map((childrenField) => {
if (isFormFieldText(childrenField)) {
const shouldHideField = childrenField.hide
? childrenField.hide(getValues)
: childrenField.hidden;

if (isFormFieldText(childrenField)) {
const title =
typeof childrenField.title === 'function'
? childrenField.title(getValues)
: childrenField.title;

if (childrenField.component === 'text') {
return (
<Text
id={`${formId}-${childrenField.id}`}
title={title}
key={i}
/>
);
}
throw new ComponentException(
childrenField.component,
field.component
if (shouldHideField) {
return null;
}

const title =
typeof childrenField.title === 'function'
? childrenField.title(getValues)
: childrenField.title;

if (childrenField.component === 'text') {
return (
<Text
id={`${formId}-${childrenField.id}`}
title={title}
key={i}
/>
);
}

return !shouldHideField ? (
<GenericField
formSchema={formSchema}
watch={watch}
resetField={resetField}
control={control}
field={childrenField}
fieldOptions={fieldOptions}
updateFieldOptions={updateFieldOptions}
getValue={getValues}
/>
) : null;
})}
/>
</li>
)
throw new ComponentException(
childrenField.component,
field.component
);
}

return (
<GenericField
formSchema={formSchema}
watch={watch}
resetField={resetField}
control={control}
field={childrenField}
fieldOptions={fieldOptions}
updateFieldOptions={updateFieldOptions}
getValue={getValues}
/>
);
})}
/>
</li>
);
}
}

if (isFormFieldMultiple(field)) {
if (shouldHide) {
return null;
}

if (field.component === 'multiple-fields') {
const {
fields: multipleFields,
Expand Down
4 changes: 0 additions & 4 deletions src/components/forms/fields/GenericField.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -132,10 +132,6 @@ export function GenericField<S extends FormSchema<AnyCantFix>>({
value,
]);

if (commonProps.hidden) {
return null;
}

if (field.component === 'datepicker') {
return <DatePicker {...commonProps} min={field.min} max={field.max} />;
}
Expand Down
9 changes: 4 additions & 5 deletions src/components/forms/schemas/formAddUser.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import React from 'react';
import { isValidPhoneNumber } from 'react-phone-number-input/mobile';
import { isEmail } from 'validator';
import PlusFilledIcon from 'assets/custom/icons/plus-filled.svg';
import { FormSchema, GetValueType } from '../FormSchema';
import { FormSchema, FormSchemaValidation, GetValueType } from '../FormSchema';
import { Api } from 'src/api';
import { ADMIN_ZONES_FILTERS, AdminZone } from 'src/constants/departements';
import { COLORS } from 'src/constants/styles';
Expand Down Expand Up @@ -31,7 +31,7 @@ const CREATE_NEW_ORGANIZATION_OPTION = {
),
};

type FormAddUserSchema = {
interface FormAddUserSchema extends FormSchemaValidation {
firstName: string;
lastName: string;
role: UserRole;
Expand All @@ -49,7 +49,8 @@ type FormAddUserSchema = {
referentLastNameOrganization: string;
referentPhoneOrganization: string;
referentMailOrganization: string;
};
}

const hideMethod = (getValue: GetValueType<FormAddUserSchema>) => {
const role = getValue('role');
const organizationId = getValue('organizationId')?.value;
Expand Down Expand Up @@ -79,15 +80,13 @@ export const formAddUser: FormSchema<FormAddUserSchema> = {
component: 'text-input',
title: 'Prénom *',
isRequired: true,
maxLength: 80,
},
{
id: 'lastName',
name: 'lastName',
component: 'text-input',
title: 'Nom *',
isRequired: true,
maxLength: 80,
},
],
},
Expand Down
Loading

0 comments on commit 4d9f50f

Please sign in to comment.