Fixed unit tests

This commit is contained in:
emeric
2022-07-03 15:02:19 +02:00
parent 51a3f6ba6f
commit 82dd6428f1
5 changed files with 39 additions and 20 deletions
@@ -576,6 +576,12 @@ TrackList::getDuration() const
return query.resultValue();
}
void
TrackList::setLastModifiedDateTime(const Wt::WDateTime& dateTime)
{
_lastModifiedDateTime = Utils::normalizeDateTime(dateTime);
}
std::vector<Artist::pointer>
TrackList::getTopArtists(const std::vector<ClusterId>& clusterIds, std::optional<TrackArtistLinkType> linkType, std::optional<Range> range, bool& moreResults) const
{
@@ -41,6 +41,7 @@ namespace Database
auto modify() { return _obj.modify(); }
void remove()
{
if (_obj->hasOnPreRemove())
_obj.modify()->onPreRemove();
_obj.remove();
}
@@ -67,9 +68,13 @@ namespace Database
protected:
template <typename> friend class ObjectPtr;
virtual void onPostCreated() {}
virtual bool hasOnPreRemove() const { return false; }
virtual void onPreRemove() {}
virtual bool hasOnPostCreated() const { return false; }
virtual void onPostCreated() {}
// Can get raw dbo ptr only from Objects
template <typename SomeObject>
static
@@ -80,7 +80,9 @@ namespace Database
typename Object::pointer res {Object::create(*this, std::forward<Args>(args)...)};
getDboSession().flush();
if (res->hasOnPostCreated())
res.modify()->onPostCreated();
return res;
}
@@ -85,7 +85,6 @@ class TrackList : public Object<TrackList, TrackListId>
void setName(const std::string& name) { _name = name; }
void setIsPublic(bool isPublic) { _isPublic = isPublic; }
void clear() { _entries.clear(); }
void setLastModifiedDateTime(const Wt::WDateTime& dateTime) { _lastModifiedDateTime = dateTime; }
// Get tracks, ordered by position
bool isEmpty() const;
@@ -106,6 +105,8 @@ class TrackList : public Object<TrackList, TrackListId>
std::vector<TrackId> getTrackIds() const;
std::chrono::milliseconds getDuration() const;
void setLastModifiedDateTime(const Wt::WDateTime& dateTime);
// Get clusters, order by occurence
std::vector<ObjectPtr<Cluster>> getClusters() const;
std::vector<std::vector<ObjectPtr<Cluster>>> getClusterGroups(const std::vector<ObjectPtr<ClusterType>>& clusterTypes, std::size_t size) const;
@@ -148,7 +149,10 @@ class TrackListEntry : public Object<TrackListEntry, TrackListEntryId>
public:
TrackListEntry() = default;
bool hasOnPostCreated() const override { return true; }
void onPostCreated() override;
bool hasOnPreRemove() const override { return true; }
void onPreRemove() override;
// find utility
+18 -16
View File
@@ -93,22 +93,8 @@ TEST_F(DatabaseFixture, TrackList_SortMethod)
{
auto transaction {session.createUniqueTransaction()};
session.create<TrackListEntry>(track.get(), trackList1.get());
}
{
auto transaction {session.createSharedTransaction()};
const auto trackLists {TrackList::find(session, TrackList::FindParameters {}.setSortMethod(TrackListSortMethod::LastModifiedDesc))};
ASSERT_EQ(trackLists.results.size(), 2);
EXPECT_EQ(trackLists.results[0], trackList1.getId());
EXPECT_EQ(trackLists.results[1], trackList2.getId());
}
{
auto transaction {session.createUniqueTransaction()};
session.create<TrackListEntry>(track.get(), trackList2.get());
trackList1.get().modify()->setLastModifiedDateTime(Wt::WDateTime {Wt::WDate {1900,1,1}});
trackList2.get().modify()->setLastModifiedDateTime(Wt::WDateTime {Wt::WDate {1900,1,2}});
}
{
@@ -119,6 +105,22 @@ TEST_F(DatabaseFixture, TrackList_SortMethod)
EXPECT_EQ(trackLists.results[0], trackList2.getId());
EXPECT_EQ(trackLists.results[1], trackList1.getId());
}
{
auto transaction {session.createUniqueTransaction()};
trackList1.get().modify()->setLastModifiedDateTime(Wt::WDateTime {Wt::WDate {1900,1,2}});
trackList2.get().modify()->setLastModifiedDateTime(Wt::WDateTime {Wt::WDate {1900,1,1}});
}
{
auto transaction {session.createSharedTransaction()};
const auto trackLists {TrackList::find(session, TrackList::FindParameters {}.setSortMethod(TrackListSortMethod::LastModifiedDesc))};
ASSERT_EQ(trackLists.results.size(), 2);
EXPECT_EQ(trackLists.results[0], trackList1.getId());
EXPECT_EQ(trackLists.results[1], trackList2.getId());
}
}
TEST_F(DatabaseFixture, SingleTrackListMultipleTrack)