usecaseTestTemplate function

String usecaseTestTemplate(
  1. String name,
  2. String className,
  3. bool useFreezed
)

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);
    });
  });
}
''';