usecaseTestTemplate function
Implementation
String usecaseTestTemplate(String name, String className, bool useFreezed) =>
'''
import 'package:flutter_test/flutter_test.dart';
import 'package:mocktail/mocktail.dart';
import '../../../../../lib/features/$name/domain/repositories/${name}_repository.dart';
import '../../../../../lib/features/$name/domain/usecases/get_${name}_usecase.dart';
import '../../../../../lib/features/$name/domain/entities/${name}_entity.dart';
class Mock${className}Repository extends Mock implements ${className}Repository {}
void main() {
late Get${className}UseCase usecase;
late Mock${className}Repository mockRepository;
setUp(() {
mockRepository = Mock${className}Repository();
usecase = Get${className}UseCase(mockRepository);
});
group('Get${className}UseCase', () {
${useFreezed ? '''
const t${className}Entity = ${className}Entity(
id: '123',
name: 'Test Name',
description: 'Test Description',
);
''' : '''
const t${className}Entity = ${className}Entity(id: '123');
'''}
test('should get entity from repository when executed', () async {
when(() => mockRepository.fetchData())
.thenAnswer((_) async => t${className}Entity);
final result = await usecase.call();
expect(result, t${className}Entity);
verify(() => mockRepository.fetchData()).called(1);
});
test('should throw exception when repository fails', () async {
when(() => mockRepository.fetchData()).thenThrow(Exception());
expect(() => usecase.call(), throwsA(isA<Exception>()));
verify(() => mockRepository.fetchData()).called(1);
});
});
}
''';