How to write tests for this hooks using Jest/RTL?
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 25/100
- Tipo di issue
- Documentazione
- Chiarezza
- Da chiarire
- Stato di attività
- Ferma
- Stack tecnologico
- firebase, react, typescript
- Ambito
- authentication, frontend, testing
Direzione di ricerca
Parti dal componente SignInForm mostrato e dal relativo hook useSignInWithEmail, quindi esamina come sono configurati Jest e React Testing Library nel progetto. Il risultato richiesto è una guida o dei test che coprano l’inserimento dell’e-mail e della password, l’invio di Sign In, l’osservazione di isLoading e la ricezione di un utente autenticato.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
How can I write tests for this, I've tried mocking the hooks but nothing works, I'd like to start with a simple test flow:
-> Type on e-mail input ✅
-> Type on password input ✅
-> Click the Sign In button ✅
-> Wait for hook return isLoading:true 🚫
Another test example that I've tried
-> Type on e-mail input ✅
-> Type on password input ✅
-> Click the Sign In button ✅
-> Wait for hook return authenticated user object 🚫
Thank you! ❤️
I have the following code:
import { Button } from '@suwilo/ui';
import { AuthError, EmailAuthProvider } from 'firebase/auth';
import { useSignInWithEmail } from '../../hooks/useSignInWithEmail';
import { Form, Formik, FormikHelpers } from 'formik';
import * as Yup from 'yup';
import { useTranslation } from 'react-i18next';
import { Input } from '../Input/Input';
type SignInFormProps = { email: string; password: string };
type CodeProps = {
[name: string]: [string, string];
};
export const SignInForm = () => {
const { mutate: login } = useSignInWithEmail();
const { t } = useTranslation();
const initialValues = {
email: '',
password: '',
};
const schema = Yup.object().shape({
email: Yup.string()
.email(t('@SignInForm.email-invalid'))
.trim()
.required(t('@SignInForm.email-required')),
password: Yup.string().required(t('@SignInForm.password-required')).trim(),
});
const onSubmit = (
values: SignInFormProps,
actions: FormikHelpers<SignInFormProps>
) => {
const credentials = EmailAuthProvider.credential(
values.email,
values.password
);
const onError = (error: AuthError) => {
const codes: CodeProps = {
'auth/user-not-found': ['email', t('firebase.auth/user-not-found')],
'auth/wrong-password': ['password', t('firebase.auth/password-wrong')],
};
const args = codes[error.code];
actions.setFieldError(...args);
};
login(credentials, {
onError,
});
};
return (
<Formik
initialValues={initialValues}
validationSchema={schema}
onSubmit={onSubmit}
>
{() => (
<Form className="mt-8 grid grid-cols-6 gap-6">
<div className="col-span-6">
<Input
type="email"
id="Email"
name="email"
required
label={t('@SignInForm.email')}
placeholder={t('@SignInForm.email')}
/>
</div>
<div className="col-span-6">
<Input
type="password"
id="Password"
required
name="password"
label={t('@SignInForm.password')}
placeholder={t('@SignInForm.password')}
/>
</div>
<div className="col-span-6">
<a className="text-sm text-primary-500 mx-1 hover:cursor-pointer hover:text-primary-700">
{t('@SignInForm.forgot-password')}
</a>
</div>
<div className="col-span-6">
<Button className="w-full" type="submit">
{t('@SignInForm.sign-in')}
</Button>
</div>
<div className="col-span-6">
<hr className="border-gray-100" />
</div>
</Form>
)}
</Formik>
);
};
- Lingua principale
- TypeScript
- Stelle
- 462
- Fork
- 70
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Nessun modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di invertase/tanstack-query-firebase
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 48/100
invertase/tanstack-query-firebase#202 · 5 commenti · 2 reazioni ·
-
enhancement
Difficoltà 5/5 Più di una settimana Idoneità per principianti 25/100
invertase/tanstack-query-firebase#131 · 1 commento ·
-
react-query-firebase
Difficoltà 4/5 3-5 giorni Idoneità per principianti 35/100
-
react-query-firebase
Difficoltà 3/5 1-2 giorni Idoneità per principianti 20/100
-
Enabled option errorApertareact-query-firebase
Difficoltà 4/5 3-5 giorni Idoneità per principianti 25/100
invertase/tanstack-query-firebase#90 · 1 commento ·
Tutte le issue di invertase/tanstack-query-firebase
Issue simili
-
Mend: dependency security vulnerability untriaged
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
opensearch-project/security-dashboards-plugin#2545 ·
I maintainer di solito rispondono entro 1 giorno
-
Add: Dream TR SDApertacheck:passed streams:add
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
I maintainer di solito rispondono entro 1 giorno
-
doctor integrity sample scans soft-deleted pages on Postgres (batch path has no deleted_at filter)Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 72/100
SocialGouv/egapro#4672 · 1 commento ·
I maintainer di solito rispondono entro 2 giorni
-
area:agents area:tui bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 74/100
anthropics/claude-code#98358 ·
I maintainer di solito rispondono entro 1 giorno