summaryrefslogtreecommitdiffstats
path: root/test/feedcontainer.cpp
diff options
context:
space:
mode:
authortau3 <smr.oznob@gmail.com>2021-04-15 16:15:19 +0400
committertau3 <smr.oznob@gmail.com>2021-04-15 16:15:19 +0400
commit5f3913f8e693f0cb5130c3714bed852b963fbfce (patch)
treec2468160559a920957cd47ecb95bb26d56f6d05e /test/feedcontainer.cpp
parent81fc4b353e8d148338cc8357ffe73e6dcb8fb294 (diff)
add test for sorting by title
Diffstat (limited to 'test/feedcontainer.cpp')
-rw-r--r--test/feedcontainer.cpp54
1 files changed, 53 insertions, 1 deletions
diff --git a/test/feedcontainer.cpp b/test/feedcontainer.cpp
index 83bdaf91..215e7a54 100644
--- a/test/feedcontainer.cpp
+++ b/test/feedcontainer.cpp
@@ -545,7 +545,7 @@ TEST_CASE("sort_feeds() and keep in-group order when sorting by articles",
}
}
-TEST_CASE("sort_feeds() and keep in-group order when sorting by lsat updated item",
+TEST_CASE("sort_feeds() and keep in-group order when sorting by last updated item",
"[FeedContainer]")
{
ConfigContainer cfg;
@@ -600,6 +600,58 @@ TEST_CASE("sort_feeds() and keep in-group order when sorting by lsat updated ite
}
}
+TEST_CASE("sort_feeds() and keep in-group order when sorting by title",
+ "[FeedContainer]")
+{
+ ConfigContainer cfg;
+ Cache rsscache(":memory:", &cfg);
+
+ const std::map<std::string, std::string> url_to_title = {
+ {"1", "c"}, {"2", "b"}, {"3", "a"}, {"4", "a"}, {"5", "a"}
+ };
+
+ std::vector<std::shared_ptr<RssFeed>> feeds;
+ for (const auto& entry : url_to_title) {
+ const auto feed = std::make_shared<RssFeed>(&rsscache, entry.first);
+ feed->set_title(entry.second);
+ feeds.push_back(feed);
+ }
+ FeedContainer feedcontainer;
+ feedcontainer.set_feeds(feeds);
+
+ FeedSortStrategy strategy;
+ strategy.sm = FeedSortMethod::TITLE;
+ SECTION("descending order") {
+ strategy.sd = SortDirection::DESC;
+ feedcontainer.sort_feeds(strategy);
+ const auto sorted_feeds = feedcontainer.get_all_feeds();
+
+ std::vector<std::string> actual;
+ for (const auto& feed : sorted_feeds) {
+ auto url = feed->rssurl();
+ actual.push_back(url);
+ }
+
+ const std::vector<std::string> expected = {"3", "4", "5", "2", "1"};
+ REQUIRE(expected == actual);
+ }
+
+ SECTION("acsending order") {
+ strategy.sd = SortDirection::ASC;
+ feedcontainer.sort_feeds(strategy);
+ const auto sorted_feeds = feedcontainer.get_all_feeds();
+
+ std::vector<std::string> actual;
+ for (const auto& feed : sorted_feeds) {
+ auto url = feed->rssurl();
+ actual.push_back(url);
+ }
+
+ const std::vector<std::string> expected = {"1", "2", "3", "4", "5"} ;
+ REQUIRE(expected == actual);
+ }
+}
+
TEST_CASE("sort_feeds() sorts by number of unread articles if `feed-sort-order` "
"is \"unreadarticlecount\"",
"[FeedContainer]")