Associating an artwork to each medium, ref #699
This commit is contained in:
@@ -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
|
||||
Reference in New Issue
Block a user