Fixed unit tests
This commit is contained in:
@@ -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,7 +41,8 @@ namespace Database
|
||||
auto modify() { return _obj.modify(); }
|
||||
void remove()
|
||||
{
|
||||
_obj.modify()->onPreRemove();
|
||||
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();
|
||||
|
||||
res.modify()->onPostCreated();
|
||||
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
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user