Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import 'package:clean_architecture_1/core/error/exceptions.dart';
- import 'package:clean_architecture_1/core/error/failures.dart';
- import 'package:clean_architecture_1/core/platform/network_info.dart';
- import 'package:clean_architecture_1/features/number_trivia/data/datasources/number_trivia_local_data_source.dart';
- import 'package:clean_architecture_1/features/number_trivia/data/datasources/number_trivia_remote_data_source.dart';
- import 'package:clean_architecture_1/features/number_trivia/data/models/number_trivia_model.dart';
- import 'package:clean_architecture_1/features/number_trivia/data/repositories/number_trivia_repository_impl.dart';
- import 'package:clean_architecture_1/features/number_trivia/domain/entities/number_trivia.dart';
- import 'package:dartz/dartz.dart';
- import 'package:mockito/mockito.dart';
- import 'package:flutter_test/flutter_test.dart';
- import 'package:mockito/annotations.dart';
- import 'number_trivia_repository_impl_test.mocks.dart';
- @GenerateMocks(
- [NumberTriviaRemoteDataSource, NumberTriviaLocalDataSource, NetworkInfo])
- void main() {
- MockNumberTriviaRemoteDataSource mockRemoteDataSource =
- MockNumberTriviaRemoteDataSource();
- MockNumberTriviaLocalDataSource mockLocalDataSource =
- MockNumberTriviaLocalDataSource();
- MockNetworkInfo mockNetworkInfo = MockNetworkInfo();
- NumberTriviaRepositoryImpl repository = NumberTriviaRepositoryImpl(
- remoteDataSource: mockRemoteDataSource,
- localDataSource: mockLocalDataSource,
- networkInfo: mockNetworkInfo
- );
- group('getConcreteNumberTrivia', () {
- final tNumber = 1;
- final tNumberTriviaModel = NumberTriviaModel(number: tNumber, text: 'test trivia');
- final NumberTrivia tNumberTrivia = tNumberTriviaModel;
- // test(
- // 'should check if device is online',
- // () async {
- // // arrange
- // when(mockNetworkInfo.isConnected).thenAnswer((_) async => true);
- // // act
- // repository.getConcreteNumberTrivia(tNumber);
- // // assert
- // verify(mockNetworkInfo.isConnected);
- // },
- // );
- group('device is online', () {
- setUp(() {
- when(mockNetworkInfo.isConnected).thenAnswer((_) async => true);
- });
- test(
- 'should return remote data when call to remote data is successful',
- () async {
- // arrange
- when(mockRemoteDataSource.getConcreteNumberTrivia(any))
- .thenAnswer((_) async => tNumberTriviaModel);
- // act
- final result = await repository.getConcreteNumberTrivia(tNumber);
- // assert
- verify(mockRemoteDataSource.getConcreteNumberTrivia(tNumber));
- expect(result, equals(Right(tNumberTrivia)));
- },
- );
- test(
- 'should cache the data locally when call to remote data is successful',
- () async {
- // arrange
- when(mockRemoteDataSource.getConcreteNumberTrivia(any))
- .thenAnswer((_) async => tNumberTriviaModel);
- // act
- await repository.getConcreteNumberTrivia(tNumber);
- // assert
- verify(mockRemoteDataSource.getConcreteNumberTrivia(tNumber));
- verify(mockLocalDataSource.cacheNumberTrivia(tNumberTriviaModel));
- },
- );
- test(
- 'should return server failure when call to remote data is unsuccessful',
- () async {
- // arrange
- when(mockRemoteDataSource.getConcreteNumberTrivia(any))
- // .thenThrow((_) async => ServerException());
- .thenThrow(ServerException());
- // act
- final result = await repository.getConcreteNumberTrivia(tNumber);
- // assert
- verify(mockRemoteDataSource.getConcreteNumberTrivia(tNumber));
- // verifyZeroInteractions(mockLocalDataSource);
- // expect(result, equals(Left(ServerFailure())));
- },
- );
- });
- //
- group('device is offline', () {
- when(mockNetworkInfo.isConnected).thenAnswer((_) async => false);
- });
- });
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement