Files
immich/mobile/test/unit/services/remote_album_service_test.dart
T

49 lines
1.5 KiB
Dart

import 'package:flutter_test/flutter_test.dart';
import 'package:immich_mobile/domain/services/remote_album.service.dart';
import 'package:mocktail/mocktail.dart';
import '../../service.mocks.dart';
import '../mocks.dart';
void main() {
late RemoteAlbumService sut;
final mocks = RepositoryMocks();
setUpAll(() {
registerFallbackValue(<String>[]);
});
setUp(() {
sut = RemoteAlbumService(mocks.remoteAlbum, mocks.albumApi, MockForegroundUploadService());
});
tearDown(() {
mocks.resetAll();
});
group('RemoteAlbumService', () {
group('removeAssets', () {
test('persists only the assets the server actually removed, not the whole request', () async {
const albumId = 'album-1';
const requested = ['asset-1', 'asset-2', 'asset-3'];
const removed = ['asset-1', 'asset-3'];
// The server rejected 'asset-2'
when(
() => mocks.albumApi.removeAssets(albumId, requested),
).thenAnswer((_) async => (removed: removed, failed: ['asset-2']));
when(() => mocks.remoteAlbum.removeAssets(albumId, any())).thenAnswer((_) async {});
final count = await sut.removeAssets(albumId: albumId, assetIds: requested);
final persisted =
verify(() => mocks.remoteAlbum.removeAssets(albumId, captureAny())).captured.single as List<String>;
expect(persisted, removed);
expect(persisted, isNot(contains('asset-2')));
expect(count, removed.length);
});
});
});
}