Associating an artwork to each medium, ref #699

This commit is contained in:
emeric
2025-07-30 20:12:01 +02:00
parent 0ceaf4cfaa
commit 6bf08b94ae
12 changed files with 485 additions and 22 deletions
+55
View File
@@ -20,10 +20,12 @@
#include "Common.hpp"
#include "database/objects/Directory.hpp"
#include "database/objects/Medium.hpp"
namespace lms::db::tests
{
using ScopedDirectory = ScopedEntity<db::Directory>;
using ScopedMedium = ScopedEntity<db::Medium>;
TEST_F(DatabaseFixture, Directory)
{
@@ -285,4 +287,57 @@ namespace lms::db::tests
EXPECT_EQ(res.size(), 0);
}
}
TEST_F(DatabaseFixture, Directory_findByMedium)
{
ScopedDirectory dir1{ session, "/root" };
ScopedDirectory dir2{ session, "/root" };
ScopedTrack track1{ session };
ScopedTrack track2{ session };
ScopedRelease release1{ session, "Release1" };
ScopedMedium medium1{ session, release1.lockAndGet() };
ScopedRelease release2{ session, "Release2" };
ScopedMedium medium2{ session, release1.lockAndGet() };
{
auto transaction{ session.createReadTransaction() };
Directory::FindParameters params;
params.setMedium(medium1.getId());
bool visited{};
Directory::find(session, params, [&](const Directory::pointer&) {
visited = true;
});
EXPECT_FALSE(visited);
}
{
auto transaction{ session.createWriteTransaction() };
track1.get().modify()->setMedium(medium1.get());
track1.get().modify()->setRelease(release1.get());
track1.get().modify()->setDirectory(dir1.get());
track2.get().modify()->setMedium(medium2.get());
track2.get().modify()->setRelease(release2.get());
track2.get().modify()->setDirectory(dir2.get());
}
{
auto transaction{ session.createReadTransaction() };
Directory::FindParameters params;
params.setMedium(medium1.getId());
std::vector<DirectoryId> visitedDirectories;
Directory::find(session, params, [&](const Directory::pointer& dir) {
visitedDirectories.push_back(dir->getId());
});
ASSERT_EQ(visitedDirectories.size(), 1);
EXPECT_EQ(visitedDirectories[0], dir1.getId());
}
}
} // namespace lms::db::tests