Skip to content

Commit

Permalink
some tests
Browse files Browse the repository at this point in the history
  • Loading branch information
bibash28 committed Jun 26, 2024
1 parent 09e00af commit b27c2b1
Show file tree
Hide file tree
Showing 2 changed files with 127 additions and 0 deletions.
94 changes: 94 additions & 0 deletions test/lang/cubit/lang_cubit_test.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
import 'package:altme/app/app.dart';
import 'package:altme/app/shared/enum/type/language_type.dart';
import 'package:altme/lang/cubit/lang_cubit.dart';
import 'package:altme/lang/cubit/lang_state.dart';
import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:mocktail/mocktail.dart';
import 'package:secure_storage/secure_storage.dart';

class MockSecureStorageProvider extends Mock implements SecureStorageProvider {}

void main() {
late MockSecureStorageProvider mockSecureStorageProvider;
late LangCubit langCubit;

setUp(() {
WidgetsFlutterBinding.ensureInitialized();
mockSecureStorageProvider = MockSecureStorageProvider();
langCubit = LangCubit(secureStorageProvider: mockSecureStorageProvider);
});

tearDown(() {
langCubit.close();
});

group('LangCubit', () {
test('initial state is LangState with Locale(en) and LanguageType.phone',
() {
expect(
langCubit.state,
const LangState(
locale: Locale('en'),
languageType: LanguageType.phone,
),
);
});

test('emits new state with recorded language locale', () async {
when(() => mockSecureStorageProvider.get(SecureStorageKeys.language))
.thenAnswer((_) async => 'es');
when(() =>
mockSecureStorageProvider.set(SecureStorageKeys.language, any()))
.thenAnswer((_) async {});

await langCubit.checkLocale();
expect(
langCubit.state,
const LangState(locale: Locale('es'), languageType: LanguageType.es),
);
});

test('returns LanguageType.phone when no recorded language', () async {
when(() => mockSecureStorageProvider.get(SecureStorageKeys.language))
.thenAnswer((_) async => null);
when(() =>
mockSecureStorageProvider.set(SecureStorageKeys.language, any()))
.thenAnswer((_) async {});

final languageType = await langCubit.getRecordedLanguage();
expect(languageType, LanguageType.phone);
});

test('returns recorded language when available', () async {
when(() => mockSecureStorageProvider.get(SecureStorageKeys.language))
.thenAnswer((_) async => 'es');

final languageType = await langCubit.getRecordedLanguage();
expect(languageType, LanguageType.es);
});

test('returns matching LanguageType enum value', () {
final result = langCubit.getLanguageType('fr', LanguageType.phone);
expect(result, LanguageType.fr);
});

test('returns default LanguageType when no match found', () {
final result = langCubit.getLanguageType('unknown', LanguageType.phone);
expect(result, LanguageType.phone);
});

test('calls secureStorageProvider.set with correct key and value',
() async {
when(() =>
mockSecureStorageProvider.set(SecureStorageKeys.language, any()))
.thenAnswer((_) async {});

await langCubit.recordLanguage('fr');

verify(() =>
mockSecureStorageProvider.set(SecureStorageKeys.language, 'fr'))
.called(1);
});
});
}
33 changes: 33 additions & 0 deletions test/lang/cubit/lang_state_test.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
import 'dart:ui';

import 'package:altme/app/shared/enum/type/language_type.dart';
import 'package:altme/lang/cubit/lang_state.dart';
import 'package:flutter_test/flutter_test.dart';

void main() {
group('LangState', () {
const locale = Locale('en', 'US');
const languageType = LanguageType.en;

test('supports value comparisons', () {
expect(
const LangState(locale: locale, languageType: languageType),
const LangState(locale: locale, languageType: languageType),
);
});

test('copyWith updates locale', () {
const newLocale = Locale('fr', 'FR');
expect(
const LangState(locale: locale, languageType: languageType)
.copyWith(locale: newLocale),
const LangState(locale: newLocale, languageType: languageType),
);
});

test('copyWith with no arguments returns the same instance', () {
const state = LangState(locale: locale, languageType: languageType);
expect(state.copyWith(), state);
});
});
}

0 comments on commit b27c2b1

Please sign in to comment.