Fixed unit tests
This commit is contained in:
@@ -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
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
Reference in New Issue
Block a user