test(auth): add tests for the SignUpCubit update method

This commit is contained in:
Hugo Pointcheval 2022-11-16 15:45:11 -05:00
parent d5698fbffc
commit 54002beaab
Signed by: hugo
GPG Key ID: A9E8E9615379254F

View File

@ -481,5 +481,178 @@ void main() {
], ],
); );
}); });
group('update', () {
final inputsA = <
FormInput<dynamic, FormInputValidator<dynamic, ValidationError>,
dynamic>>[
FormInput(AuthFormField.email, const Email.pure()),
FormInput(AuthFormField.password, const Password.pure())
];
final inputsB = <
FormInput<dynamic, FormInputValidator<dynamic, ValidationError>,
dynamic>>[
FormInput('name', const Name.pure()),
FormInput('phone', const Phone.pure()),
];
final inputsC = <
FormInput<dynamic, FormInputValidator<dynamic, ValidationError>,
dynamic>>[
FormInput(AuthFormField.email, const Email.pure()),
FormInput(AuthFormField.password, const Password.pure()),
FormInput('name', const Name.pure()),
FormInput('phone', const Phone.pure()),
];
blocTest<SignUpCubit<int>, SignUpState>(
'emits no state when apply intersection with the same form',
build: () => SignUpCubit(
authenticationRepository: authenticationRepository,
),
seed: () => SignUpState(
form: WyattFormImpl(
inputsA,
name: AuthFormName.signUpForm,
),
),
act: (cubit) => cubit.update(
WyattFormImpl(inputsA, name: 'otherSignUpForm'),
operation: SetOperation.intersection,
),
expect: () => <SignUpState>[],
);
blocTest<SignUpCubit<int>, SignUpState>(
'emits no state when apply intersection with a form that '
'contains every inputs of actual form',
build: () => SignUpCubit(
authenticationRepository: authenticationRepository,
),
seed: () => SignUpState(
form: WyattFormImpl(
inputsA,
name: AuthFormName.signUpForm,
),
),
act: (cubit) => cubit.update(
WyattFormImpl(inputsC, name: 'otherSignUpForm'),
operation: SetOperation.intersection,
),
expect: () => <SignUpState>[],
);
blocTest<SignUpCubit<int>, SignUpState>(
'emits the form intersection when apply '
'intersection with a smaller form',
build: () => SignUpCubit(
authenticationRepository: authenticationRepository,
),
seed: () => SignUpState(
form: WyattFormImpl(
inputsC,
name: AuthFormName.signUpForm,
),
),
act: (cubit) => cubit.update(
WyattFormImpl(inputsA, name: 'otherSignUpForm'),
operation: SetOperation.intersection,
),
expect: () => <SignUpState>[
SignUpState(
form: WyattFormImpl(
inputsA,
name: AuthFormName.signUpForm,
),
),
],
);
blocTest<SignUpCubit<int>, SignUpState>(
'emits no state when apply union with the same form',
build: () => SignUpCubit(
authenticationRepository: authenticationRepository,
),
seed: () => SignUpState(
form: WyattFormImpl(
inputsA,
name: AuthFormName.signUpForm,
),
),
act: (cubit) => cubit.update(
WyattFormImpl(inputsA, name: 'otherSignUpForm'),
operation: SetOperation.union,
),
expect: () => <SignUpState>[],
);
blocTest<SignUpCubit<int>, SignUpState>(
'emits the form union when apply '
'union with an another form',
build: () => SignUpCubit(
authenticationRepository: authenticationRepository,
),
seed: () => SignUpState(
form: WyattFormImpl(
inputsA,
name: AuthFormName.signUpForm,
),
),
act: (cubit) => cubit.update(
WyattFormImpl(inputsB, name: 'otherSignUpForm'),
operation: SetOperation.union,
),
expect: () => <SignUpState>[
SignUpState(
form: WyattFormImpl(
inputsC,
name: AuthFormName.signUpForm,
),
),
],
);
blocTest<SignUpCubit<int>, SignUpState>(
'emits no state when apply replace with the same form',
build: () => SignUpCubit(
authenticationRepository: authenticationRepository,
),
seed: () => SignUpState(
form: WyattFormImpl(
inputsA,
name: AuthFormName.signUpForm,
),
),
act: (cubit) => cubit.update(
WyattFormImpl(inputsA, name: AuthFormName.signUpForm),
),
expect: () => <SignUpState>[],
);
blocTest<SignUpCubit<int>, SignUpState>(
'emits a state with a new form after the replacement',
build: () => SignUpCubit(
authenticationRepository: authenticationRepository,
),
seed: () => SignUpState(
form: WyattFormImpl(
inputsA,
name: AuthFormName.signUpForm,
),
),
act: (cubit) => cubit.update(
WyattFormImpl(inputsC, name: AuthFormName.signUpForm),
),
expect: () => <SignUpState>[
SignUpState(
form: WyattFormImpl(
inputsC,
name: AuthFormName.signUpForm,
),
),
],
);
});
}); });
} }