feat(auth): add sendCodeSilently with isSending state
This commit is contained in:
@@ -2,7 +2,10 @@ import 'package:bloc_test/bloc_test.dart';
|
||||
import 'package:flutter_test/flutter_test.dart';
|
||||
import 'package:formz/formz.dart';
|
||||
import 'package:mocktail/mocktail.dart';
|
||||
import 'package:social_app/core/form_inputs/form_inputs.dart';
|
||||
import 'package:social_app/features/auth/data/auth_repository.dart';
|
||||
import 'package:social_app/features/auth/data/models/auth_response.dart';
|
||||
import 'package:social_app/features/auth/data/models/signup_request.dart';
|
||||
import 'package:social_app/features/auth/presentation/cubits/register_cubit.dart';
|
||||
|
||||
class MockAuthRepository extends Mock implements AuthRepository {}
|
||||
@@ -14,6 +17,9 @@ void main() {
|
||||
setUp(() {
|
||||
mockRepository = MockAuthRepository();
|
||||
cubit = RegisterCubit(mockRepository);
|
||||
registerFallbackValue(
|
||||
SignupStartRequest(username: '', email: '', password: ''),
|
||||
);
|
||||
});
|
||||
|
||||
tearDown(() {
|
||||
@@ -46,4 +52,39 @@ void main() {
|
||||
expect: () => [isA<RegisterState>()],
|
||||
);
|
||||
});
|
||||
|
||||
group('sendCodeSilently', () {
|
||||
blocTest<RegisterCubit, RegisterState>(
|
||||
'sets isSending to true then false on success',
|
||||
build: () => cubit,
|
||||
seed: () => RegisterState(
|
||||
username: const Username.dirty('testuser'),
|
||||
email: const Email.dirty('test@example.com'),
|
||||
password: const Password.dirty('password123'),
|
||||
),
|
||||
setUp: () {
|
||||
when(() => mockRepository.signupStart(any())).thenAnswer(
|
||||
(_) async => SignupStartResponse(
|
||||
status: 'ok',
|
||||
email: 'test@example.com',
|
||||
message: 'Code sent',
|
||||
),
|
||||
);
|
||||
},
|
||||
act: (c) => c.sendCodeSilently(),
|
||||
expect: () => [
|
||||
predicate<RegisterState>((state) => state.isSending == true),
|
||||
predicate<RegisterState>(
|
||||
(state) =>
|
||||
state.isSending == false &&
|
||||
state.codeSent == true &&
|
||||
state.pendingEmail == 'test@example.com' &&
|
||||
state.errorMessage == null,
|
||||
),
|
||||
],
|
||||
verify: (_) {
|
||||
verify(() => mockRepository.signupStart(any())).called(1);
|
||||
},
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user