import 'package:bloc_test/bloc_test.dart'; import 'package:{{ name }}/features/authentication/domain/entities/user.dart'; import 'package:{{ name }}/features/authentication/domain/usecases/fetch_token.dart'; import 'package:{{ name }}/features/authentication/domain/usecases/keep_token.dart'; import 'package:{{ name }}/features/authentication/domain/usecases/set_user.dart'; import 'package:{{ name }}/features/authentication/presentation/bloc/authentication_bloc.dart'; import 'package:dartz/dartz.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:mockito/mockito.dart'; import '../../factories/user_model_factory.dart'; class MockFetchToken extends Mock implements FetchToken {} class MockKeepToken extends Mock implements KeepToken {} class MockSetUser extends Mock implements SetUser {} void main() { late AuthenticationBloc authenticationBloc; late MockFetchToken mockFetchToken; late MockKeepToken mockKeepToken; late MockSetUser mockSetUser; User user = UserModelFactory().generateFake(); setUp(() { mockFetchToken = MockFetchToken(); mockKeepToken = MockKeepToken(); mockSetUser = MockSetUser(); authenticationBloc = AuthenticationBloc(fetchToken: mockFetchToken, keepToken: mockKeepToken, setUser: mockSetUser); }); test('should initial state equals to AuthenticationInitial', () async { expect(authenticationBloc.state, equals(AuthenticationInitial())); }); group('get user', () { blocTest( 'should return the user if exists', build: () { when(mockSetUser(const UserParams())) .thenAnswer((_) async => Right(user)); return authenticationBloc; }, act: ((bloc) => bloc.add(CheckAuthenticationStatusEvent())), expect: () => [Authenticated(user: user)]); }); }