This commit is contained in:
shenlong-tanwen
2026-04-29 07:54:06 +07:00
parent 5933664862
commit 4c36716d57
9 changed files with 14 additions and 106 deletions
@@ -1,7 +1,6 @@
import 'package:collection/collection.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:immich_mobile/constants/constants.dart';
import 'package:immich_mobile/domain/models/config/log_config.dart';
import 'package:immich_mobile/domain/models/config/system_config.dart';
import 'package:immich_mobile/domain/models/log.model.dart';
import 'package:immich_mobile/domain/models/metadata_key.dart';
@@ -40,9 +39,7 @@ void main() {
registerFallbackValue(LogLevel.info);
when(() => mockLogRepo.truncate(limit: any(named: 'limit'))).thenAnswer((_) async => {});
when(
() => mockMetadataRepository.systemConfig,
).thenReturn(const SystemConfig(log: LogConfig(level: LogLevel.fine)));
when(() => mockMetadataRepository.systemConfig).thenReturn(const SystemConfig(logLevel: LogLevel.fine));
when(() => mockMetadataRepository.write<LogLevel>(MetadataKey.logLevel, any())).thenAnswer((_) async {});
when(() => mockLogRepo.getAll()).thenAnswer((_) async => []);
when(() => mockLogRepo.insert(any())).thenAnswer((_) async => true);
@@ -32,7 +32,7 @@ void main() {
});
test('systemConfig returns key defaults when DB is empty', () {
expect(sut.systemConfig.log.level, LogLevel.info);
expect(sut.systemConfig.logLevel, LogLevel.info);
});
});
@@ -46,7 +46,7 @@ void main() {
await sut.write(.themeMode, ThemeMode.light);
await sut.write(.logLevel, LogLevel.severe);
expect(sut.appConfig.theme.mode, ThemeMode.light);
expect(sut.systemConfig.log.level, LogLevel.severe);
expect(sut.systemConfig.logLevel, LogLevel.severe);
});
});
@@ -63,21 +63,6 @@ void main() {
});
});
group('clearDomain', () {
test('clears every key in the domain and leaves other domains alone', () async {
await sut.write(.themeMode, ThemeMode.dark);
await sut.write(.logLevel, LogLevel.severe);
await sut.clearDomain(.appConfig);
expect(sut.appConfig.theme.mode, ThemeMode.system);
expect(sut.systemConfig.log.level, LogLevel.severe);
final remainingKeys = (await ctx.db.select(ctx.db.metadataEntity).get()).map((r) => r.key);
expect(remainingKeys, [MetadataKey.logLevel.key]);
});
});
group('refresh', () {
test('picks up rows that were inserted directly into the DB', () async {
await ctx.db
@@ -145,7 +130,7 @@ void main() {
});
test('watchSystemConfig emits the new value after a write', () async {
final expectation = expectLater(sut.watchSystemConfig().map((c) => c.log.level), emitsThrough(LogLevel.warning));
final expectation = expectLater(sut.watchSystemConfig().map((c) => c.logLevel), emitsThrough(LogLevel.warning));
await sut.write(MetadataKey.logLevel, LogLevel.warning);
await expectation;
});
@@ -2,18 +2,15 @@ import 'package:drift/drift.dart' hide isNull;
import 'package:drift/native.dart';
import 'package:flutter/widgets.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:immich_mobile/domain/models/metadata_key.dart';
import 'package:immich_mobile/domain/services/store.service.dart';
import 'package:immich_mobile/infrastructure/repositories/db.repository.dart';
import 'package:immich_mobile/infrastructure/repositories/store.repository.dart';
import 'package:immich_mobile/models/auth/auxilary_endpoint.model.dart';
import 'package:immich_mobile/services/app_settings.service.dart';
import 'package:immich_mobile/services/auth.service.dart';
import 'package:mocktail/mocktail.dart';
import 'package:openapi/api.dart';
import '../domain/service.mock.dart';
import '../infrastructure/repository.mock.dart';
import '../repository.mocks.dart';
import '../service.mocks.dart';
@@ -25,7 +22,6 @@ void main() {
late MockNetworkService networkService;
late MockBackgroundSyncManager backgroundSyncManager;
late MockAppSettingService appSettingsService;
late MockMetadataRepository metadataRepository;
late Drift db;
setUp(() async {
@@ -35,7 +31,6 @@ void main() {
networkService = MockNetworkService();
backgroundSyncManager = MockBackgroundSyncManager();
appSettingsService = MockAppSettingService();
metadataRepository = MockMetadataRepository();
sut = AuthService(
authApiRepository,
@@ -44,7 +39,6 @@ void main() {
networkService,
backgroundSyncManager,
appSettingsService,
metadataRepository,
);
registerFallbackValue(Uri());
@@ -114,40 +108,6 @@ void main() {
});
});
group('logout', () {
setUp(() {
when(() => metadataRepository.clearDomain(MetadataDomain.appConfig)).thenAnswer((_) async {});
});
test('Should logout user', () async {
when(() => authApiRepository.logout()).thenAnswer((_) async => {});
when(() => backgroundSyncManager.cancel()).thenAnswer((_) async => {});
when(() => authRepository.clearLocalData()).thenAnswer((_) => Future.value(null));
when(
() => appSettingsService.setSetting(AppSettingsEnum.enableBackup, false),
).thenAnswer((_) => Future.value(null));
await sut.logout();
verify(() => authApiRepository.logout()).called(1);
verify(() => backgroundSyncManager.cancel()).called(1);
verify(() => authRepository.clearLocalData()).called(1);
});
test('Should clear local data even on server error', () async {
when(() => authApiRepository.logout()).thenThrow(Exception('Server error'));
when(() => backgroundSyncManager.cancel()).thenAnswer((_) async => {});
when(() => authRepository.clearLocalData()).thenAnswer((_) => Future.value(null));
when(
() => appSettingsService.setSetting(AppSettingsEnum.enableBackup, false),
).thenAnswer((_) => Future.value(null));
await sut.logout();
verify(() => authApiRepository.logout()).called(1);
verify(() => backgroundSyncManager.cancel()).called(1);
verify(() => authRepository.clearLocalData()).called(1);
});
});
group('setOpenApiServiceEndpoint', () {
setUp(() {
when(() => networkService.getWifiName()).thenAnswer((_) async => 'TestWifi');