nc-photos/np_db_sqlite/test/database/file_extension_test.dart

85 lines
2.2 KiB
Dart
Raw Normal View History

import 'package:np_common/object_util.dart';
2024-05-07 17:12:52 +02:00
import 'package:np_datetime/np_datetime.dart';
import 'package:np_db_sqlite/src/database.dart';
import 'package:np_db_sqlite/src/database_extension.dart';
import 'package:test/test.dart';
import '../test_util.dart' as util;
void main() {
group("database.SqliteDbFileExtension", () {
test("cleanUpDanglingFiles", _cleanUpDanglingFiles);
test("countFileGroupsByDate", _countFileGroupsByDate);
});
}
/// Clean up Files without an associated entry in AccountFiles
///
/// Expect: Dangling files deleted
Future<void> _cleanUpDanglingFiles() async {
final account = util.buildAccount();
final files = (util.FilesBuilder()
..addDir("admin")
..addJpeg("admin/test1.jpg"))
.build();
final db = util.buildTestDb();
addTearDown(() => db.close());
await db.transaction(() async {
await db.insertAccounts([account]);
await util.insertFiles(db, account, files);
await db.alsoFuture((db) async {
await db.into(db.files).insert(FilesCompanion.insert(
server: 1,
fileId: files.length,
));
});
});
expect(
await db.select(db.files).map((f) => f.fileId).get(),
[0, 1, 2],
);
await db.let((db) async {
await db.cleanUpDanglingFiles();
});
expect(
await db.select(db.files).map((f) => f.fileId).get(),
[0, 1],
);
}
Future<void> _countFileGroupsByDate() async {
final account = util.buildAccount();
final files = (util.FilesBuilder()
..addDir("admin")
..addJpeg(
"admin/test1.jpg",
lastModified: DateTime(2024, 1, 2, 3, 4, 5),
)
..addJpeg(
"admin/test2.jpg",
lastModified: DateTime(2024, 1, 2, 4, 5, 6),
)
..addJpeg(
"admin/test3.jpg",
lastModified: DateTime(2024, 1, 3, 4, 5, 6),
))
.build();
final db = util.buildTestDb();
addTearDown(() => db.close());
await db.transaction(() async {
await db.insertAccounts([account]);
await util.insertFiles(db, account, files);
});
final result = await db.countFileGroupsByDate(account: ByAccount.db(account));
expect(
result.dateCount,
{
2024-05-07 17:12:52 +02:00
Date(2024, 1, 2): 2,
Date(2024, 1, 3): 1,
},
);
}