Advertisement
ajinzrathod

Untitled

May 8th, 2022
574
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Dart 4.06 KB | None | 0 0
  1. import 'package:clean_architecture_1/core/error/exceptions.dart';
  2. import 'package:clean_architecture_1/core/error/failures.dart';
  3. import 'package:clean_architecture_1/core/platform/network_info.dart';
  4. import 'package:clean_architecture_1/features/number_trivia/data/datasources/number_trivia_local_data_source.dart';
  5. import 'package:clean_architecture_1/features/number_trivia/data/datasources/number_trivia_remote_data_source.dart';
  6. import 'package:clean_architecture_1/features/number_trivia/data/models/number_trivia_model.dart';
  7. import 'package:clean_architecture_1/features/number_trivia/data/repositories/number_trivia_repository_impl.dart';
  8. import 'package:clean_architecture_1/features/number_trivia/domain/entities/number_trivia.dart';
  9. import 'package:dartz/dartz.dart';
  10. import 'package:mockito/mockito.dart';
  11. import 'package:flutter_test/flutter_test.dart';
  12. import 'package:mockito/annotations.dart';
  13. import 'number_trivia_repository_impl_test.mocks.dart';
  14.  
  15. @GenerateMocks(
  16.     [NumberTriviaRemoteDataSource, NumberTriviaLocalDataSource, NetworkInfo])
  17. void main() {
  18.    MockNumberTriviaRemoteDataSource mockRemoteDataSource =
  19.       MockNumberTriviaRemoteDataSource();
  20.   MockNumberTriviaLocalDataSource mockLocalDataSource =
  21.       MockNumberTriviaLocalDataSource();
  22.   MockNetworkInfo mockNetworkInfo = MockNetworkInfo();
  23.  
  24.    NumberTriviaRepositoryImpl repository = NumberTriviaRepositoryImpl(
  25.       remoteDataSource: mockRemoteDataSource,
  26.       localDataSource: mockLocalDataSource,
  27.       networkInfo: mockNetworkInfo
  28.   );
  29.  
  30.   group('getConcreteNumberTrivia', () {
  31.     final tNumber = 1;
  32.     final tNumberTriviaModel = NumberTriviaModel(number: tNumber, text: 'test trivia');
  33.     final NumberTrivia tNumberTrivia = tNumberTriviaModel;
  34.  
  35.     // test(
  36.     //   'should check if device is online',
  37.     //       () async {
  38.     //     // arrange
  39.     //     when(mockNetworkInfo.isConnected).thenAnswer((_) async => true);
  40.     //     // act
  41.     //     repository.getConcreteNumberTrivia(tNumber);
  42.     //     // assert
  43.     //     verify(mockNetworkInfo.isConnected);
  44.     //   },
  45.     // );
  46.  
  47.     group('device is online', () {
  48.       setUp(() {
  49.         when(mockNetworkInfo.isConnected).thenAnswer((_) async => true);
  50.       });
  51.  
  52.       test(
  53.           'should return remote data when call to remote data is successful',
  54.           () async {
  55.           // arrange
  56.           when(mockRemoteDataSource.getConcreteNumberTrivia(any))
  57.               .thenAnswer((_) async => tNumberTriviaModel);
  58.  
  59.           // act
  60.           final result = await repository.getConcreteNumberTrivia(tNumber);
  61.  
  62.           // assert
  63.           verify(mockRemoteDataSource.getConcreteNumberTrivia(tNumber));
  64.           expect(result, equals(Right(tNumberTrivia)));
  65.           },
  66.       );
  67.  
  68.       test(
  69.         'should cache the data locally when call to remote data is successful',
  70.             () async {
  71.           // arrange
  72.           when(mockRemoteDataSource.getConcreteNumberTrivia(any))
  73.               .thenAnswer((_) async => tNumberTriviaModel);
  74.  
  75.           // act
  76.           await repository.getConcreteNumberTrivia(tNumber);
  77.  
  78.           // assert
  79.           verify(mockRemoteDataSource.getConcreteNumberTrivia(tNumber));
  80.           verify(mockLocalDataSource.cacheNumberTrivia(tNumberTriviaModel));
  81.         },
  82.       );
  83.  
  84.       test(
  85.         'should return server failure when call to remote data is unsuccessful',
  86.             () async {
  87.           // arrange
  88.           when(mockRemoteDataSource.getConcreteNumberTrivia(any))
  89.               // .thenThrow((_) async => ServerException());
  90.           .thenThrow(ServerException());
  91.  
  92.           // act
  93.           final result = await repository.getConcreteNumberTrivia(tNumber);
  94.  
  95.           // assert
  96.           verify(mockRemoteDataSource.getConcreteNumberTrivia(tNumber));
  97.           // verifyZeroInteractions(mockLocalDataSource);
  98.           // expect(result, equals(Left(ServerFailure())));
  99.         },
  100.       );
  101.     });
  102.     //
  103.     group('device is offline', () {
  104.       when(mockNetworkInfo.isConnected).thenAnswer((_) async => false);
  105.     });
  106.   });
  107. }
  108.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement