refactor(mobile): interfaces refactor (#19415)

* refactor(mobile): interfaces refactor

* generate files
This commit is contained in:
Alex
2025-06-23 11:27:44 -05:00
committed by GitHub
parent ce14324c97
commit 1923f1a887
58 changed files with 106 additions and 356 deletions
@@ -3,9 +3,9 @@ import 'dart:io';
import 'dart:typed_data';
import 'package:flutter_test/flutter_test.dart';
import 'package:immich_mobile/domain/interfaces/local_album.interface.dart';
import 'package:immich_mobile/domain/models/asset/base_asset.model.dart';
import 'package:immich_mobile/domain/services/hash.service.dart';
import 'package:immich_mobile/infrastructure/repositories/local_album.repository.dart';
import 'package:mocktail/mocktail.dart';
import '../../fixtures/album.stub.dart';
@@ -1,11 +1,11 @@
import 'package:collection/collection.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:immich_mobile/constants/constants.dart';
import 'package:immich_mobile/domain/interfaces/log.interface.dart';
import 'package:immich_mobile/domain/interfaces/store.interface.dart';
import 'package:immich_mobile/domain/models/log.model.dart';
import 'package:immich_mobile/domain/models/store.model.dart';
import 'package:immich_mobile/domain/services/log.service.dart';
import 'package:immich_mobile/infrastructure/repositories/log.repository.dart';
import 'package:immich_mobile/infrastructure/repositories/store.repository.dart';
import 'package:logging/logging.dart';
import 'package:mocktail/mocktail.dart';
@@ -28,8 +28,8 @@ final _kWarnLog = LogMessage(
void main() {
late LogService sut;
late ILogRepository mockLogRepo;
late IStoreRepository mockStoreRepo;
late IsarLogRepository mockLogRepo;
late IsarStoreRepository mockStoreRepo;
setUp(() async {
mockLogRepo = MockLogRepository();
@@ -1,9 +1,9 @@
import 'dart:async';
import 'package:flutter_test/flutter_test.dart';
import 'package:immich_mobile/domain/interfaces/store.interface.dart';
import 'package:immich_mobile/domain/models/store.model.dart';
import 'package:immich_mobile/domain/services/store.service.dart';
import 'package:immich_mobile/infrastructure/repositories/store.repository.dart';
import 'package:mocktail/mocktail.dart';
import '../../infrastructure/repository.mock.dart';
@@ -15,7 +15,7 @@ final _kBackupFailedSince = DateTime.utc(2023);
void main() {
late StoreService sut;
late IStoreRepository mockStoreRepo;
late IsarStoreRepository mockStoreRepo;
late StreamController<StoreDto<Object>> controller;
setUp(() async {
@@ -3,9 +3,9 @@
import 'dart:async';
import 'package:flutter_test/flutter_test.dart';
import 'package:immich_mobile/domain/interfaces/sync_api.interface.dart';
import 'package:immich_mobile/domain/models/sync_event.model.dart';
import 'package:immich_mobile/domain/services/sync_stream.service.dart';
import 'package:immich_mobile/infrastructure/repositories/sync_api.repository.dart';
import 'package:immich_mobile/infrastructure/repositories/sync_stream.repository.dart';
import 'package:mocktail/mocktail.dart';
@@ -31,7 +31,7 @@ class _MockCancellationWrapper extends Mock implements _CancellationWrapper {}
void main() {
late SyncStreamService sut;
late SyncStreamRepository mockSyncStreamRepo;
late ISyncApiRepository mockSyncApiRepo;
late SyncApiRepository mockSyncApiRepo;
late Function(List<SyncEvent>, Function()) handleEventsCallback;
late _MockAbortCallbackWrapper mockAbortCallbackWrapper;
@@ -1,5 +1,4 @@
import 'package:flutter_test/flutter_test.dart';
import 'package:immich_mobile/domain/interfaces/exif.interface.dart';
import 'package:immich_mobile/infrastructure/entities/exif.entity.dart';
import 'package:immich_mobile/infrastructure/repositories/exif.repository.dart';
import 'package:isar/isar.dart';
@@ -20,7 +19,7 @@ Future<void> _populateExifTable(Isar db) async {
void main() {
late Isar db;
late IExifInfoRepository sut;
late IsarExifRepository sut;
setUp(() async {
db = await TestUtils.initIsar();
@@ -1,9 +1,9 @@
import 'package:drift/drift.dart';
import 'package:drift/native.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:immich_mobile/domain/interfaces/local_album.interface.dart';
import 'package:immich_mobile/domain/models/local_album.model.dart';
import 'package:immich_mobile/infrastructure/repositories/db.repository.dart';
import 'package:immich_mobile/infrastructure/repositories/local_album.repository.dart';
import '../../test_utils/medium_factory.dart';
@@ -24,7 +24,7 @@ void main() {
group('getAll', () {
test('sorts albums by backupSelection & isIosSharedAlbum', () async {
final localAlbumRepo =
mediumFactory.getRepository<ILocalAlbumRepository>();
mediumFactory.getRepository<DriftLocalAlbumRepository>();
await localAlbumRepo.upsert(
mediumFactory.localAlbum(
id: '1',
@@ -1,5 +1,4 @@
import 'package:flutter_test/flutter_test.dart';
import 'package:immich_mobile/domain/interfaces/store.interface.dart';
import 'package:immich_mobile/domain/models/store.model.dart';
import 'package:immich_mobile/domain/models/user.model.dart';
import 'package:immich_mobile/infrastructure/entities/store.entity.dart';
@@ -42,7 +41,7 @@ Future<void> _populateStore(Isar db) async {
void main() {
late Isar db;
late IStoreRepository sut;
late IsarStoreRepository sut;
setUp(() async {
db = await TestUtils.initIsar();
+16 -14
View File
@@ -1,33 +1,35 @@
import 'package:immich_mobile/domain/interfaces/device_asset.interface.dart';
import 'package:immich_mobile/domain/interfaces/local_album.interface.dart';
import 'package:immich_mobile/domain/interfaces/local_asset.interface.dart';
import 'package:immich_mobile/domain/interfaces/log.interface.dart';
import 'package:immich_mobile/domain/interfaces/storage.interface.dart';
import 'package:immich_mobile/domain/interfaces/store.interface.dart';
import 'package:immich_mobile/domain/interfaces/sync_api.interface.dart';
import 'package:immich_mobile/infrastructure/repositories/device_asset.repository.dart';
import 'package:immich_mobile/infrastructure/repositories/local_album.repository.dart';
import 'package:immich_mobile/infrastructure/repositories/local_asset.repository.dart';
import 'package:immich_mobile/infrastructure/repositories/log.repository.dart';
import 'package:immich_mobile/infrastructure/repositories/storage.repository.dart';
import 'package:immich_mobile/infrastructure/repositories/store.repository.dart';
import 'package:immich_mobile/infrastructure/repositories/sync_api.repository.dart';
import 'package:immich_mobile/infrastructure/repositories/sync_stream.repository.dart';
import 'package:immich_mobile/infrastructure/repositories/user.repository.dart';
import 'package:immich_mobile/infrastructure/repositories/user_api.repository.dart';
import 'package:mocktail/mocktail.dart';
class MockStoreRepository extends Mock implements IStoreRepository {}
class MockStoreRepository extends Mock implements IsarStoreRepository {}
class MockLogRepository extends Mock implements ILogRepository {}
class MockLogRepository extends Mock implements IsarLogRepository {}
class MockIsarUserRepository extends Mock implements IsarUserRepository {}
class MockDeviceAssetRepository extends Mock
implements IDeviceAssetRepository {}
implements IsarDeviceAssetRepository {}
class MockSyncStreamRepository extends Mock implements SyncStreamRepository {}
class MockLocalAlbumRepository extends Mock implements ILocalAlbumRepository {}
class MockLocalAlbumRepository extends Mock
implements DriftLocalAlbumRepository {}
class MockLocalAssetRepository extends Mock implements ILocalAssetRepository {}
class MockLocalAssetRepository extends Mock
implements DriftLocalAssetRepository {}
class MockStorageRepository extends Mock implements IStorageRepository {}
class MockStorageRepository extends Mock implements StorageRepository {}
// API Repos
class MockUserApiRepository extends Mock implements UserApiRepository {}
class MockSyncApiRepository extends Mock implements ISyncApiRepository {}
class MockSyncApiRepository extends Mock implements SyncApiRepository {}
+2 -2
View File
@@ -1,4 +1,4 @@
import 'package:immich_mobile/domain/interfaces/exif.interface.dart';
import 'package:immich_mobile/infrastructure/repositories/exif.repository.dart';
import 'package:immich_mobile/repositories/partner_api.repository.dart';
import 'package:immich_mobile/repositories/album_media.repository.dart';
import 'package:immich_mobile/repositories/album_api.repository.dart';
@@ -21,7 +21,7 @@ class MockAssetRepository extends Mock implements AssetRepository {}
class MockBackupRepository extends Mock implements BackupAlbumRepository {}
class MockExifInfoRepository extends Mock implements IExifInfoRepository {}
class MockExifInfoRepository extends Mock implements IsarExifRepository {}
class MockETagRepository extends Mock implements ETagRepository {}
+2 -2
View File
@@ -6,9 +6,9 @@ import 'package:collection/collection.dart';
import 'package:file/memory.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:immich_mobile/domain/interfaces/device_asset.interface.dart';
import 'package:immich_mobile/domain/models/device_asset.model.dart';
import 'package:immich_mobile/entities/asset.entity.dart';
import 'package:immich_mobile/infrastructure/repositories/device_asset.repository.dart';
import 'package:immich_mobile/services/background.service.dart';
import 'package:immich_mobile/services/hash.service.dart';
import 'package:mocktail/mocktail.dart';
@@ -25,7 +25,7 @@ class MockAssetEntity extends Mock implements AssetEntity {}
void main() {
late HashService sut;
late BackgroundService mockBackgroundService;
late IDeviceAssetRepository mockDeviceAssetRepository;
late IsarDeviceAssetRepository mockDeviceAssetRepository;
setUp(() {
mockBackgroundService = MockBackgroundService();
+1 -2
View File
@@ -1,6 +1,5 @@
import 'dart:math';
import 'package:immich_mobile/domain/interfaces/local_album.interface.dart';
import 'package:immich_mobile/domain/models/asset/base_asset.model.dart';
import 'package:immich_mobile/domain/models/local_album.model.dart';
import 'package:immich_mobile/infrastructure/repositories/db.repository.dart';
@@ -56,7 +55,7 @@ class MediumFactory {
T getRepository<T>() {
switch (T) {
case const (ILocalAlbumRepository):
case const (DriftLocalAlbumRepository):
return DriftLocalAlbumRepository(_db) as T;
default:
throw Exception('Unknown repository: $T');