Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(881)

Unified Diff: components/ntp_tiles/most_visited_sites_unittest.cc

Issue 2567333003: ntp_tiles: Refactor existing MostVisitedSites tests (Closed)
Patch Set: Rebased. Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « components/ntp_tiles/most_visited_sites.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: components/ntp_tiles/most_visited_sites_unittest.cc
diff --git a/components/ntp_tiles/most_visited_sites_unittest.cc b/components/ntp_tiles/most_visited_sites_unittest.cc
index 6fbc9dcd0872690aeb5e5ffa28b2cb70b036f900..029968dfa138b8e924036cd006e8badde08cd2a1 100644
--- a/components/ntp_tiles/most_visited_sites_unittest.cc
+++ b/components/ntp_tiles/most_visited_sites_unittest.cc
@@ -7,34 +7,48 @@
#include <stddef.h>
#include <memory>
+#include <ostream>
#include <vector>
#include "base/macros.h"
#include "base/memory/ptr_util.h"
#include "base/strings/utf_string_conversions.h"
+#include "testing/gmock/include/gmock/gmock.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace ntp_tiles {
-namespace {
-
-struct TitleURL {
- TitleURL(const std::string& title, const std::string& url)
- : title(base::UTF8ToUTF16(title)), url(url) {}
- TitleURL(const base::string16& title, const std::string& url)
- : title(title), url(url) {}
-
- base::string16 title;
- std::string url;
+// Defined for googletest. Must be defined in the same namespace.
+void PrintTo(const NTPTile& tile, std::ostream* os) {
+ *os << "{\"" << tile.title << "\", \"" << tile.url << "\", "
+ << static_cast<int>(tile.source) << "}";
+}
- bool operator==(const TitleURL& other) const {
- return title == other.title && url == other.url;
- }
-};
+namespace {
-static const size_t kNumSites = 4;
+using testing::ElementsAre;
+
+MATCHER_P3(MatchesTile,
+ title,
+ url,
+ source,
+ std::string("has title \"") + title + std::string("\" and url \"") +
+ url +
+ std::string("\" and source ") +
+ testing::PrintToString(static_cast<int>(source))) {
+ return arg.title == base::ASCIIToUTF16(title) && arg.url == GURL(url) &&
+ arg.source == source;
+}
-} // namespace
+NTPTile MakeTile(const std::string& title,
+ const std::string& url,
+ NTPTileSource source) {
+ NTPTile tile;
+ tile.title = base::ASCIIToUTF16(title);
+ tile.url = GURL(url);
+ tile.source = source;
+ return tile;
+}
// This a test for MostVisitedSites::MergeTiles(...) method, and thus has the
// same scope as the method itself. This tests merging popular sites with
@@ -43,96 +57,75 @@ static const size_t kNumSites = 4;
// - Removing blacklisted tiles.
// - Correct host extraction from the URL.
// - Ensuring personal tiles are not duplicated in popular tiles.
-class MostVisitedSitesTest : public testing::Test {
- protected:
- void Check(const std::vector<TitleURL>& popular_sites,
- const std::vector<TitleURL>& whitelist_entry_points,
- const std::vector<TitleURL>& personal_sites,
- const std::vector<bool>& expected_sites_is_personal,
- const std::vector<TitleURL>& expected_sites) {
- NTPTilesVector personal_tiles;
- for (const TitleURL& site : personal_sites)
- personal_tiles.push_back(MakeTileFrom(site, true, false));
- NTPTilesVector whitelist_tiles;
- for (const TitleURL& site : whitelist_entry_points)
- whitelist_tiles.push_back(MakeTileFrom(site, false, true));
- NTPTilesVector popular_tiles;
- for (const TitleURL& site : popular_sites)
- popular_tiles.push_back(MakeTileFrom(site, false, false));
- NTPTilesVector result_tiles = MostVisitedSites::MergeTiles(
- std::move(personal_tiles), std::move(whitelist_tiles),
- std::move(popular_tiles));
- std::vector<TitleURL> result_sites;
- std::vector<bool> result_is_personal;
- result_sites.reserve(result_tiles.size());
- result_is_personal.reserve(result_tiles.size());
- for (const auto& tile : result_tiles) {
- result_sites.push_back(TitleURL(tile.title, tile.url.spec()));
- result_is_personal.push_back(tile.source != NTPTileSource::POPULAR);
- }
- EXPECT_EQ(expected_sites_is_personal, result_is_personal);
- EXPECT_EQ(expected_sites, result_sites);
- }
- static NTPTile MakeTileFrom(const TitleURL& title_url,
- bool is_personal,
- bool whitelist) {
- NTPTile tile;
- tile.title = title_url.title;
- tile.url = GURL(title_url.url);
- tile.source = whitelist ? NTPTileSource::WHITELIST
- : (is_personal ? NTPTileSource::TOP_SITES
- : NTPTileSource::POPULAR);
- return tile;
- }
-};
-
-TEST_F(MostVisitedSitesTest, PersonalSites) {
- std::vector<TitleURL> personal_sites{
- TitleURL("Site 1", "https://www.site1.com/"),
- TitleURL("Site 2", "https://www.site2.com/"),
- TitleURL("Site 3", "https://www.site3.com/"),
- TitleURL("Site 4", "https://www.site4.com/"),
+//
+// TODO(mastiz): Add tests for the functionality listed above.
+TEST(MostVisitedSitesTest, ShouldMergeTilesWithPersonalOnly) {
+ std::vector<NTPTile> personal_tiles{
+ MakeTile("Site 1", "https://www.site1.com/", NTPTileSource::TOP_SITES),
+ MakeTile("Site 2", "https://www.site2.com/", NTPTileSource::TOP_SITES),
+ MakeTile("Site 3", "https://www.site3.com/", NTPTileSource::TOP_SITES),
+ MakeTile("Site 4", "https://www.site4.com/", NTPTileSource::TOP_SITES),
};
// Without any popular tiles, the result after merge should be the personal
// tiles.
- std::vector<bool> expected_sites_source(kNumSites, true /*personal source*/);
- Check(std::vector<TitleURL>(), std::vector<TitleURL>(), personal_sites,
- expected_sites_source, personal_sites);
+ EXPECT_THAT(MostVisitedSites::MergeTiles(std::move(personal_tiles),
+ /*whitelist_tiles=*/NTPTilesVector(),
+ /*popular_tiles=*/NTPTilesVector()),
+ ElementsAre(MatchesTile("Site 1", "https://www.site1.com/",
+ NTPTileSource::TOP_SITES),
+ MatchesTile("Site 2", "https://www.site2.com/",
+ NTPTileSource::TOP_SITES),
+ MatchesTile("Site 3", "https://www.site3.com/",
+ NTPTileSource::TOP_SITES),
+ MatchesTile("Site 4", "https://www.site4.com/",
+ NTPTileSource::TOP_SITES)));
}
-TEST_F(MostVisitedSitesTest, PopularSites) {
- std::vector<TitleURL> popular_sites{
- TitleURL("Site 1", "https://www.site1.com/"),
- TitleURL("Site 2", "https://www.site2.com/"),
- TitleURL("Site 3", "https://www.site3.com/"),
- TitleURL("Site 4", "https://www.site4.com/"),
+TEST(MostVisitedSitesTest, ShouldMergeTilesWithPopularOnly) {
+ std::vector<NTPTile> popular_tiles{
+ MakeTile("Site 1", "https://www.site1.com/", NTPTileSource::POPULAR),
+ MakeTile("Site 2", "https://www.site2.com/", NTPTileSource::POPULAR),
+ MakeTile("Site 3", "https://www.site3.com/", NTPTileSource::POPULAR),
+ MakeTile("Site 4", "https://www.site4.com/", NTPTileSource::POPULAR),
};
// Without any personal tiles, the result after merge should be the popular
// tiles.
- std::vector<bool> expected_sites_source(kNumSites, false /*popular source*/);
- Check(popular_sites, std::vector<TitleURL>(), std::vector<TitleURL>(),
- expected_sites_source, popular_sites);
+ EXPECT_THAT(
+ MostVisitedSites::MergeTiles(/*personal_tiles=*/NTPTilesVector(),
+ /*whitelist_tiles=*/NTPTilesVector(),
+ /*popular_tiles=*/std::move(popular_tiles)),
+ ElementsAre(MatchesTile("Site 1", "https://www.site1.com/",
+ NTPTileSource::POPULAR),
+ MatchesTile("Site 2", "https://www.site2.com/",
+ NTPTileSource::POPULAR),
+ MatchesTile("Site 3", "https://www.site3.com/",
+ NTPTileSource::POPULAR),
+ MatchesTile("Site 4", "https://www.site4.com/",
+ NTPTileSource::POPULAR)));
}
-TEST_F(MostVisitedSitesTest, PersonalPrecedePopularSites) {
- std::vector<TitleURL> popular_sites{
- TitleURL("Site 1", "https://www.site1.com/"),
- TitleURL("Site 2", "https://www.site2.com/"),
+TEST(MostVisitedSitesTest, ShouldMergeTilesFavoringPersonalOverPopular) {
+ std::vector<NTPTile> popular_tiles{
+ MakeTile("Site 1", "https://www.site1.com/", NTPTileSource::POPULAR),
+ MakeTile("Site 2", "https://www.site2.com/", NTPTileSource::POPULAR),
};
- std::vector<TitleURL> personal_sites{
- TitleURL("Site 3", "https://www.site3.com/"),
- TitleURL("Site 4", "https://www.site4.com/"),
+ std::vector<NTPTile> personal_tiles{
+ MakeTile("Site 3", "https://www.site3.com/", NTPTileSource::TOP_SITES),
+ MakeTile("Site 4", "https://www.site4.com/", NTPTileSource::TOP_SITES),
};
- // Personal tiles should precede popular tiles.
- std::vector<TitleURL> expected_sites{
- TitleURL("Site 3", "https://www.site3.com/"),
- TitleURL("Site 4", "https://www.site4.com/"),
- TitleURL("Site 1", "https://www.site1.com/"),
- TitleURL("Site 2", "https://www.site2.com/"),
- };
- std::vector<bool> expected_sites_source{true, true, false, false};
- Check(popular_sites, std::vector<TitleURL>(), personal_sites,
- expected_sites_source, expected_sites);
+ EXPECT_THAT(
+ MostVisitedSites::MergeTiles(std::move(personal_tiles),
+ /*whitelist_tiles=*/NTPTilesVector(),
+ /*popular_tiles=*/std::move(popular_tiles)),
+ ElementsAre(MatchesTile("Site 3", "https://www.site3.com/",
+ NTPTileSource::TOP_SITES),
+ MatchesTile("Site 4", "https://www.site4.com/",
+ NTPTileSource::TOP_SITES),
+ MatchesTile("Site 1", "https://www.site1.com/",
+ NTPTileSource::POPULAR),
+ MatchesTile("Site 2", "https://www.site2.com/",
+ NTPTileSource::POPULAR)));
}
+} // namespace
} // namespace ntp_tiles
« no previous file with comments | « components/ntp_tiles/most_visited_sites.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698