initial commit (migrated)

This commit is contained in:
fiatcode 2025-10-20 16:43:59 +07:00
commit b594facb51
143 changed files with 11057 additions and 0 deletions

View file

@ -0,0 +1,35 @@
import 'package:flutter_test/flutter_test.dart';
import 'package:fpdart/fpdart.dart';
import 'package:kuwot/core/domain/no_params.dart';
import 'package:kuwot/features/quote/domain/entities/background_image.dart';
import 'package:kuwot/features/quote/domain/repositories/quote_repository.dart';
import 'package:kuwot/features/quote/domain/use_cases/get_background_images.dart';
import 'package:mocktail/mocktail.dart';
class MockQuoteRepository extends Mock implements QuoteRepository {}
void main() {
late MockQuoteRepository mockQuoteRepository;
late GetBackgroundImages useCase;
setUp(() {
mockQuoteRepository = MockQuoteRepository();
useCase = GetBackgroundImages(mockQuoteRepository);
});
test('should get background photos', () async {
// arrange
const tImages = <BackgroundImage>[];
when(
() => mockQuoteRepository.getBackgroundImages(),
).thenAnswer((_) async => right(tImages));
// act
final result = await useCase(const NoParams());
// assert
expect(result, right(tImages));
verify(() => mockQuoteRepository.getBackgroundImages());
verifyNoMoreInteractions(mockQuoteRepository);
});
}

View file

@ -0,0 +1,34 @@
import 'package:flutter_test/flutter_test.dart';
import 'package:fpdart/fpdart.dart';
import 'package:kuwot/features/quote/domain/entities/quote.dart';
import 'package:kuwot/features/quote/domain/repositories/quote_repository.dart';
import 'package:kuwot/features/quote/domain/use_cases/get_quote.dart';
import 'package:mocktail/mocktail.dart';
class MockQuoteRepository extends Mock implements QuoteRepository {}
void main() {
late MockQuoteRepository mockQuoteRepository;
late GetQuote useCase;
setUp(() {
mockQuoteRepository = MockQuoteRepository();
useCase = GetQuote(mockQuoteRepository);
});
test('should get quote', () async {
// arrange
const tQuote = Quote(id: 1, author: 'author', body: 'text');
when(
() => mockQuoteRepository.getQuote(any()),
).thenAnswer((_) async => right(tQuote));
// act
final result = await useCase(const GetQuoteParams(null));
// assert
expect(result, right(tQuote));
verify(() => mockQuoteRepository.getQuote(any()));
verifyNoMoreInteractions(mockQuoteRepository);
});
}

View file

@ -0,0 +1,44 @@
import 'package:flutter_test/flutter_test.dart';
import 'package:fpdart/fpdart.dart';
import 'package:kuwot/core/data/local/translation_target_config.dart';
import 'package:kuwot/features/quote/domain/entities/quote.dart';
import 'package:kuwot/features/quote/domain/repositories/quote_repository.dart';
import 'package:kuwot/features/quote/domain/use_cases/get_translated_quote.dart';
import 'package:mocktail/mocktail.dart';
class MockQuoteRepository extends Mock implements QuoteRepository {}
class FakeTranslationTarget extends Fake implements TranslationTarget {}
void main() {
late MockQuoteRepository mockQuoteRepository;
late GetTranslatedQuote useCase;
setUpAll(() {
registerFallbackValue(FakeTranslationTarget());
});
setUp(() {
mockQuoteRepository = MockQuoteRepository();
useCase = GetTranslatedQuote(mockQuoteRepository);
});
test('should get translated quote', () async {
// arrange
const tQuote = Quote(id: 1, author: 'author', body: 'text');
const tTarget = TranslationTarget(id: 'en', name: 'English');
when(
() => mockQuoteRepository.getTranslatedQuote(any(), any()),
).thenAnswer((_) async => right(tQuote));
// act
final result = await useCase(
const GetTranslatedQuoteParams(id: 1, translationTarget: tTarget),
);
// assert
expect(result, right(tQuote));
verify(() => mockQuoteRepository.getTranslatedQuote(tQuote.id, tTarget));
verifyNoMoreInteractions(mockQuoteRepository);
});
}

View file

@ -0,0 +1,35 @@
import 'package:flutter_test/flutter_test.dart';
import 'package:fpdart/fpdart.dart';
import 'package:kuwot/core/domain/no_params.dart';
import 'package:kuwot/features/quote/domain/entities/translation.dart';
import 'package:kuwot/features/quote/domain/repositories/quote_repository.dart';
import 'package:kuwot/features/quote/domain/use_cases/get_translations.dart';
import 'package:mocktail/mocktail.dart';
class MockQuoteRepository extends Mock implements QuoteRepository {}
void main() {
late MockQuoteRepository mockQuoteRepository;
late GetTranslations useCase;
setUp(() {
mockQuoteRepository = MockQuoteRepository();
useCase = GetTranslations(mockQuoteRepository);
});
test('should get translations', () async {
// arrange
final tExpected = <Translation>[];
when(
() => mockQuoteRepository.getTranslations(),
).thenAnswer((_) async => right(tExpected));
// act
final result = await useCase(const NoParams());
// assert
expect(result, right(tExpected));
verify(() => mockQuoteRepository.getTranslations());
verifyNoMoreInteractions(mockQuoteRepository);
});
}