mirror of
https://github.com/immich-app/immich.git
synced 2024-11-15 18:08:48 -07:00
8847ebeef2
* chore(deps): use mocktail instead of mockito * refactor: move stubs to fixtures/ * fix: fetch assetsortmode based on storeindex * test: validate AlbumSortByOptions provider --------- Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
72 lines
2.2 KiB
Dart
72 lines
2.2 KiB
Dart
import 'package:flutter_test/flutter_test.dart';
|
|
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
|
import 'package:immich_mobile/modules/backup/models/backup_album.model.dart';
|
|
import 'package:immich_mobile/modules/backup/models/duplicated_asset.model.dart';
|
|
import 'package:immich_mobile/shared/models/album.dart';
|
|
import 'package:immich_mobile/shared/models/android_device_asset.dart';
|
|
import 'package:immich_mobile/shared/models/asset.dart';
|
|
import 'package:immich_mobile/shared/models/etag.dart';
|
|
import 'package:immich_mobile/shared/models/exif_info.dart';
|
|
import 'package:immich_mobile/shared/models/ios_device_asset.dart';
|
|
import 'package:immich_mobile/shared/models/logger_message.model.dart';
|
|
import 'package:immich_mobile/shared/models/store.dart';
|
|
import 'package:immich_mobile/shared/models/user.dart';
|
|
import 'package:isar/isar.dart';
|
|
import 'package:mocktail/mocktail.dart';
|
|
|
|
// Listener Mock to test when a provider notifies its listeners
|
|
class ListenerMock<T> extends Mock {
|
|
// ignore: avoid-declaring-call-method
|
|
void call(T? previous, T next);
|
|
}
|
|
|
|
final class TestUtils {
|
|
const TestUtils._();
|
|
|
|
/// Downloads Isar binaries (if required) and initializes a new Isar db
|
|
static Future<Isar> initIsar() async {
|
|
await Isar.initializeIsarCore(download: true);
|
|
final db = await Isar.open(
|
|
[
|
|
StoreValueSchema,
|
|
ExifInfoSchema,
|
|
AssetSchema,
|
|
AlbumSchema,
|
|
UserSchema,
|
|
BackupAlbumSchema,
|
|
DuplicatedAssetSchema,
|
|
LoggerMessageSchema,
|
|
ETagSchema,
|
|
AndroidDeviceAssetSchema,
|
|
IOSDeviceAssetSchema,
|
|
],
|
|
maxSizeMiB: 256,
|
|
directory: ".",
|
|
);
|
|
// Clear and close db on test end
|
|
addTearDown(() async {
|
|
await db.writeTxn(() => db.clear());
|
|
await db.close();
|
|
});
|
|
return db;
|
|
}
|
|
|
|
/// Creates a new ProviderContainer to test Riverpod providers
|
|
static ProviderContainer createContainer({
|
|
ProviderContainer? parent,
|
|
List<Override> overrides = const [],
|
|
List<ProviderObserver>? observers,
|
|
}) {
|
|
final container = ProviderContainer(
|
|
parent: parent,
|
|
overrides: overrides,
|
|
observers: observers,
|
|
);
|
|
|
|
// Dispose on test end
|
|
addTearDown(container.dispose);
|
|
|
|
return container;
|
|
}
|
|
}
|