Subsonic API: added star support

This commit is contained in:
emeric
2019-06-16 15:11:42 +02:00
parent 08988b17a2
commit ef648d5cb6
12 changed files with 611 additions and 55 deletions
+171
View File
@@ -964,6 +964,174 @@ testSingleTrackSingleReleaseSingleArtistMultiClusters(Wt::Dbo::Session& session)
}
}
static
void
testSingleStarredArtist(Wt::Dbo::Session& session)
{
IdType artistId {};
IdType userId {};
{
Wt::Dbo::Transaction transaction {session};
auto artist {Artist::create(session, "MyArtist")};
CHECK(artist);
auto user {User::create(session)};
CHECK(user);
session.flush();
artistId = artist.id();
userId = user.id();
}
{
Wt::Dbo::Transaction transaction {session};
auto user {User::getById(session, userId)};
CHECK(user);
auto artist {Artist::getById(session, artistId)};
CHECK(artist);
user.modify()->starArtist(artist);
}
{
Wt::Dbo::Transaction transaction {session};
auto user {User::getById(session, userId)};
CHECK(user);
auto artists {user->getStarredArtists()};
CHECK(artists.size() == 1);
CHECK(artists.front().id() == artistId);
auto artist {Artist::getById(session, artistId)};
CHECK(user->hasStarredArtist(artist));
}
{
Wt::Dbo::Transaction transaction {session};
auto user {User::getById(session, userId)};
CHECK(user);
auto artist {Artist::getById(session, artistId)};
CHECK(artist);
user.remove();
artist.remove();
}
}
static
void
testSingleStarredRelease(Wt::Dbo::Session& session)
{
IdType releaseId {};
IdType userId {};
{
Wt::Dbo::Transaction transaction {session};
auto release {Release::create(session, "MyRelease")};
CHECK(release);
auto user {User::create(session)};
CHECK(user);
session.flush();
releaseId = release.id();
userId = user.id();
}
{
Wt::Dbo::Transaction transaction {session};
auto user {User::getById(session, userId)};
CHECK(user);
auto release {Release::getById(session, releaseId)};
CHECK(release);
user.modify()->starRelease(release);
}
{
Wt::Dbo::Transaction transaction {session};
auto user {User::getById(session, userId)};
CHECK(user);
auto releases {user->getStarredReleases()};
CHECK(releases.size() == 1);
CHECK(releases.front().id() == releaseId);
auto release {Release::getById(session, releaseId)};
CHECK(user->hasStarredRelease(release));
}
{
Wt::Dbo::Transaction transaction {session};
auto user {User::getById(session, userId)};
CHECK(user);
auto release {Release::getById(session, releaseId)};
CHECK(release);
user.remove();
release.remove();
}
}
static
void
testSingleStarredTrack(Wt::Dbo::Session& session)
{
IdType trackId {};
IdType userId {};
{
Wt::Dbo::Transaction transaction {session};
auto track {Track::create(session, "MyTrackFile")};
CHECK(track);
auto user {User::create(session)};
CHECK(user);
session.flush();
trackId = track.id();
userId = user.id();
}
{
Wt::Dbo::Transaction transaction {session};
auto user {User::getById(session, userId)};
CHECK(user);
auto track {Track::getById(session, trackId)};
CHECK(track);
user.modify()->starTrack(track);
}
{
Wt::Dbo::Transaction transaction {session};
auto user {User::getById(session, userId)};
CHECK(user);
auto tracks {user->getStarredTracks()};
CHECK(tracks.size() == 1);
CHECK(tracks.front().id() == trackId);
auto track {Track::getById(session, trackId)};
CHECK(user->hasStarredTrack(track));
}
{
Wt::Dbo::Transaction transaction {session};
auto user {User::getById(session, userId)};
CHECK(user);
auto track {Track::getById(session, trackId)};
CHECK(track);
user.remove();
track.remove();
}
}
static
void
testDatabaseEmpty(Wt::Dbo::Session& session)
@@ -1025,6 +1193,9 @@ int main(int argc, char* argv[])
RUN_TEST(testSingleTrackSingleReleaseSingleArtistSingleCluster);
RUN_TEST(testSingleTrackSingleReleaseSingleArtistMultiClusters);
RUN_TEST(testSingleStarredArtist);
RUN_TEST(testSingleStarredRelease);
RUN_TEST(testSingleStarredTrack);
}
catch (std::exception& e)
{