mirror of
https://gitlab.com/nkming2/nc-photos.git
synced 2025-02-02 06:46:22 +01:00
Update test cases
This commit is contained in:
parent
ef704c64c2
commit
179ad24419
8 changed files with 430 additions and 763 deletions
|
@ -1,11 +1,6 @@
|
|||
import 'package:bloc_test/bloc_test.dart';
|
||||
import 'package:nc_photos/bloc/list_album_share_outlier.dart';
|
||||
import 'package:nc_photos/ci_string.dart';
|
||||
import 'package:nc_photos/entity/album.dart';
|
||||
import 'package:nc_photos/entity/album/cover_provider.dart';
|
||||
import 'package:nc_photos/entity/album/item.dart';
|
||||
import 'package:nc_photos/entity/album/provider.dart';
|
||||
import 'package:nc_photos/entity/album/sort_provider.dart';
|
||||
import 'package:test/test.dart';
|
||||
|
||||
import '../mock_type.dart';
|
||||
|
@ -40,31 +35,11 @@ void _initialState() {
|
|||
/// Expect: emit the file with extra share (admin -> user1)
|
||||
void _testQueryUnsharedAlbumExtraFileShare() {
|
||||
final account = test_util.buildAccount();
|
||||
final albumFile = test_util.buildAlbumFile(
|
||||
path: test_util.buildAlbumFilePath("test1.json"),
|
||||
fileId: 0,
|
||||
);
|
||||
final file1 = test_util.buildJpegFile(
|
||||
path: "remote.php/dav/files/admin/test1.jpg",
|
||||
fileId: 1,
|
||||
lastModified: DateTime.utc(2020, 1, 2, 3, 4, 5),
|
||||
);
|
||||
final fileItem1 = AlbumFileItem(
|
||||
file: file1,
|
||||
addedBy: "admin".toCi(),
|
||||
addedAt: DateTime.utc(2020, 1, 2, 3, 4, 5),
|
||||
);
|
||||
final album = Album(
|
||||
lastUpdated: DateTime.utc(2020, 1, 2, 3, 4, 5),
|
||||
name: "test",
|
||||
provider: AlbumStaticProvider(
|
||||
items: [fileItem1],
|
||||
latestItemTime: file1.lastModified,
|
||||
),
|
||||
coverProvider: AlbumAutoCoverProvider(coverFile: file1),
|
||||
sortProvider: const AlbumNullSortProvider(),
|
||||
albumFile: albumFile,
|
||||
);
|
||||
final files = (test_util.FilesBuilder(initialFileId: 1)
|
||||
..addJpeg("admin/test1.jpg"))
|
||||
.build();
|
||||
final album = (test_util.AlbumBuilder()..addFileItem(files[0])).build();
|
||||
final file1 = files[0];
|
||||
final shareRepo = MockShareMemoryRepo([
|
||||
test_util.buildShare(id: "0", file: file1, shareWith: "user1"),
|
||||
]);
|
||||
|
@ -94,18 +69,8 @@ void _testQueryUnsharedAlbumExtraFileShare() {
|
|||
/// Expect: emit the json file with extra share (admin -> user1)
|
||||
void _testQueryUnsharedAlbumExtraJsonShare() {
|
||||
final account = test_util.buildAccount();
|
||||
final albumFile = test_util.buildAlbumFile(
|
||||
path: test_util.buildAlbumFilePath("test1.json"),
|
||||
fileId: 0,
|
||||
);
|
||||
final album = Album(
|
||||
lastUpdated: DateTime.utc(2020, 1, 2, 3, 4, 5),
|
||||
name: "test",
|
||||
provider: AlbumStaticProvider(items: []),
|
||||
coverProvider: AlbumAutoCoverProvider(),
|
||||
sortProvider: const AlbumNullSortProvider(),
|
||||
albumFile: albumFile,
|
||||
);
|
||||
final album = test_util.AlbumBuilder().build();
|
||||
final albumFile = album.albumFile!;
|
||||
final shareRepo = MockShareMemoryRepo([
|
||||
test_util.buildShare(id: "0", file: albumFile, shareWith: "user1"),
|
||||
]);
|
||||
|
@ -134,32 +99,15 @@ void _testQueryUnsharedAlbumExtraJsonShare() {
|
|||
/// Expect: emit the file with missing share (admin -> user1)
|
||||
void _testQuerySharedAlbumMissingFileShare() {
|
||||
final account = test_util.buildAccount();
|
||||
final albumFile = test_util.buildAlbumFile(
|
||||
path: test_util.buildAlbumFilePath("test1.json"),
|
||||
fileId: 0,
|
||||
);
|
||||
final file1 = test_util.buildJpegFile(
|
||||
path: "remote.php/dav/files/admin/test1.jpg",
|
||||
fileId: 1,
|
||||
lastModified: DateTime.utc(2020, 1, 2, 3, 4, 5),
|
||||
);
|
||||
final fileItem1 = AlbumFileItem(
|
||||
file: file1,
|
||||
addedBy: "admin".toCi(),
|
||||
addedAt: DateTime.utc(2020, 1, 2, 3, 4, 5),
|
||||
);
|
||||
final album = Album(
|
||||
lastUpdated: DateTime.utc(2020, 1, 2, 3, 4, 5),
|
||||
name: "test",
|
||||
provider: AlbumStaticProvider(
|
||||
items: [fileItem1],
|
||||
latestItemTime: file1.lastModified,
|
||||
),
|
||||
coverProvider: AlbumAutoCoverProvider(coverFile: file1),
|
||||
sortProvider: const AlbumNullSortProvider(),
|
||||
shares: [AlbumShare(userId: "user1".toCi())],
|
||||
albumFile: albumFile,
|
||||
);
|
||||
final files = (test_util.FilesBuilder(initialFileId: 1)
|
||||
..addJpeg("admin/test1.jpg"))
|
||||
.build();
|
||||
final album = (test_util.AlbumBuilder()
|
||||
..addFileItem(files[0])
|
||||
..addShare("user1"))
|
||||
.build();
|
||||
final file1 = files[0];
|
||||
final albumFile = album.albumFile!;
|
||||
final shareRepo = MockShareMemoryRepo([
|
||||
test_util.buildShare(id: "0", file: albumFile, shareWith: "user1"),
|
||||
]);
|
||||
|
@ -175,7 +123,7 @@ void _testQuerySharedAlbumMissingFileShare() {
|
|||
ListAlbumShareOutlierBlocLoading(account, []),
|
||||
ListAlbumShareOutlierBlocSuccess(account, [
|
||||
ListAlbumShareOutlierItem(file1, [
|
||||
ListAlbumShareOutlierMissingShareItem("user1".toCi(), null),
|
||||
ListAlbumShareOutlierMissingShareItem("user1".toCi(), "user1"),
|
||||
]),
|
||||
]),
|
||||
],
|
||||
|
@ -187,19 +135,8 @@ void _testQuerySharedAlbumMissingFileShare() {
|
|||
/// Expect: emit the file with missing share (admin -> user1)
|
||||
void _testQuerySharedAlbumMissingJsonShare() {
|
||||
final account = test_util.buildAccount();
|
||||
final albumFile = test_util.buildAlbumFile(
|
||||
path: test_util.buildAlbumFilePath("test1.json"),
|
||||
fileId: 0,
|
||||
);
|
||||
final album = Album(
|
||||
lastUpdated: DateTime.utc(2020, 1, 2, 3, 4, 5),
|
||||
name: "test",
|
||||
provider: AlbumStaticProvider(items: []),
|
||||
coverProvider: AlbumAutoCoverProvider(),
|
||||
sortProvider: const AlbumNullSortProvider(),
|
||||
shares: [AlbumShare(userId: "user1".toCi())],
|
||||
albumFile: albumFile,
|
||||
);
|
||||
final album = (test_util.AlbumBuilder()..addShare("user1")).build();
|
||||
final albumFile = album.albumFile!;
|
||||
final shareRepo = MockShareMemoryRepo();
|
||||
final shareeRepo = MockShareeMemoryRepo([
|
||||
test_util.buildSharee(shareWith: "user1".toCi()),
|
||||
|
@ -213,7 +150,7 @@ void _testQuerySharedAlbumMissingJsonShare() {
|
|||
ListAlbumShareOutlierBlocLoading(account, []),
|
||||
ListAlbumShareOutlierBlocSuccess(account, [
|
||||
ListAlbumShareOutlierItem(albumFile, [
|
||||
ListAlbumShareOutlierMissingShareItem("user1".toCi(), null),
|
||||
ListAlbumShareOutlierMissingShareItem("user1".toCi(), "user1"),
|
||||
]),
|
||||
]),
|
||||
],
|
||||
|
|
|
@ -1671,7 +1671,10 @@ void _fromJsonShares() {
|
|||
"content": <String, dynamic>{},
|
||||
},
|
||||
"shares": <JsonObj>[
|
||||
{"userId": "admin"},
|
||||
{
|
||||
"userId": "admin",
|
||||
"displayName": "admin",
|
||||
},
|
||||
],
|
||||
};
|
||||
expect(
|
||||
|
@ -1687,7 +1690,7 @@ void _fromJsonShares() {
|
|||
),
|
||||
coverProvider: AlbumAutoCoverProvider(),
|
||||
sortProvider: const AlbumNullSortProvider(),
|
||||
shares: [AlbumShare(userId: "admin".toCi())],
|
||||
shares: [test_util.buildAlbumShare(userId: "admin")],
|
||||
));
|
||||
}
|
||||
|
||||
|
@ -1700,7 +1703,7 @@ void _toRemoteJsonShares() {
|
|||
),
|
||||
coverProvider: AlbumAutoCoverProvider(),
|
||||
sortProvider: const AlbumNullSortProvider(),
|
||||
shares: [AlbumShare(userId: "admin".toCi())],
|
||||
shares: [test_util.buildAlbumShare(userId: "admin")],
|
||||
);
|
||||
expect(album.toRemoteJson(), <String, dynamic>{
|
||||
"version": Album.version,
|
||||
|
@ -1723,6 +1726,7 @@ void _toRemoteJsonShares() {
|
|||
"shares": [
|
||||
<String, dynamic>{
|
||||
"userId": "admin",
|
||||
"displayName": "admin",
|
||||
},
|
||||
],
|
||||
});
|
||||
|
@ -1737,7 +1741,7 @@ void _toAppDbJsonShares() {
|
|||
),
|
||||
coverProvider: AlbumAutoCoverProvider(),
|
||||
sortProvider: const AlbumNullSortProvider(),
|
||||
shares: [AlbumShare(userId: "admin".toCi())],
|
||||
shares: [test_util.buildAlbumShare(userId: "admin")],
|
||||
);
|
||||
expect(album.toAppDbJson(), <String, dynamic>{
|
||||
"version": Album.version,
|
||||
|
@ -1760,6 +1764,7 @@ void _toAppDbJsonShares() {
|
|||
"shares": [
|
||||
<String, dynamic>{
|
||||
"userId": "admin",
|
||||
"displayName": "admin",
|
||||
},
|
||||
],
|
||||
});
|
||||
|
|
|
@ -45,7 +45,7 @@ class MockAlbumRepo implements AlbumRepo {
|
|||
class MockAlbumMemoryRepo extends MockAlbumRepo {
|
||||
MockAlbumMemoryRepo([
|
||||
List<Album> initialData = const [],
|
||||
]) : albums = List.of(initialData);
|
||||
]) : albums = initialData.map((a) => a.copyWith()).toList();
|
||||
|
||||
@override
|
||||
get(Account account, File albumFile) async {
|
||||
|
@ -176,7 +176,7 @@ class MockFileRepo implements FileRepo {
|
|||
class MockFileMemoryRepo extends MockFileRepo {
|
||||
MockFileMemoryRepo([
|
||||
List<File> initialData = const [],
|
||||
]) : files = List.of(initialData) {
|
||||
]) : files = initialData.map((f) => f.copyWith()).toList() {
|
||||
_id = files
|
||||
.where((f) => f.fileId != null)
|
||||
.map((f) => f.fileId!)
|
||||
|
|
|
@ -2,9 +2,126 @@ import 'package:flutter/foundation.dart';
|
|||
import 'package:logging/logging.dart';
|
||||
import 'package:nc_photos/account.dart';
|
||||
import 'package:nc_photos/ci_string.dart';
|
||||
import 'package:nc_photos/entity/album.dart';
|
||||
import 'package:nc_photos/entity/album/cover_provider.dart';
|
||||
import 'package:nc_photos/entity/album/item.dart';
|
||||
import 'package:nc_photos/entity/album/provider.dart';
|
||||
import 'package:nc_photos/entity/album/sort_provider.dart';
|
||||
import 'package:nc_photos/entity/file.dart';
|
||||
import 'package:nc_photos/entity/share.dart';
|
||||
import 'package:nc_photos/entity/sharee.dart';
|
||||
import 'package:nc_photos/iterable_extension.dart';
|
||||
|
||||
class FilesBuilder {
|
||||
FilesBuilder({
|
||||
int initialFileId = 0,
|
||||
}) : fileId = initialFileId;
|
||||
|
||||
List<File> build() {
|
||||
return files.map((f) => f.copyWith()).toList();
|
||||
}
|
||||
|
||||
void addJpeg(
|
||||
String relativePath, {
|
||||
int contentLength = 1024,
|
||||
DateTime? lastModified,
|
||||
bool hasPreview = true,
|
||||
String ownerId = "admin",
|
||||
}) {
|
||||
files.add(buildJpegFile(
|
||||
path: "remote.php/dav/files/$relativePath",
|
||||
contentLength: contentLength,
|
||||
lastModified:
|
||||
lastModified ?? DateTime.utc(2020, 1, 2, 3, 4, 5 + files.length),
|
||||
hasPreview: hasPreview,
|
||||
fileId: fileId++,
|
||||
ownerId: ownerId,
|
||||
));
|
||||
}
|
||||
|
||||
final files = <File>[];
|
||||
int fileId;
|
||||
}
|
||||
|
||||
/// Create an album for testing
|
||||
class AlbumBuilder {
|
||||
AlbumBuilder({
|
||||
DateTime? lastUpdated,
|
||||
this.name = "test",
|
||||
this.albumFilename = "test1.json",
|
||||
this.fileId = 0,
|
||||
this.ownerId = "admin",
|
||||
}) : lastUpdated = lastUpdated ?? DateTime.utc(2020, 1, 2, 3, 4, 5);
|
||||
|
||||
Album build() {
|
||||
final latestFileItem = items
|
||||
.whereType<AlbumFileItem>()
|
||||
.stableSorted(
|
||||
(a, b) => a.file.lastModified!.compareTo(b.file.lastModified!))
|
||||
.reversed
|
||||
.firstOrNull;
|
||||
return Album(
|
||||
lastUpdated: lastUpdated,
|
||||
name: name,
|
||||
provider: AlbumStaticProvider(
|
||||
items: items,
|
||||
latestItemTime: latestFileItem?.file.lastModified,
|
||||
),
|
||||
coverProvider: cover == null
|
||||
? AlbumAutoCoverProvider(coverFile: latestFileItem?.file)
|
||||
: AlbumManualCoverProvider(coverFile: cover!),
|
||||
sortProvider: const AlbumNullSortProvider(),
|
||||
shares: shares.isEmpty ? null : shares,
|
||||
albumFile: buildAlbumFile(
|
||||
path: buildAlbumFilePath(albumFilename, user: ownerId),
|
||||
fileId: fileId,
|
||||
ownerId: ownerId,
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
/// Add a file item
|
||||
///
|
||||
/// By default, the item will be added by admin and added at the same time as
|
||||
/// the file's lastModified.
|
||||
///
|
||||
/// If [isCover] is true, the coverProvider of the album will become
|
||||
/// [AlbumManualCoverProvider]
|
||||
void addFileItem(
|
||||
File file, {
|
||||
String addedBy = "admin",
|
||||
DateTime? addedAt,
|
||||
bool isCover = false,
|
||||
}) {
|
||||
final fileItem = AlbumFileItem(
|
||||
file: file,
|
||||
addedBy: addedBy.toCi(),
|
||||
addedAt: addedAt ?? file.lastModified!,
|
||||
);
|
||||
items.add(fileItem);
|
||||
if (isCover) {
|
||||
cover = file;
|
||||
}
|
||||
}
|
||||
|
||||
/// Add an album share
|
||||
void addShare(String userId) {
|
||||
shares.add(buildAlbumShare(userId: userId));
|
||||
}
|
||||
|
||||
static fileItemsOf(Album album) =>
|
||||
AlbumStaticProvider.of(album).items.whereType<AlbumFileItem>().toList();
|
||||
|
||||
final DateTime lastUpdated;
|
||||
final String name;
|
||||
final String albumFilename;
|
||||
final int fileId;
|
||||
final String ownerId;
|
||||
|
||||
final items = <AlbumItem>[];
|
||||
File? cover;
|
||||
final shares = <AlbumShare>[];
|
||||
}
|
||||
|
||||
void initLog() {
|
||||
Logger.root.level = Level.ALL;
|
||||
|
@ -50,6 +167,15 @@ String buildAlbumFilePath(
|
|||
}) =>
|
||||
"remote.php/dav/files/$user/.com.nkming.nc_photos/albums/$filename";
|
||||
|
||||
AlbumShare buildAlbumShare({
|
||||
required String userId,
|
||||
String? displayName,
|
||||
}) =>
|
||||
AlbumShare(
|
||||
userId: userId.toCi(),
|
||||
displayName: displayName ?? userId,
|
||||
);
|
||||
|
||||
/// Build a mock [File] pointing to a JPEG image file
|
||||
///
|
||||
/// Warning: not all fields are filled, but the most essential ones are
|
||||
|
@ -96,14 +222,14 @@ Share buildShare({
|
|||
|
||||
Sharee buildSharee({
|
||||
ShareeType type = ShareeType.user,
|
||||
String label = "admin",
|
||||
String? label,
|
||||
int shareType = 0,
|
||||
required CiString shareWith,
|
||||
String? shareWithDisplayNameUnique,
|
||||
}) =>
|
||||
Sharee(
|
||||
type: type,
|
||||
label: label,
|
||||
label: label ?? shareWith.toString(),
|
||||
shareType: shareType,
|
||||
shareWith: shareWith,
|
||||
);
|
||||
|
|
|
@ -38,14 +38,11 @@ void main() {
|
|||
Future<void> _addFile() async {
|
||||
final account = test_util.buildAccount();
|
||||
final pref = Pref.scoped(PrefMemoryProvider());
|
||||
final albumFile = test_util.buildAlbumFile(
|
||||
path: test_util.buildAlbumFilePath("test1.json"),
|
||||
fileId: 0,
|
||||
);
|
||||
final file = test_util.buildJpegFile(
|
||||
path: "remote.php/dav/files/admin/test1.jpg",
|
||||
fileId: 1,
|
||||
);
|
||||
final file = (test_util.FilesBuilder(initialFileId: 1)
|
||||
..addJpeg("admin/test1.jpg"))
|
||||
.build()[0];
|
||||
final album = test_util.AlbumBuilder().build();
|
||||
final albumFile = album.albumFile!;
|
||||
final appDb = MockAppDb();
|
||||
await appDb.use((db) async {
|
||||
final transaction = db.transaction(AppDb.fileDbStoreName, idbModeReadWrite);
|
||||
|
@ -53,16 +50,7 @@ Future<void> _addFile() async {
|
|||
await store.put(AppDbFileDbEntry.fromFile(account, file).toJson(),
|
||||
AppDbFileDbEntry.toPrimaryKey(account, file));
|
||||
});
|
||||
final albumRepo = MockAlbumMemoryRepo([
|
||||
Album(
|
||||
lastUpdated: DateTime.utc(2020, 1, 2, 3, 4, 5),
|
||||
name: "test",
|
||||
provider: AlbumStaticProvider(items: []),
|
||||
coverProvider: AlbumAutoCoverProvider(),
|
||||
sortProvider: const AlbumNullSortProvider(),
|
||||
albumFile: albumFile,
|
||||
),
|
||||
]);
|
||||
final albumRepo = MockAlbumMemoryRepo([album]);
|
||||
final shareRepo = MockShareRepo();
|
||||
|
||||
await AddToAlbum(albumRepo, shareRepo, appDb, pref)(
|
||||
|
@ -115,15 +103,11 @@ Future<void> _addFileToSharedAlbumOwned() async {
|
|||
final pref = Pref.scoped(PrefMemoryProvider({
|
||||
"isLabEnableSharedAlbum": true,
|
||||
}));
|
||||
final albumFile = test_util.buildAlbumFile(
|
||||
path: test_util.buildAlbumFilePath("test1.json"),
|
||||
fileId: 0,
|
||||
ownerId: "admin",
|
||||
);
|
||||
final file = test_util.buildJpegFile(
|
||||
path: "remote.php/dav/files/admin/test1.jpg",
|
||||
fileId: 1,
|
||||
);
|
||||
final file = (test_util.FilesBuilder(initialFileId: 1)
|
||||
..addJpeg("admin/test1.jpg"))
|
||||
.build()[0];
|
||||
final album = (test_util.AlbumBuilder()..addShare("user1")).build();
|
||||
final albumFile = album.albumFile!;
|
||||
final appDb = MockAppDb();
|
||||
await appDb.use((db) async {
|
||||
final transaction = db.transaction(AppDb.fileDbStoreName, idbModeReadWrite);
|
||||
|
@ -131,17 +115,7 @@ Future<void> _addFileToSharedAlbumOwned() async {
|
|||
await store.put(AppDbFileDbEntry.fromFile(account, file).toJson(),
|
||||
AppDbFileDbEntry.toPrimaryKey(account, file));
|
||||
});
|
||||
final albumRepo = MockAlbumMemoryRepo([
|
||||
Album(
|
||||
lastUpdated: DateTime.utc(2020, 1, 2, 3, 4, 5),
|
||||
name: "test",
|
||||
provider: AlbumStaticProvider(items: []),
|
||||
coverProvider: AlbumAutoCoverProvider(),
|
||||
sortProvider: const AlbumNullSortProvider(),
|
||||
shares: [AlbumShare(userId: "user1".toCi())],
|
||||
albumFile: albumFile,
|
||||
),
|
||||
]);
|
||||
final albumRepo = MockAlbumMemoryRepo([album]);
|
||||
final shareRepo = MockShareMemoryRepo([
|
||||
test_util.buildShare(id: "0", file: albumFile, shareWith: "user1"),
|
||||
]);
|
||||
|
@ -175,16 +149,11 @@ Future<void> _addFileOwnedByUserToSharedAlbumOwned() async {
|
|||
final pref = Pref.scoped(PrefMemoryProvider({
|
||||
"isLabEnableSharedAlbum": true,
|
||||
}));
|
||||
final albumFile = test_util.buildAlbumFile(
|
||||
path: test_util.buildAlbumFilePath("test1.json"),
|
||||
fileId: 0,
|
||||
ownerId: "admin",
|
||||
);
|
||||
final file = test_util.buildJpegFile(
|
||||
path: "remote.php/dav/files/admin/test1.jpg",
|
||||
fileId: 1,
|
||||
ownerId: "user1",
|
||||
);
|
||||
final file = (test_util.FilesBuilder(initialFileId: 1)
|
||||
..addJpeg("admin/test1.jpg", ownerId: "user1"))
|
||||
.build()[0];
|
||||
final album = (test_util.AlbumBuilder()..addShare("user1")).build();
|
||||
final albumFile = album.albumFile!;
|
||||
final appDb = MockAppDb();
|
||||
await appDb.use((db) async {
|
||||
final transaction = db.transaction(AppDb.fileDbStoreName, idbModeReadWrite);
|
||||
|
@ -192,17 +161,7 @@ Future<void> _addFileOwnedByUserToSharedAlbumOwned() async {
|
|||
await store.put(AppDbFileDbEntry.fromFile(account, file).toJson(),
|
||||
AppDbFileDbEntry.toPrimaryKey(account, file));
|
||||
});
|
||||
final albumRepo = MockAlbumMemoryRepo([
|
||||
Album(
|
||||
lastUpdated: DateTime.utc(2020, 1, 2, 3, 4, 5),
|
||||
name: "test",
|
||||
provider: AlbumStaticProvider(items: []),
|
||||
coverProvider: AlbumAutoCoverProvider(),
|
||||
sortProvider: const AlbumNullSortProvider(),
|
||||
shares: [AlbumShare(userId: "user1".toCi())],
|
||||
albumFile: albumFile,
|
||||
),
|
||||
]);
|
||||
final albumRepo = MockAlbumMemoryRepo([album]);
|
||||
final shareRepo = MockShareMemoryRepo([
|
||||
test_util.buildShare(id: "0", file: albumFile, shareWith: "user1"),
|
||||
]);
|
||||
|
@ -236,15 +195,14 @@ Future<void> _addFileToMultiuserSharedAlbumNotOwned() async {
|
|||
final pref = Pref.scoped(PrefMemoryProvider({
|
||||
"isLabEnableSharedAlbum": true,
|
||||
}));
|
||||
final albumFile = test_util.buildAlbumFile(
|
||||
path: test_util.buildAlbumFilePath("test1.json"),
|
||||
fileId: 0,
|
||||
ownerId: "user1",
|
||||
);
|
||||
final file = test_util.buildJpegFile(
|
||||
path: "remote.php/dav/files/admin/test1.jpg",
|
||||
fileId: 1,
|
||||
);
|
||||
final file = (test_util.FilesBuilder(initialFileId: 1)
|
||||
..addJpeg("admin/test1.jpg"))
|
||||
.build()[0];
|
||||
final album = (test_util.AlbumBuilder(ownerId: "user1")
|
||||
..addShare("admin")
|
||||
..addShare("user2"))
|
||||
.build();
|
||||
final albumFile = album.albumFile!;
|
||||
final appDb = MockAppDb();
|
||||
await appDb.use((db) async {
|
||||
final transaction = db.transaction(AppDb.fileDbStoreName, idbModeReadWrite);
|
||||
|
@ -252,20 +210,7 @@ Future<void> _addFileToMultiuserSharedAlbumNotOwned() async {
|
|||
await store.put(AppDbFileDbEntry.fromFile(account, file).toJson(),
|
||||
AppDbFileDbEntry.toPrimaryKey(account, file));
|
||||
});
|
||||
final albumRepo = MockAlbumMemoryRepo([
|
||||
Album(
|
||||
lastUpdated: DateTime.utc(2020, 1, 2, 3, 4, 5),
|
||||
name: "test",
|
||||
provider: AlbumStaticProvider(items: []),
|
||||
coverProvider: AlbumAutoCoverProvider(),
|
||||
sortProvider: const AlbumNullSortProvider(),
|
||||
shares: [
|
||||
AlbumShare(userId: "admin".toCi()),
|
||||
AlbumShare(userId: "user2".toCi()),
|
||||
],
|
||||
albumFile: albumFile,
|
||||
),
|
||||
]);
|
||||
final albumRepo = MockAlbumMemoryRepo([album]);
|
||||
final shareRepo = MockShareMemoryRepo([
|
||||
test_util.buildShare(
|
||||
id: "0", uidOwner: "user1", file: albumFile, shareWith: "admin"),
|
||||
|
|
|
@ -2,10 +2,8 @@ import 'package:event_bus/event_bus.dart';
|
|||
import 'package:idb_shim/idb.dart';
|
||||
import 'package:kiwi/kiwi.dart';
|
||||
import 'package:nc_photos/app_db.dart';
|
||||
import 'package:nc_photos/ci_string.dart';
|
||||
import 'package:nc_photos/entity/album.dart';
|
||||
import 'package:nc_photos/entity/album/cover_provider.dart';
|
||||
import 'package:nc_photos/entity/album/item.dart';
|
||||
import 'package:nc_photos/entity/album/provider.dart';
|
||||
import 'package:nc_photos/entity/album/sort_provider.dart';
|
||||
import 'package:nc_photos/or_null.dart';
|
||||
|
@ -28,12 +26,12 @@ void main() {
|
|||
test("file", _removeFromSharedAlbumOwned);
|
||||
test("file w/ shares managed by others",
|
||||
_removeFromSharedAlbumOwnedWithOtherShare);
|
||||
test("file w/ extra share", _removeFromSharedAlbumOwnedLeaveExtraShare);
|
||||
});
|
||||
group("shared album (not owned)", () {
|
||||
test("file", _removeFromSharedAlbumNotOwned);
|
||||
test("file w/ shares managed by owner",
|
||||
_removeFromSharedAlbumNotOwnedWithOwnerShare);
|
||||
test("file w/ extra share", _removeFromSharedAlbumLeaveExtraShare);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
@ -44,19 +42,13 @@ void main() {
|
|||
Future<void> _removeLastFile() async {
|
||||
final account = test_util.buildAccount();
|
||||
final pref = Pref.scoped(PrefMemoryProvider());
|
||||
final albumFile = test_util.buildAlbumFile(
|
||||
path: test_util.buildAlbumFilePath("test1.json"),
|
||||
fileId: 0,
|
||||
);
|
||||
final file1 = test_util.buildJpegFile(
|
||||
path: "remote.php/dav/files/admin/test1.jpg",
|
||||
fileId: 1,
|
||||
);
|
||||
final fileItem1 = AlbumFileItem(
|
||||
file: file1,
|
||||
addedBy: "admin".toCi(),
|
||||
addedAt: DateTime.utc(2020, 1, 2, 3, 4, 5),
|
||||
);
|
||||
final files = (test_util.FilesBuilder(initialFileId: 1)
|
||||
..addJpeg("admin/test1.jpg"))
|
||||
.build();
|
||||
final album = (test_util.AlbumBuilder()..addFileItem(files[0])).build();
|
||||
final file1 = files[0];
|
||||
final fileItem1 = test_util.AlbumBuilder.fileItemsOf(album)[0];
|
||||
final albumFile = album.albumFile!;
|
||||
final appDb = MockAppDb();
|
||||
await appDb.use((db) async {
|
||||
final transaction = db.transaction(AppDb.fileDbStoreName, idbModeReadWrite);
|
||||
|
@ -64,19 +56,7 @@ Future<void> _removeLastFile() async {
|
|||
await store.put(AppDbFileDbEntry.fromFile(account, file1).toJson(),
|
||||
AppDbFileDbEntry.toPrimaryKey(account, file1));
|
||||
});
|
||||
final albumRepo = MockAlbumMemoryRepo([
|
||||
Album(
|
||||
lastUpdated: DateTime.utc(2020, 1, 2, 3, 4, 5),
|
||||
name: "test",
|
||||
provider: AlbumStaticProvider(
|
||||
items: [fileItem1],
|
||||
latestItemTime: file1.lastModified,
|
||||
),
|
||||
coverProvider: AlbumAutoCoverProvider(coverFile: file1),
|
||||
sortProvider: const AlbumNullSortProvider(),
|
||||
albumFile: albumFile,
|
||||
),
|
||||
]);
|
||||
final albumRepo = MockAlbumMemoryRepo([album]);
|
||||
final shareRepo = MockShareRepo();
|
||||
final fileRepo = MockFileMemoryRepo([albumFile, file1]);
|
||||
|
||||
|
@ -108,69 +88,36 @@ Future<void> _removeLastFile() async {
|
|||
Future<void> _remove1OfNFiles() async {
|
||||
final account = test_util.buildAccount();
|
||||
final pref = Pref.scoped(PrefMemoryProvider());
|
||||
final albumFile = test_util.buildAlbumFile(
|
||||
path: test_util.buildAlbumFilePath("test1.json"),
|
||||
fileId: 0,
|
||||
);
|
||||
final file1 = test_util.buildJpegFile(
|
||||
path: "remote.php/dav/files/admin/test1.jpg",
|
||||
fileId: 1,
|
||||
lastModified: DateTime.utc(2020, 1, 2, 3, 4, 5),
|
||||
);
|
||||
final fileItem1 = AlbumFileItem(
|
||||
file: file1,
|
||||
addedBy: "admin".toCi(),
|
||||
addedAt: DateTime.utc(2020, 1, 2, 3, 4, 5),
|
||||
);
|
||||
final file2 = test_util.buildJpegFile(
|
||||
path: "remote.php/dav/files/admin/test2.jpg",
|
||||
fileId: 2,
|
||||
lastModified: DateTime.utc(2020, 1, 2, 3, 4, 6),
|
||||
);
|
||||
final fileItem2 = AlbumFileItem(
|
||||
file: file2,
|
||||
addedBy: "admin".toCi(),
|
||||
addedAt: DateTime.utc(2020, 1, 2, 3, 4, 6),
|
||||
);
|
||||
final file3 = test_util.buildJpegFile(
|
||||
path: "remote.php/dav/files/admin/test3.jpg",
|
||||
fileId: 3,
|
||||
lastModified: DateTime.utc(2020, 1, 2, 3, 4, 7),
|
||||
);
|
||||
final fileItem3 = AlbumFileItem(
|
||||
file: file3,
|
||||
addedBy: "admin".toCi(),
|
||||
addedAt: DateTime.utc(2020, 1, 2, 3, 4, 7),
|
||||
);
|
||||
final files = (test_util.FilesBuilder(initialFileId: 1)
|
||||
..addJpeg("admin/test1.jpg")
|
||||
..addJpeg("admin/test2.jpg")
|
||||
..addJpeg("admin/test3.jpg"))
|
||||
.build();
|
||||
final album = (test_util.AlbumBuilder()
|
||||
..addFileItem(files[0])
|
||||
..addFileItem(files[1])
|
||||
..addFileItem(files[2]))
|
||||
.build();
|
||||
final fileItems = test_util.AlbumBuilder.fileItemsOf(album);
|
||||
final albumFile = album.albumFile!;
|
||||
final appDb = MockAppDb();
|
||||
await appDb.use((db) async {
|
||||
final transaction = db.transaction(AppDb.fileDbStoreName, idbModeReadWrite);
|
||||
final store = transaction.objectStore(AppDb.fileDbStoreName);
|
||||
await store.put(AppDbFileDbEntry.fromFile(account, file1).toJson(),
|
||||
AppDbFileDbEntry.toPrimaryKey(account, file1));
|
||||
await store.put(AppDbFileDbEntry.fromFile(account, file2).toJson(),
|
||||
AppDbFileDbEntry.toPrimaryKey(account, file2));
|
||||
await store.put(AppDbFileDbEntry.fromFile(account, file3).toJson(),
|
||||
AppDbFileDbEntry.toPrimaryKey(account, file3));
|
||||
await store.put(AppDbFileDbEntry.fromFile(account, files[0]).toJson(),
|
||||
AppDbFileDbEntry.toPrimaryKey(account, files[0]));
|
||||
await store.put(AppDbFileDbEntry.fromFile(account, files[1]).toJson(),
|
||||
AppDbFileDbEntry.toPrimaryKey(account, files[1]));
|
||||
await store.put(AppDbFileDbEntry.fromFile(account, files[2]).toJson(),
|
||||
AppDbFileDbEntry.toPrimaryKey(account, files[2]));
|
||||
});
|
||||
final albumRepo = MockAlbumMemoryRepo([
|
||||
Album(
|
||||
lastUpdated: DateTime.utc(2020, 1, 2, 3, 4, 5),
|
||||
name: "test",
|
||||
provider: AlbumStaticProvider(
|
||||
items: [fileItem1, fileItem2, fileItem3],
|
||||
latestItemTime: file3.lastModified,
|
||||
),
|
||||
coverProvider: AlbumAutoCoverProvider(coverFile: file3),
|
||||
sortProvider: const AlbumNullSortProvider(),
|
||||
albumFile: albumFile,
|
||||
),
|
||||
]);
|
||||
final albumRepo = MockAlbumMemoryRepo([album]);
|
||||
final shareRepo = MockShareRepo();
|
||||
final fileRepo = MockFileMemoryRepo([albumFile, file1, file2, file3]);
|
||||
final fileRepo =
|
||||
MockFileMemoryRepo([albumFile, files[0], files[1], files[2]]);
|
||||
|
||||
await RemoveFromAlbum(albumRepo, shareRepo, fileRepo, appDb, pref)(
|
||||
account, albumRepo.findAlbumByPath(albumFile.path), [fileItem1]);
|
||||
account, albumRepo.findAlbumByPath(albumFile.path), [fileItems[0]]);
|
||||
expect(
|
||||
albumRepo.albums
|
||||
.map((e) => e.copyWith(
|
||||
|
@ -183,10 +130,10 @@ Future<void> _remove1OfNFiles() async {
|
|||
lastUpdated: DateTime.utc(2020, 1, 2, 3, 4, 5),
|
||||
name: "test",
|
||||
provider: AlbumStaticProvider(
|
||||
items: [fileItem2, fileItem3],
|
||||
latestItemTime: file3.lastModified,
|
||||
items: [fileItems[1], fileItems[2]],
|
||||
latestItemTime: files[2].lastModified,
|
||||
),
|
||||
coverProvider: AlbumAutoCoverProvider(coverFile: file3),
|
||||
coverProvider: AlbumAutoCoverProvider(coverFile: files[2]),
|
||||
sortProvider: const AlbumNullSortProvider(),
|
||||
albumFile: albumFile,
|
||||
),
|
||||
|
@ -200,69 +147,39 @@ Future<void> _remove1OfNFiles() async {
|
|||
Future<void> _removeLatestOfNFiles() async {
|
||||
final account = test_util.buildAccount();
|
||||
final pref = Pref.scoped(PrefMemoryProvider());
|
||||
final albumFile = test_util.buildAlbumFile(
|
||||
path: test_util.buildAlbumFilePath("test1.json"),
|
||||
fileId: 0,
|
||||
);
|
||||
final file1 = test_util.buildJpegFile(
|
||||
path: "remote.php/dav/files/admin/test1.jpg",
|
||||
fileId: 1,
|
||||
lastModified: DateTime.utc(2020, 1, 2, 3, 4, 8),
|
||||
);
|
||||
final fileItem1 = AlbumFileItem(
|
||||
file: file1,
|
||||
addedBy: "admin".toCi(),
|
||||
addedAt: DateTime.utc(2020, 1, 2, 3, 4, 8),
|
||||
);
|
||||
final file2 = test_util.buildJpegFile(
|
||||
path: "remote.php/dav/files/admin/test2.jpg",
|
||||
fileId: 2,
|
||||
lastModified: DateTime.utc(2020, 1, 2, 3, 4, 6),
|
||||
);
|
||||
final fileItem2 = AlbumFileItem(
|
||||
file: file2,
|
||||
addedBy: "admin".toCi(),
|
||||
addedAt: DateTime.utc(2020, 1, 2, 3, 4, 6),
|
||||
);
|
||||
final file3 = test_util.buildJpegFile(
|
||||
path: "remote.php/dav/files/admin/test3.jpg",
|
||||
fileId: 3,
|
||||
lastModified: DateTime.utc(2020, 1, 2, 3, 4, 7),
|
||||
);
|
||||
final fileItem3 = AlbumFileItem(
|
||||
file: file3,
|
||||
addedBy: "admin".toCi(),
|
||||
addedAt: DateTime.utc(2020, 1, 2, 3, 4, 7),
|
||||
);
|
||||
final files = (test_util.FilesBuilder(initialFileId: 1)
|
||||
..addJpeg("admin/test1.jpg",
|
||||
lastModified: DateTime.utc(2020, 1, 2, 3, 4, 8))
|
||||
..addJpeg("admin/test2.jpg",
|
||||
lastModified: DateTime.utc(2020, 1, 2, 3, 4, 7))
|
||||
..addJpeg("admin/test3.jpg",
|
||||
lastModified: DateTime.utc(2020, 1, 2, 3, 4, 6)))
|
||||
.build();
|
||||
final album = (test_util.AlbumBuilder()
|
||||
..addFileItem(files[0])
|
||||
..addFileItem(files[1])
|
||||
..addFileItem(files[2]))
|
||||
.build();
|
||||
final fileItems = test_util.AlbumBuilder.fileItemsOf(album);
|
||||
final albumFile = album.albumFile!;
|
||||
final appDb = MockAppDb();
|
||||
await appDb.use((db) async {
|
||||
final transaction = db.transaction(AppDb.fileDbStoreName, idbModeReadWrite);
|
||||
final store = transaction.objectStore(AppDb.fileDbStoreName);
|
||||
await store.put(AppDbFileDbEntry.fromFile(account, file1).toJson(),
|
||||
AppDbFileDbEntry.toPrimaryKey(account, file1));
|
||||
await store.put(AppDbFileDbEntry.fromFile(account, file2).toJson(),
|
||||
AppDbFileDbEntry.toPrimaryKey(account, file2));
|
||||
await store.put(AppDbFileDbEntry.fromFile(account, file3).toJson(),
|
||||
AppDbFileDbEntry.toPrimaryKey(account, file3));
|
||||
await store.put(AppDbFileDbEntry.fromFile(account, files[0]).toJson(),
|
||||
AppDbFileDbEntry.toPrimaryKey(account, files[0]));
|
||||
await store.put(AppDbFileDbEntry.fromFile(account, files[1]).toJson(),
|
||||
AppDbFileDbEntry.toPrimaryKey(account, files[1]));
|
||||
await store.put(AppDbFileDbEntry.fromFile(account, files[2]).toJson(),
|
||||
AppDbFileDbEntry.toPrimaryKey(account, files[2]));
|
||||
});
|
||||
final albumRepo = MockAlbumMemoryRepo([
|
||||
Album(
|
||||
lastUpdated: DateTime.utc(2020, 1, 2, 3, 4, 5),
|
||||
name: "test",
|
||||
provider: AlbumStaticProvider(
|
||||
items: [fileItem1, fileItem2, fileItem3],
|
||||
latestItemTime: file1.lastModified,
|
||||
),
|
||||
coverProvider: AlbumAutoCoverProvider(coverFile: file1),
|
||||
sortProvider: const AlbumNullSortProvider(),
|
||||
albumFile: albumFile,
|
||||
),
|
||||
]);
|
||||
final albumRepo = MockAlbumMemoryRepo([album]);
|
||||
final shareRepo = MockShareRepo();
|
||||
final fileRepo = MockFileMemoryRepo([albumFile, file1, file2, file3]);
|
||||
final fileRepo =
|
||||
MockFileMemoryRepo([albumFile, files[0], files[1], files[2]]);
|
||||
|
||||
await RemoveFromAlbum(albumRepo, shareRepo, fileRepo, appDb, pref)(
|
||||
account, albumRepo.findAlbumByPath(albumFile.path), [fileItem1]);
|
||||
account, albumRepo.findAlbumByPath(albumFile.path), [fileItems[0]]);
|
||||
expect(
|
||||
albumRepo.albums
|
||||
.map((e) => e.copyWith(
|
||||
|
@ -275,10 +192,10 @@ Future<void> _removeLatestOfNFiles() async {
|
|||
lastUpdated: DateTime.utc(2020, 1, 2, 3, 4, 5),
|
||||
name: "test",
|
||||
provider: AlbumStaticProvider(
|
||||
items: [fileItem2, fileItem3],
|
||||
latestItemTime: file3.lastModified,
|
||||
items: [fileItems[1], fileItems[2]],
|
||||
latestItemTime: files[1].lastModified,
|
||||
),
|
||||
coverProvider: AlbumAutoCoverProvider(coverFile: file3),
|
||||
coverProvider: AlbumAutoCoverProvider(coverFile: files[1]),
|
||||
sortProvider: const AlbumNullSortProvider(),
|
||||
albumFile: albumFile,
|
||||
),
|
||||
|
@ -292,69 +209,36 @@ Future<void> _removeLatestOfNFiles() async {
|
|||
Future<void> _removeManualCoverFile() async {
|
||||
final account = test_util.buildAccount();
|
||||
final pref = Pref.scoped(PrefMemoryProvider());
|
||||
final albumFile = test_util.buildAlbumFile(
|
||||
path: test_util.buildAlbumFilePath("test1.json"),
|
||||
fileId: 0,
|
||||
);
|
||||
final file1 = test_util.buildJpegFile(
|
||||
path: "remote.php/dav/files/admin/test1.jpg",
|
||||
fileId: 1,
|
||||
lastModified: DateTime.utc(2020, 1, 2, 3, 4, 5),
|
||||
);
|
||||
final fileItem1 = AlbumFileItem(
|
||||
file: file1,
|
||||
addedBy: "admin".toCi(),
|
||||
addedAt: DateTime.utc(2020, 1, 2, 3, 4, 5),
|
||||
);
|
||||
final file2 = test_util.buildJpegFile(
|
||||
path: "remote.php/dav/files/admin/test2.jpg",
|
||||
fileId: 2,
|
||||
lastModified: DateTime.utc(2020, 1, 2, 3, 4, 6),
|
||||
);
|
||||
final fileItem2 = AlbumFileItem(
|
||||
file: file2,
|
||||
addedBy: "admin".toCi(),
|
||||
addedAt: DateTime.utc(2020, 1, 2, 3, 4, 6),
|
||||
);
|
||||
final file3 = test_util.buildJpegFile(
|
||||
path: "remote.php/dav/files/admin/test3.jpg",
|
||||
fileId: 3,
|
||||
lastModified: DateTime.utc(2020, 1, 2, 3, 4, 7),
|
||||
);
|
||||
final fileItem3 = AlbumFileItem(
|
||||
file: file3,
|
||||
addedBy: "admin".toCi(),
|
||||
addedAt: DateTime.utc(2020, 1, 2, 3, 4, 7),
|
||||
);
|
||||
final files = (test_util.FilesBuilder(initialFileId: 1)
|
||||
..addJpeg("admin/test1.jpg")
|
||||
..addJpeg("admin/test2.jpg")
|
||||
..addJpeg("admin/test3.jpg"))
|
||||
.build();
|
||||
final album = (test_util.AlbumBuilder()
|
||||
..addFileItem(files[0], isCover: true)
|
||||
..addFileItem(files[1])
|
||||
..addFileItem(files[2]))
|
||||
.build();
|
||||
final fileItems = test_util.AlbumBuilder.fileItemsOf(album);
|
||||
final albumFile = album.albumFile!;
|
||||
final appDb = MockAppDb();
|
||||
await appDb.use((db) async {
|
||||
final transaction = db.transaction(AppDb.fileDbStoreName, idbModeReadWrite);
|
||||
final store = transaction.objectStore(AppDb.fileDbStoreName);
|
||||
await store.put(AppDbFileDbEntry.fromFile(account, file1).toJson(),
|
||||
AppDbFileDbEntry.toPrimaryKey(account, file1));
|
||||
await store.put(AppDbFileDbEntry.fromFile(account, file2).toJson(),
|
||||
AppDbFileDbEntry.toPrimaryKey(account, file2));
|
||||
await store.put(AppDbFileDbEntry.fromFile(account, file3).toJson(),
|
||||
AppDbFileDbEntry.toPrimaryKey(account, file3));
|
||||
await store.put(AppDbFileDbEntry.fromFile(account, files[0]).toJson(),
|
||||
AppDbFileDbEntry.toPrimaryKey(account, files[0]));
|
||||
await store.put(AppDbFileDbEntry.fromFile(account, files[1]).toJson(),
|
||||
AppDbFileDbEntry.toPrimaryKey(account, files[1]));
|
||||
await store.put(AppDbFileDbEntry.fromFile(account, files[2]).toJson(),
|
||||
AppDbFileDbEntry.toPrimaryKey(account, files[2]));
|
||||
});
|
||||
final albumRepo = MockAlbumMemoryRepo([
|
||||
Album(
|
||||
lastUpdated: DateTime.utc(2020, 1, 2, 3, 4, 5),
|
||||
name: "test",
|
||||
provider: AlbumStaticProvider(
|
||||
items: [fileItem1, fileItem2, fileItem3],
|
||||
latestItemTime: file3.lastModified,
|
||||
),
|
||||
coverProvider: AlbumManualCoverProvider(coverFile: file1),
|
||||
sortProvider: const AlbumNullSortProvider(),
|
||||
albumFile: albumFile,
|
||||
),
|
||||
]);
|
||||
final albumRepo = MockAlbumMemoryRepo([album]);
|
||||
final shareRepo = MockShareRepo();
|
||||
final fileRepo = MockFileMemoryRepo([albumFile, file1, file2, file3]);
|
||||
final fileRepo =
|
||||
MockFileMemoryRepo([albumFile, files[0], files[1], files[2]]);
|
||||
|
||||
await RemoveFromAlbum(albumRepo, shareRepo, fileRepo, appDb, pref)(
|
||||
account, albumRepo.findAlbumByPath(albumFile.path), [fileItem1]);
|
||||
account, albumRepo.findAlbumByPath(albumFile.path), [fileItems[0]]);
|
||||
expect(
|
||||
albumRepo.albums
|
||||
.map((e) => e.copyWith(
|
||||
|
@ -367,10 +251,10 @@ Future<void> _removeManualCoverFile() async {
|
|||
lastUpdated: DateTime.utc(2020, 1, 2, 3, 4, 5),
|
||||
name: "test",
|
||||
provider: AlbumStaticProvider(
|
||||
items: [fileItem2, fileItem3],
|
||||
latestItemTime: file3.lastModified,
|
||||
items: [fileItems[1], fileItems[2]],
|
||||
latestItemTime: files[2].lastModified,
|
||||
),
|
||||
coverProvider: AlbumAutoCoverProvider(coverFile: file3),
|
||||
coverProvider: AlbumAutoCoverProvider(coverFile: files[2]),
|
||||
sortProvider: const AlbumNullSortProvider(),
|
||||
albumFile: albumFile,
|
||||
),
|
||||
|
@ -386,20 +270,16 @@ Future<void> _removeFromSharedAlbumOwned() async {
|
|||
final pref = Pref.scoped(PrefMemoryProvider({
|
||||
"isLabEnableSharedAlbum": true,
|
||||
}));
|
||||
final albumFile = test_util.buildAlbumFile(
|
||||
path: test_util.buildAlbumFilePath("test1.json"),
|
||||
fileId: 0,
|
||||
ownerId: "admin",
|
||||
);
|
||||
final file1 = test_util.buildJpegFile(
|
||||
path: "remote.php/dav/files/admin/test1.jpg",
|
||||
fileId: 1,
|
||||
);
|
||||
final fileItem1 = AlbumFileItem(
|
||||
file: file1,
|
||||
addedBy: "admin".toCi(),
|
||||
addedAt: DateTime.utc(2020, 1, 2, 3, 4, 5),
|
||||
);
|
||||
final files = (test_util.FilesBuilder(initialFileId: 1)
|
||||
..addJpeg("admin/test1.jpg"))
|
||||
.build();
|
||||
final album = (test_util.AlbumBuilder()
|
||||
..addFileItem(files[0])
|
||||
..addShare("user1"))
|
||||
.build();
|
||||
final file1 = files[0];
|
||||
final fileItem1 = test_util.AlbumBuilder.fileItemsOf(album)[0];
|
||||
final albumFile = album.albumFile!;
|
||||
final appDb = MockAppDb();
|
||||
await appDb.use((db) async {
|
||||
final transaction = db.transaction(AppDb.fileDbStoreName, idbModeReadWrite);
|
||||
|
@ -407,20 +287,7 @@ Future<void> _removeFromSharedAlbumOwned() async {
|
|||
await store.put(AppDbFileDbEntry.fromFile(account, file1).toJson(),
|
||||
AppDbFileDbEntry.toPrimaryKey(account, file1));
|
||||
});
|
||||
final albumRepo = MockAlbumMemoryRepo([
|
||||
Album(
|
||||
lastUpdated: DateTime.utc(2020, 1, 2, 3, 4, 5),
|
||||
name: "test",
|
||||
provider: AlbumStaticProvider(
|
||||
items: [fileItem1],
|
||||
latestItemTime: file1.lastModified,
|
||||
),
|
||||
coverProvider: AlbumAutoCoverProvider(coverFile: file1),
|
||||
sortProvider: const AlbumNullSortProvider(),
|
||||
shares: [AlbumShare(userId: "user1".toCi())],
|
||||
albumFile: albumFile,
|
||||
),
|
||||
]);
|
||||
final albumRepo = MockAlbumMemoryRepo([album]);
|
||||
final shareRepo = MockShareMemoryRepo([
|
||||
test_util.buildShare(id: "0", file: albumFile, shareWith: "user1"),
|
||||
test_util.buildShare(id: "1", file: file1, shareWith: "user1"),
|
||||
|
@ -445,20 +312,17 @@ Future<void> _removeFromSharedAlbumOwnedWithOtherShare() async {
|
|||
final pref = Pref.scoped(PrefMemoryProvider({
|
||||
"isLabEnableSharedAlbum": true,
|
||||
}));
|
||||
final albumFile = test_util.buildAlbumFile(
|
||||
path: test_util.buildAlbumFilePath("test1.json"),
|
||||
fileId: 0,
|
||||
ownerId: "admin",
|
||||
);
|
||||
final file1 = test_util.buildJpegFile(
|
||||
path: "remote.php/dav/files/admin/test1.jpg",
|
||||
fileId: 1,
|
||||
);
|
||||
final fileItem1 = AlbumFileItem(
|
||||
file: file1,
|
||||
addedBy: "admin".toCi(),
|
||||
addedAt: DateTime.utc(2020, 1, 2, 3, 4, 5),
|
||||
);
|
||||
final files = (test_util.FilesBuilder(initialFileId: 1)
|
||||
..addJpeg("user1/test1.jpg", ownerId: "user1"))
|
||||
.build();
|
||||
final album = (test_util.AlbumBuilder()
|
||||
..addFileItem(files[0], addedBy: "user1")
|
||||
..addShare("user1")
|
||||
..addShare("user2"))
|
||||
.build();
|
||||
final file1 = files[0];
|
||||
final fileItem1 = test_util.AlbumBuilder.fileItemsOf(album)[0];
|
||||
final albumFile = album.albumFile!;
|
||||
final appDb = MockAppDb();
|
||||
await appDb.use((db) async {
|
||||
final transaction = db.transaction(AppDb.fileDbStoreName, idbModeReadWrite);
|
||||
|
@ -466,20 +330,7 @@ Future<void> _removeFromSharedAlbumOwnedWithOtherShare() async {
|
|||
await store.put(AppDbFileDbEntry.fromFile(account, file1).toJson(),
|
||||
AppDbFileDbEntry.toPrimaryKey(account, file1));
|
||||
});
|
||||
final albumRepo = MockAlbumMemoryRepo([
|
||||
Album(
|
||||
lastUpdated: DateTime.utc(2020, 1, 2, 3, 4, 5),
|
||||
name: "test",
|
||||
provider: AlbumStaticProvider(
|
||||
items: [fileItem1],
|
||||
latestItemTime: file1.lastModified,
|
||||
),
|
||||
coverProvider: AlbumAutoCoverProvider(coverFile: file1),
|
||||
sortProvider: const AlbumNullSortProvider(),
|
||||
shares: [AlbumShare(userId: "user1".toCi())],
|
||||
albumFile: albumFile,
|
||||
),
|
||||
]);
|
||||
final albumRepo = MockAlbumMemoryRepo([album]);
|
||||
final shareRepo = MockShareMemoryRepo([
|
||||
test_util.buildShare(id: "0", file: albumFile, shareWith: "user1"),
|
||||
test_util.buildShare(id: "1", file: albumFile, shareWith: "user2"),
|
||||
|
@ -505,6 +356,52 @@ Future<void> _removeFromSharedAlbumOwnedWithOtherShare() async {
|
|||
);
|
||||
}
|
||||
|
||||
/// Remove a file from a shared album (admin -> user1) with extra unmanaged
|
||||
/// share (admin -> user2)
|
||||
///
|
||||
/// Expect: share (admin -> user1) for the file deleted;
|
||||
/// extra share (admin -> user2) unchanged
|
||||
Future<void> _removeFromSharedAlbumOwnedLeaveExtraShare() async {
|
||||
final account = test_util.buildAccount();
|
||||
final pref = Pref.scoped(PrefMemoryProvider({
|
||||
"isLabEnableSharedAlbum": true,
|
||||
}));
|
||||
final files = (test_util.FilesBuilder(initialFileId: 1)
|
||||
..addJpeg("admin/test1.jpg"))
|
||||
.build();
|
||||
final album = (test_util.AlbumBuilder()
|
||||
..addFileItem(files[0])
|
||||
..addShare("user1"))
|
||||
.build();
|
||||
final file1 = files[0];
|
||||
final fileItem1 = test_util.AlbumBuilder.fileItemsOf(album)[0];
|
||||
final albumFile = album.albumFile!;
|
||||
final appDb = MockAppDb();
|
||||
await appDb.use((db) async {
|
||||
final transaction = db.transaction(AppDb.fileDbStoreName, idbModeReadWrite);
|
||||
final store = transaction.objectStore(AppDb.fileDbStoreName);
|
||||
await store.put(AppDbFileDbEntry.fromFile(account, file1).toJson(),
|
||||
AppDbFileDbEntry.toPrimaryKey(account, file1));
|
||||
});
|
||||
final albumRepo = MockAlbumMemoryRepo([album]);
|
||||
final shareRepo = MockShareMemoryRepo([
|
||||
test_util.buildShare(id: "0", file: albumFile, shareWith: "user1"),
|
||||
test_util.buildShare(id: "1", file: file1, shareWith: "user1"),
|
||||
test_util.buildShare(id: "2", file: file1, shareWith: "user2"),
|
||||
]);
|
||||
final fileRepo = MockFileMemoryRepo([albumFile, file1]);
|
||||
|
||||
await RemoveFromAlbum(albumRepo, shareRepo, fileRepo, appDb, pref)(
|
||||
account, albumRepo.findAlbumByPath(albumFile.path), [fileItem1]);
|
||||
expect(
|
||||
shareRepo.shares,
|
||||
[
|
||||
test_util.buildShare(id: "0", file: albumFile, shareWith: "user1"),
|
||||
test_util.buildShare(id: "2", file: file1, shareWith: "user2"),
|
||||
],
|
||||
);
|
||||
}
|
||||
|
||||
/// Remove a file from a shared album (user1 -> admin, user2)
|
||||
///
|
||||
/// Expect: shares (admin -> user1, user2) for the file deleted
|
||||
|
@ -513,21 +410,17 @@ Future<void> _removeFromSharedAlbumNotOwned() async {
|
|||
final pref = Pref.scoped(PrefMemoryProvider({
|
||||
"isLabEnableSharedAlbum": true,
|
||||
}));
|
||||
final albumFile = test_util.buildAlbumFile(
|
||||
path: test_util.buildAlbumFilePath("test1.json"),
|
||||
fileId: 0,
|
||||
ownerId: "user1",
|
||||
);
|
||||
final file1 = test_util.buildJpegFile(
|
||||
path: "remote.php/dav/files/admin/test1.jpg",
|
||||
fileId: 1,
|
||||
lastModified: DateTime.utc(2020, 1, 2, 3, 4, 5),
|
||||
);
|
||||
final fileItem1 = AlbumFileItem(
|
||||
file: file1,
|
||||
addedBy: "admin".toCi(),
|
||||
addedAt: DateTime.utc(2020, 1, 2, 3, 4, 5),
|
||||
);
|
||||
final files = (test_util.FilesBuilder(initialFileId: 1)
|
||||
..addJpeg("admin/test1.jpg"))
|
||||
.build();
|
||||
final album = (test_util.AlbumBuilder(ownerId: "user1")
|
||||
..addFileItem(files[0])
|
||||
..addShare("admin")
|
||||
..addShare("user2"))
|
||||
.build();
|
||||
final file1 = files[0];
|
||||
final fileItem1 = test_util.AlbumBuilder.fileItemsOf(album)[0];
|
||||
final albumFile = album.albumFile!;
|
||||
final appDb = MockAppDb();
|
||||
await appDb.use((db) async {
|
||||
final transaction = db.transaction(AppDb.fileDbStoreName, idbModeReadWrite);
|
||||
|
@ -535,23 +428,7 @@ Future<void> _removeFromSharedAlbumNotOwned() async {
|
|||
await store.put(AppDbFileDbEntry.fromFile(account, file1).toJson(),
|
||||
AppDbFileDbEntry.toPrimaryKey(account, file1));
|
||||
});
|
||||
final albumRepo = MockAlbumMemoryRepo([
|
||||
Album(
|
||||
lastUpdated: DateTime.utc(2020, 1, 2, 3, 4, 5),
|
||||
name: "test",
|
||||
provider: AlbumStaticProvider(
|
||||
items: [fileItem1],
|
||||
latestItemTime: file1.lastModified,
|
||||
),
|
||||
coverProvider: AlbumAutoCoverProvider(coverFile: file1),
|
||||
sortProvider: const AlbumNullSortProvider(),
|
||||
shares: [
|
||||
AlbumShare(userId: "admin".toCi()),
|
||||
AlbumShare(userId: "user2".toCi()),
|
||||
],
|
||||
albumFile: albumFile,
|
||||
),
|
||||
]);
|
||||
final albumRepo = MockAlbumMemoryRepo([album]);
|
||||
final shareRepo = MockShareMemoryRepo([
|
||||
test_util.buildShare(
|
||||
id: "0", uidOwner: "user1", file: albumFile, shareWith: "admin"),
|
||||
|
@ -585,21 +462,17 @@ Future<void> _removeFromSharedAlbumNotOwnedWithOwnerShare() async {
|
|||
final pref = Pref.scoped(PrefMemoryProvider({
|
||||
"isLabEnableSharedAlbum": true,
|
||||
}));
|
||||
final albumFile = test_util.buildAlbumFile(
|
||||
path: test_util.buildAlbumFilePath("test1.json"),
|
||||
fileId: 0,
|
||||
ownerId: "user1",
|
||||
);
|
||||
final file1 = test_util.buildJpegFile(
|
||||
path: "remote.php/dav/files/admin/test1.jpg",
|
||||
fileId: 1,
|
||||
lastModified: DateTime.utc(2020, 1, 2, 3, 4, 5),
|
||||
);
|
||||
final fileItem1 = AlbumFileItem(
|
||||
file: file1,
|
||||
addedBy: "admin".toCi(),
|
||||
addedAt: DateTime.utc(2020, 1, 2, 3, 4, 5),
|
||||
);
|
||||
final files = (test_util.FilesBuilder(initialFileId: 1)
|
||||
..addJpeg("admin/test1.jpg"))
|
||||
.build();
|
||||
final album = (test_util.AlbumBuilder(ownerId: "user1")
|
||||
..addFileItem(files[0])
|
||||
..addShare("admin")
|
||||
..addShare("user2"))
|
||||
.build();
|
||||
final file1 = files[0];
|
||||
final fileItem1 = test_util.AlbumBuilder.fileItemsOf(album)[0];
|
||||
final albumFile = album.albumFile!;
|
||||
final appDb = MockAppDb();
|
||||
await appDb.use((db) async {
|
||||
final transaction = db.transaction(AppDb.fileDbStoreName, idbModeReadWrite);
|
||||
|
@ -607,23 +480,7 @@ Future<void> _removeFromSharedAlbumNotOwnedWithOwnerShare() async {
|
|||
await store.put(AppDbFileDbEntry.fromFile(account, file1).toJson(),
|
||||
AppDbFileDbEntry.toPrimaryKey(account, file1));
|
||||
});
|
||||
final albumRepo = MockAlbumMemoryRepo([
|
||||
Album(
|
||||
lastUpdated: DateTime.utc(2020, 1, 2, 3, 4, 5),
|
||||
name: "test",
|
||||
provider: AlbumStaticProvider(
|
||||
items: [fileItem1],
|
||||
latestItemTime: file1.lastModified,
|
||||
),
|
||||
coverProvider: AlbumAutoCoverProvider(coverFile: file1),
|
||||
sortProvider: const AlbumNullSortProvider(),
|
||||
shares: [
|
||||
AlbumShare(userId: "admin".toCi()),
|
||||
AlbumShare(userId: "user2".toCi()),
|
||||
],
|
||||
albumFile: albumFile,
|
||||
),
|
||||
]);
|
||||
final albumRepo = MockAlbumMemoryRepo([album]);
|
||||
final shareRepo = MockShareMemoryRepo([
|
||||
test_util.buildShare(
|
||||
id: "0", uidOwner: "user1", file: albumFile, shareWith: "admin"),
|
||||
|
@ -649,69 +506,3 @@ Future<void> _removeFromSharedAlbumNotOwnedWithOwnerShare() async {
|
|||
],
|
||||
);
|
||||
}
|
||||
|
||||
/// Remove a file from a shared album (admin -> user1) with extra unmanaged
|
||||
/// share (admin -> user2)
|
||||
///
|
||||
/// Expect: share (admin -> user1) for the file deleted;
|
||||
/// extra share (admin -> user2) unchanged
|
||||
Future<void> _removeFromSharedAlbumLeaveExtraShare() async {
|
||||
final account = test_util.buildAccount();
|
||||
final pref = Pref.scoped(PrefMemoryProvider({
|
||||
"isLabEnableSharedAlbum": true,
|
||||
}));
|
||||
final albumFile = test_util.buildAlbumFile(
|
||||
path: test_util.buildAlbumFilePath("test1.json"),
|
||||
fileId: 0,
|
||||
ownerId: "user1",
|
||||
);
|
||||
final file1 = test_util.buildJpegFile(
|
||||
path: "remote.php/dav/files/admin/test1.jpg",
|
||||
fileId: 1,
|
||||
lastModified: DateTime.utc(2020, 1, 2, 3, 4, 5),
|
||||
);
|
||||
final fileItem1 = AlbumFileItem(
|
||||
file: file1,
|
||||
addedBy: "admin".toCi(),
|
||||
addedAt: DateTime.utc(2020, 1, 2, 3, 4, 5),
|
||||
);
|
||||
final appDb = MockAppDb();
|
||||
await appDb.use((db) async {
|
||||
final transaction = db.transaction(AppDb.fileDbStoreName, idbModeReadWrite);
|
||||
final store = transaction.objectStore(AppDb.fileDbStoreName);
|
||||
await store.put(AppDbFileDbEntry.fromFile(account, file1).toJson(),
|
||||
AppDbFileDbEntry.toPrimaryKey(account, file1));
|
||||
});
|
||||
final albumRepo = MockAlbumMemoryRepo([
|
||||
Album(
|
||||
lastUpdated: DateTime.utc(2020, 1, 2, 3, 4, 5),
|
||||
name: "test",
|
||||
provider: AlbumStaticProvider(
|
||||
items: [fileItem1],
|
||||
latestItemTime: file1.lastModified,
|
||||
),
|
||||
coverProvider: AlbumAutoCoverProvider(coverFile: file1),
|
||||
sortProvider: const AlbumNullSortProvider(),
|
||||
shares: [AlbumShare(userId: "admin".toCi())],
|
||||
albumFile: albumFile,
|
||||
),
|
||||
]);
|
||||
final shareRepo = MockShareMemoryRepo([
|
||||
test_util.buildShare(
|
||||
id: "0", uidOwner: "user1", file: albumFile, shareWith: "admin"),
|
||||
test_util.buildShare(id: "1", file: file1, shareWith: "user1"),
|
||||
test_util.buildShare(id: "2", file: file1, shareWith: "user2"),
|
||||
]);
|
||||
final fileRepo = MockFileMemoryRepo([albumFile, file1]);
|
||||
|
||||
await RemoveFromAlbum(albumRepo, shareRepo, fileRepo, appDb, pref)(
|
||||
account, albumRepo.findAlbumByPath(albumFile.path), [fileItem1]);
|
||||
expect(
|
||||
shareRepo.shares,
|
||||
[
|
||||
test_util.buildShare(
|
||||
id: "0", uidOwner: "user1", file: albumFile, shareWith: "admin"),
|
||||
test_util.buildShare(id: "2", file: file1, shareWith: "user2"),
|
||||
],
|
||||
);
|
||||
}
|
||||
|
|
|
@ -1,11 +1,6 @@
|
|||
import 'package:event_bus/event_bus.dart';
|
||||
import 'package:kiwi/kiwi.dart';
|
||||
import 'package:nc_photos/ci_string.dart';
|
||||
import 'package:nc_photos/entity/album.dart';
|
||||
import 'package:nc_photos/entity/album/cover_provider.dart';
|
||||
import 'package:nc_photos/entity/album/item.dart';
|
||||
import 'package:nc_photos/entity/album/provider.dart';
|
||||
import 'package:nc_photos/entity/album/sort_provider.dart';
|
||||
import 'package:nc_photos/use_case/share_album_with_user.dart';
|
||||
import 'package:test/test.dart';
|
||||
|
||||
|
@ -29,20 +24,9 @@ void main() {
|
|||
/// a new share (admin -> user1) is created for the album json
|
||||
Future<void> _shareWithoutFile() async {
|
||||
final account = test_util.buildAccount();
|
||||
final albumFile = test_util.buildAlbumFile(
|
||||
path: test_util.buildAlbumFilePath("test1.json"),
|
||||
fileId: 0,
|
||||
);
|
||||
final albumRepo = MockAlbumMemoryRepo([
|
||||
Album(
|
||||
lastUpdated: DateTime.utc(2020, 1, 2, 3, 4, 5),
|
||||
name: "test",
|
||||
provider: AlbumStaticProvider(items: []),
|
||||
coverProvider: AlbumAutoCoverProvider(),
|
||||
sortProvider: const AlbumNullSortProvider(),
|
||||
albumFile: albumFile,
|
||||
),
|
||||
]);
|
||||
final album = test_util.AlbumBuilder().build();
|
||||
final albumFile = album.albumFile!;
|
||||
final albumRepo = MockAlbumMemoryRepo([album]);
|
||||
final shareRepo = MockShareMemoryRepo();
|
||||
|
||||
await ShareAlbumWithUser(shareRepo, albumRepo)(
|
||||
|
@ -52,7 +36,7 @@ Future<void> _shareWithoutFile() async {
|
|||
);
|
||||
expect(
|
||||
albumRepo.findAlbumByPath(albumFile.path).shares,
|
||||
[AlbumShare(userId: "user1".toCi())],
|
||||
[test_util.buildAlbumShare(userId: "user1")],
|
||||
);
|
||||
expect(
|
||||
shareRepo.shares,
|
||||
|
@ -67,33 +51,13 @@ Future<void> _shareWithoutFile() async {
|
|||
/// files
|
||||
Future<void> _shareWithFile() async {
|
||||
final account = test_util.buildAccount();
|
||||
final albumFile = test_util.buildAlbumFile(
|
||||
path: test_util.buildAlbumFilePath("test1.json"),
|
||||
fileId: 0,
|
||||
);
|
||||
final file1 = test_util.buildJpegFile(
|
||||
path: "remote.php/dav/files/admin/test1.jpg",
|
||||
fileId: 1,
|
||||
lastModified: DateTime.utc(2020, 1, 2, 3, 4, 5),
|
||||
);
|
||||
final fileItem1 = AlbumFileItem(
|
||||
file: file1,
|
||||
addedBy: "admin".toCi(),
|
||||
addedAt: DateTime.utc(2020, 1, 2, 3, 4, 5),
|
||||
);
|
||||
final albumRepo = MockAlbumMemoryRepo([
|
||||
Album(
|
||||
lastUpdated: DateTime.utc(2020, 1, 2, 3, 4, 5),
|
||||
name: "test",
|
||||
provider: AlbumStaticProvider(
|
||||
items: [fileItem1],
|
||||
latestItemTime: file1.lastModified,
|
||||
),
|
||||
coverProvider: AlbumAutoCoverProvider(coverFile: file1),
|
||||
sortProvider: const AlbumNullSortProvider(),
|
||||
albumFile: albumFile,
|
||||
),
|
||||
]);
|
||||
final files = (test_util.FilesBuilder(initialFileId: 1)
|
||||
..addJpeg("admin/test1.jpg"))
|
||||
.build();
|
||||
final album = (test_util.AlbumBuilder()..addFileItem(files[0])).build();
|
||||
final file1 = files[0];
|
||||
final albumFile = album.albumFile!;
|
||||
final albumRepo = MockAlbumMemoryRepo([album]);
|
||||
final shareRepo = MockShareMemoryRepo();
|
||||
|
||||
await ShareAlbumWithUser(shareRepo, albumRepo)(
|
||||
|
@ -103,7 +67,7 @@ Future<void> _shareWithFile() async {
|
|||
);
|
||||
expect(
|
||||
albumRepo.findAlbumByPath(albumFile.path).shares,
|
||||
[AlbumShare(userId: "user1".toCi())],
|
||||
[test_util.buildAlbumShare(userId: "user1")],
|
||||
);
|
||||
expect(
|
||||
shareRepo.shares,
|
||||
|
@ -120,34 +84,12 @@ Future<void> _shareWithFile() async {
|
|||
/// new shares (admin -> user1) are created for the album json
|
||||
Future<void> _shareWithFileOwnedByUser() async {
|
||||
final account = test_util.buildAccount();
|
||||
final albumFile = test_util.buildAlbumFile(
|
||||
path: test_util.buildAlbumFilePath("test1.json"),
|
||||
fileId: 0,
|
||||
);
|
||||
final file1 = test_util.buildJpegFile(
|
||||
path: "remote.php/dav/files/admin/test1.jpg",
|
||||
fileId: 1,
|
||||
lastModified: DateTime.utc(2020, 1, 2, 3, 4, 5),
|
||||
ownerId: "user1"
|
||||
);
|
||||
final fileItem1 = AlbumFileItem(
|
||||
file: file1,
|
||||
addedBy: "admin".toCi(),
|
||||
addedAt: DateTime.utc(2020, 1, 2, 3, 4, 5),
|
||||
);
|
||||
final albumRepo = MockAlbumMemoryRepo([
|
||||
Album(
|
||||
lastUpdated: DateTime.utc(2020, 1, 2, 3, 4, 5),
|
||||
name: "test",
|
||||
provider: AlbumStaticProvider(
|
||||
items: [fileItem1],
|
||||
latestItemTime: file1.lastModified,
|
||||
),
|
||||
coverProvider: AlbumAutoCoverProvider(coverFile: file1),
|
||||
sortProvider: const AlbumNullSortProvider(),
|
||||
albumFile: albumFile,
|
||||
),
|
||||
]);
|
||||
final files = (test_util.FilesBuilder(initialFileId: 1)
|
||||
..addJpeg("admin/test1.jpg", ownerId: "user1"))
|
||||
.build();
|
||||
final album = (test_util.AlbumBuilder()..addFileItem(files[0])).build();
|
||||
final albumFile = album.albumFile!;
|
||||
final albumRepo = MockAlbumMemoryRepo([album]);
|
||||
final shareRepo = MockShareMemoryRepo();
|
||||
|
||||
await ShareAlbumWithUser(shareRepo, albumRepo)(
|
||||
|
@ -157,7 +99,7 @@ Future<void> _shareWithFileOwnedByUser() async {
|
|||
);
|
||||
expect(
|
||||
albumRepo.findAlbumByPath(albumFile.path).shares,
|
||||
[AlbumShare(userId: "user1".toCi())],
|
||||
[test_util.buildAlbumShare(userId: "user1")],
|
||||
);
|
||||
expect(
|
||||
shareRepo.shares,
|
||||
|
@ -173,21 +115,9 @@ Future<void> _shareWithFileOwnedByUser() async {
|
|||
/// a new share (admin -> user2) is created for the album json
|
||||
Future<void> _shareSharedAlbum() async {
|
||||
final account = test_util.buildAccount();
|
||||
final albumFile = test_util.buildAlbumFile(
|
||||
path: test_util.buildAlbumFilePath("test1.json"),
|
||||
fileId: 0,
|
||||
);
|
||||
final albumRepo = MockAlbumMemoryRepo([
|
||||
Album(
|
||||
lastUpdated: DateTime.utc(2020, 1, 2, 3, 4, 5),
|
||||
name: "test",
|
||||
provider: AlbumStaticProvider(items: []),
|
||||
coverProvider: AlbumAutoCoverProvider(),
|
||||
sortProvider: const AlbumNullSortProvider(),
|
||||
shares: [AlbumShare(userId: "user1".toCi())],
|
||||
albumFile: albumFile,
|
||||
),
|
||||
]);
|
||||
final album = (test_util.AlbumBuilder()..addShare("user1")).build();
|
||||
final albumFile = album.albumFile!;
|
||||
final albumRepo = MockAlbumMemoryRepo([album]);
|
||||
final shareRepo = MockShareMemoryRepo([
|
||||
test_util.buildShare(id: "0", file: albumFile, shareWith: "user1"),
|
||||
]);
|
||||
|
@ -200,8 +130,8 @@ Future<void> _shareSharedAlbum() async {
|
|||
expect(
|
||||
albumRepo.findAlbumByPath(albumFile.path).shares,
|
||||
[
|
||||
AlbumShare(userId: "user1".toCi()),
|
||||
AlbumShare(userId: "user2".toCi()),
|
||||
test_util.buildAlbumShare(userId: "user1"),
|
||||
test_util.buildAlbumShare(userId: "user2"),
|
||||
],
|
||||
);
|
||||
expect(
|
||||
|
|
|
@ -1,11 +1,6 @@
|
|||
import 'package:event_bus/event_bus.dart';
|
||||
import 'package:kiwi/kiwi.dart';
|
||||
import 'package:nc_photos/ci_string.dart';
|
||||
import 'package:nc_photos/entity/album.dart';
|
||||
import 'package:nc_photos/entity/album/cover_provider.dart';
|
||||
import 'package:nc_photos/entity/album/item.dart';
|
||||
import 'package:nc_photos/entity/album/provider.dart';
|
||||
import 'package:nc_photos/entity/album/sort_provider.dart';
|
||||
import 'package:nc_photos/use_case/unshare_album_with_user.dart';
|
||||
import 'package:test/test.dart';
|
||||
|
||||
|
@ -28,24 +23,12 @@ void main() {
|
|||
/// share (admin -> user1) for the album json deleted
|
||||
Future<void> _unshareWithoutFile() async {
|
||||
final account = test_util.buildAccount();
|
||||
final albumFile = test_util.buildAlbumFile(
|
||||
path: test_util.buildAlbumFilePath("test1.json"),
|
||||
fileId: 0,
|
||||
);
|
||||
final albumRepo = MockAlbumMemoryRepo([
|
||||
Album(
|
||||
lastUpdated: DateTime.utc(2020, 1, 2, 3, 4, 5),
|
||||
name: "test",
|
||||
provider: AlbumStaticProvider(items: []),
|
||||
coverProvider: AlbumAutoCoverProvider(),
|
||||
sortProvider: const AlbumNullSortProvider(),
|
||||
shares: [
|
||||
AlbumShare(userId: "user1".toCi()),
|
||||
AlbumShare(userId: "user2".toCi()),
|
||||
],
|
||||
albumFile: albumFile,
|
||||
),
|
||||
]);
|
||||
final album = (test_util.AlbumBuilder()
|
||||
..addShare("user1")
|
||||
..addShare("user2"))
|
||||
.build();
|
||||
final albumFile = album.albumFile!;
|
||||
final albumRepo = MockAlbumMemoryRepo([album]);
|
||||
final fileRepo = MockFileMemoryRepo([albumFile]);
|
||||
final shareRepo = MockShareMemoryRepo([
|
||||
test_util.buildShare(id: "0", file: albumFile, shareWith: "user1"),
|
||||
|
@ -55,7 +38,7 @@ Future<void> _unshareWithoutFile() async {
|
|||
await UnshareAlbumWithUser(shareRepo, fileRepo, albumRepo)(
|
||||
account, albumRepo.findAlbumByPath(albumFile.path), "user1".toCi());
|
||||
expect(albumRepo.findAlbumByPath(albumFile.path).shares,
|
||||
[AlbumShare(userId: "user2".toCi())]);
|
||||
[test_util.buildAlbumShare(userId: "user2")]);
|
||||
expect(
|
||||
shareRepo.shares,
|
||||
[test_util.buildShare(id: "1", file: albumFile, shareWith: "user2")],
|
||||
|
@ -69,37 +52,17 @@ Future<void> _unshareWithoutFile() async {
|
|||
/// shares (admin -> user1) for the album files deleted
|
||||
Future<void> _unshareWithFile() async {
|
||||
final account = test_util.buildAccount();
|
||||
final albumFile = test_util.buildAlbumFile(
|
||||
path: test_util.buildAlbumFilePath("test1.json"),
|
||||
fileId: 0,
|
||||
);
|
||||
final file1 = test_util.buildJpegFile(
|
||||
path: "remote.php/dav/files/admin/test1.jpg",
|
||||
fileId: 1,
|
||||
lastModified: DateTime.utc(2020, 1, 2, 3, 4, 5),
|
||||
);
|
||||
final fileItem1 = AlbumFileItem(
|
||||
file: file1,
|
||||
addedBy: "admin".toCi(),
|
||||
addedAt: DateTime.utc(2020, 1, 2, 3, 4, 5),
|
||||
);
|
||||
final albumRepo = MockAlbumMemoryRepo([
|
||||
Album(
|
||||
lastUpdated: DateTime.utc(2020, 1, 2, 3, 4, 5),
|
||||
name: "test",
|
||||
provider: AlbumStaticProvider(
|
||||
items: [fileItem1],
|
||||
latestItemTime: file1.lastModified,
|
||||
),
|
||||
coverProvider: AlbumAutoCoverProvider(coverFile: file1),
|
||||
sortProvider: const AlbumNullSortProvider(),
|
||||
shares: [
|
||||
AlbumShare(userId: "user1".toCi()),
|
||||
AlbumShare(userId: "user2".toCi()),
|
||||
],
|
||||
albumFile: albumFile,
|
||||
),
|
||||
]);
|
||||
final files = (test_util.FilesBuilder(initialFileId: 1)
|
||||
..addJpeg("admin/test1.jpg"))
|
||||
.build();
|
||||
final album = (test_util.AlbumBuilder()
|
||||
..addFileItem(files[0])
|
||||
..addShare("user1")
|
||||
..addShare("user2"))
|
||||
.build();
|
||||
final file1 = files[0];
|
||||
final albumFile = album.albumFile!;
|
||||
final albumRepo = MockAlbumMemoryRepo([album]);
|
||||
final fileRepo = MockFileMemoryRepo([albumFile, file1]);
|
||||
final shareRepo = MockShareMemoryRepo([
|
||||
test_util.buildShare(id: "0", file: albumFile, shareWith: "user1"),
|
||||
|
@ -111,7 +74,7 @@ Future<void> _unshareWithFile() async {
|
|||
await UnshareAlbumWithUser(shareRepo, fileRepo, albumRepo)(
|
||||
account, albumRepo.findAlbumByPath(albumFile.path), "user1".toCi());
|
||||
expect(albumRepo.findAlbumByPath(albumFile.path).shares,
|
||||
[AlbumShare(userId: "user2".toCi())]);
|
||||
[test_util.buildAlbumShare(userId: "user2")]);
|
||||
expect(
|
||||
shareRepo.shares,
|
||||
[
|
||||
|
@ -130,73 +93,43 @@ Future<void> _unshareWithFile() async {
|
|||
/// shares (user2 -> user1) created by other unchanged
|
||||
Future<void> _unshareWithFileNotOwned() async {
|
||||
final account = test_util.buildAccount();
|
||||
final albumFile = test_util.buildAlbumFile(
|
||||
path: test_util.buildAlbumFilePath("test1.json"),
|
||||
fileId: 0,
|
||||
);
|
||||
final file1 = test_util.buildJpegFile(
|
||||
path: "remote.php/dav/files/admin/test1.jpg",
|
||||
fileId: 1,
|
||||
lastModified: DateTime.utc(2020, 1, 2, 3, 4, 5),
|
||||
);
|
||||
final fileItem1 = AlbumFileItem(
|
||||
file: file1,
|
||||
addedBy: "admin".toCi(),
|
||||
addedAt: DateTime.utc(2020, 1, 2, 3, 4, 5),
|
||||
);
|
||||
final file2 = test_util.buildJpegFile(
|
||||
path: "remote.php/dav/files/user2/test2.jpg",
|
||||
fileId: 2,
|
||||
lastModified: DateTime.utc(2020, 1, 2, 3, 4, 6),
|
||||
ownerId: "user2",
|
||||
);
|
||||
final fileItem2 = AlbumFileItem(
|
||||
file: file2,
|
||||
addedBy: "user2".toCi(),
|
||||
addedAt: DateTime.utc(2020, 1, 2, 3, 4, 6),
|
||||
);
|
||||
final albumRepo = MockAlbumMemoryRepo([
|
||||
Album(
|
||||
lastUpdated: DateTime.utc(2020, 1, 2, 3, 4, 5),
|
||||
name: "test",
|
||||
provider: AlbumStaticProvider(
|
||||
items: [fileItem1, fileItem2],
|
||||
latestItemTime: file2.lastModified,
|
||||
),
|
||||
coverProvider: AlbumAutoCoverProvider(coverFile: file2),
|
||||
sortProvider: const AlbumNullSortProvider(),
|
||||
shares: [
|
||||
AlbumShare(userId: "user1".toCi()),
|
||||
AlbumShare(userId: "user2".toCi()),
|
||||
],
|
||||
albumFile: albumFile,
|
||||
),
|
||||
]);
|
||||
final fileRepo = MockFileMemoryRepo([albumFile, file1]);
|
||||
final files = (test_util.FilesBuilder(initialFileId: 1)
|
||||
..addJpeg("admin/test1.jpg")
|
||||
..addJpeg("user2/test2.jpg", ownerId: "user2"))
|
||||
.build();
|
||||
final album = (test_util.AlbumBuilder()
|
||||
..addFileItem(files[0])
|
||||
..addFileItem(files[1], addedBy: "user2")
|
||||
..addShare("user1")
|
||||
..addShare("user2"))
|
||||
.build();
|
||||
final albumFile = album.albumFile!;
|
||||
final albumRepo = MockAlbumMemoryRepo([album]);
|
||||
final fileRepo = MockFileMemoryRepo([albumFile, files[0]]);
|
||||
final shareRepo = MockShareMemoryRepo([
|
||||
test_util.buildShare(id: "0", file: albumFile, shareWith: "user1"),
|
||||
test_util.buildShare(id: "1", file: albumFile, shareWith: "user2"),
|
||||
test_util.buildShare(id: "2", file: file1, shareWith: "user1"),
|
||||
test_util.buildShare(id: "3", file: file1, shareWith: "user2"),
|
||||
test_util.buildShare(id: "2", file: files[0], shareWith: "user1"),
|
||||
test_util.buildShare(id: "3", file: files[0], shareWith: "user2"),
|
||||
test_util.buildShare(
|
||||
id: "4", uidOwner: "user2", file: file2, shareWith: "admin"),
|
||||
id: "4", uidOwner: "user2", file: files[1], shareWith: "admin"),
|
||||
test_util.buildShare(
|
||||
id: "5", uidOwner: "user2", file: file2, shareWith: "user1"),
|
||||
id: "5", uidOwner: "user2", file: files[1], shareWith: "user1"),
|
||||
]);
|
||||
|
||||
await UnshareAlbumWithUser(shareRepo, fileRepo, albumRepo)(
|
||||
account, albumRepo.findAlbumByPath(albumFile.path), "user1".toCi());
|
||||
expect(albumRepo.findAlbumByPath(albumFile.path).shares,
|
||||
[AlbumShare(userId: "user2".toCi())]);
|
||||
[test_util.buildAlbumShare(userId: "user2")]);
|
||||
expect(
|
||||
shareRepo.shares,
|
||||
[
|
||||
test_util.buildShare(id: "1", file: albumFile, shareWith: "user2"),
|
||||
test_util.buildShare(id: "3", file: file1, shareWith: "user2"),
|
||||
test_util.buildShare(id: "3", file: files[0], shareWith: "user2"),
|
||||
test_util.buildShare(
|
||||
id: "4", uidOwner: "user2", file: file2, shareWith: "admin"),
|
||||
id: "4", uidOwner: "user2", file: files[1], shareWith: "admin"),
|
||||
test_util.buildShare(
|
||||
id: "5", uidOwner: "user2", file: file2, shareWith: "user1"),
|
||||
id: "5", uidOwner: "user2", file: files[1], shareWith: "user1"),
|
||||
],
|
||||
);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue