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(); return query.resultValue();
} }
void
TrackList::setLastModifiedDateTime(const Wt::WDateTime& dateTime)
{
_lastModifiedDateTime = Utils::normalizeDateTime(dateTime);
}
std::vector<Artist::pointer> std::vector<Artist::pointer>
TrackList::getTopArtists(const std::vector<ClusterId>& clusterIds, std::optional<TrackArtistLinkType> linkType, std::optional<Range> range, bool& moreResults) const TrackList::getTopArtists(const std::vector<ClusterId>& clusterIds, std::optional<TrackArtistLinkType> linkType, std::optional<Range> range, bool& moreResults) const
{ {
@@ -41,7 +41,8 @@ namespace Database
auto modify() { return _obj.modify(); } auto modify() { return _obj.modify(); }
void remove() void remove()
{ {
_obj.modify()->onPreRemove(); if (_obj->hasOnPreRemove())
_obj.modify()->onPreRemove();
_obj.remove(); _obj.remove();
} }
@@ -67,9 +68,13 @@ namespace Database
protected: protected:
template <typename> friend class ObjectPtr; template <typename> friend class ObjectPtr;
virtual void onPostCreated() {}
virtual bool hasOnPreRemove() const { return false; }
virtual void onPreRemove() {} virtual void onPreRemove() {}
virtual bool hasOnPostCreated() const { return false; }
virtual void onPostCreated() {}
// Can get raw dbo ptr only from Objects // Can get raw dbo ptr only from Objects
template <typename SomeObject> template <typename SomeObject>
static static
@@ -80,7 +80,9 @@ namespace Database
typename Object::pointer res {Object::create(*this, std::forward<Args>(args)...)}; typename Object::pointer res {Object::create(*this, std::forward<Args>(args)...)};
getDboSession().flush(); getDboSession().flush();
res.modify()->onPostCreated(); if (res->hasOnPostCreated())
res.modify()->onPostCreated();
return res; return res;
} }
@@ -85,7 +85,6 @@ class TrackList : public Object<TrackList, TrackListId>
void setName(const std::string& name) { _name = name; } void setName(const std::string& name) { _name = name; }
void setIsPublic(bool isPublic) { _isPublic = isPublic; } void setIsPublic(bool isPublic) { _isPublic = isPublic; }
void clear() { _entries.clear(); } void clear() { _entries.clear(); }
void setLastModifiedDateTime(const Wt::WDateTime& dateTime) { _lastModifiedDateTime = dateTime; }
// Get tracks, ordered by position // Get tracks, ordered by position
bool isEmpty() const; bool isEmpty() const;
@@ -106,6 +105,8 @@ class TrackList : public Object<TrackList, TrackListId>
std::vector<TrackId> getTrackIds() const; std::vector<TrackId> getTrackIds() const;
std::chrono::milliseconds getDuration() const; std::chrono::milliseconds getDuration() const;
void setLastModifiedDateTime(const Wt::WDateTime& dateTime);
// Get clusters, order by occurence // Get clusters, order by occurence
std::vector<ObjectPtr<Cluster>> getClusters() const; std::vector<ObjectPtr<Cluster>> getClusters() const;
std::vector<std::vector<ObjectPtr<Cluster>>> getClusterGroups(const std::vector<ObjectPtr<ClusterType>>& clusterTypes, std::size_t size) 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: public:
TrackListEntry() = default; TrackListEntry() = default;
bool hasOnPostCreated() const override { return true; }
void onPostCreated() override; void onPostCreated() override;
bool hasOnPreRemove() const override { return true; }
void onPreRemove() override; void onPreRemove() override;
// find utility // find utility
+18 -16
View File
@@ -93,22 +93,8 @@ TEST_F(DatabaseFixture, TrackList_SortMethod)
{ {
auto transaction {session.createUniqueTransaction()}; auto transaction {session.createUniqueTransaction()};
session.create<TrackListEntry>(track.get(), trackList1.get()); trackList1.get().modify()->setLastModifiedDateTime(Wt::WDateTime {Wt::WDate {1900,1,1}});
} trackList2.get().modify()->setLastModifiedDateTime(Wt::WDateTime {Wt::WDate {1900,1,2}});
{
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());
} }
{ {
@@ -119,6 +105,22 @@ TEST_F(DatabaseFixture, TrackList_SortMethod)
EXPECT_EQ(trackLists.results[0], trackList2.getId()); EXPECT_EQ(trackLists.results[0], trackList2.getId());
EXPECT_EQ(trackLists.results[1], trackList1.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) TEST_F(DatabaseFixture, SingleTrackListMultipleTrack)