single_visit_cluster_finalizer_unittest.cc 3.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. // Copyright 2021 The Chromium Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style license that can be
  3. // found in the LICENSE file.
  4. #include "components/history_clusters/core/single_visit_cluster_finalizer.h"
  5. #include "base/test/metrics/histogram_tester.h"
  6. #include "base/test/task_environment.h"
  7. #include "components/history_clusters/core/clustering_test_utils.h"
  8. #include "testing/gmock/include/gmock/gmock.h"
  9. #include "testing/gtest/include/gtest/gtest.h"
  10. namespace history_clusters {
  11. namespace {
  12. class SingleVisitClusterFinalizerTest : public ::testing::Test {
  13. public:
  14. void SetUp() override {
  15. cluster_finalizer_ = std::make_unique<SingleVisitClusterFinalizer>();
  16. }
  17. void TearDown() override { cluster_finalizer_.reset(); }
  18. void FinalizeCluster(history::Cluster& cluster) {
  19. cluster_finalizer_->FinalizeCluster(cluster);
  20. }
  21. private:
  22. std::unique_ptr<SingleVisitClusterFinalizer> cluster_finalizer_;
  23. base::test::TaskEnvironment task_environment_;
  24. };
  25. TEST_F(SingleVisitClusterFinalizerTest, OneVisit) {
  26. history::ClusterVisit visit = testing::CreateClusterVisit(
  27. testing::CreateDefaultAnnotatedVisit(1, GURL("https://google.com/")));
  28. history::Cluster cluster;
  29. cluster.visits = {visit};
  30. FinalizeCluster(cluster);
  31. EXPECT_FALSE(cluster.should_show_on_prominent_ui_surfaces);
  32. }
  33. TEST_F(SingleVisitClusterFinalizerTest,
  34. MultipleVisitsButExplicitlyNotShownBefore) {
  35. // Visit2 has the same URL as Visit1.
  36. history::ClusterVisit visit = testing::CreateClusterVisit(
  37. testing::CreateDefaultAnnotatedVisit(1, GURL("https://google.com/")));
  38. history::ClusterVisit visit2 = testing::CreateClusterVisit(
  39. testing::CreateDefaultAnnotatedVisit(2, GURL("https://foo.com/")));
  40. history::Cluster cluster;
  41. cluster.visits = {visit, visit2};
  42. cluster.should_show_on_prominent_ui_surfaces = false;
  43. FinalizeCluster(cluster);
  44. EXPECT_FALSE(cluster.should_show_on_prominent_ui_surfaces);
  45. }
  46. TEST_F(SingleVisitClusterFinalizerTest, MultipleVisits) {
  47. base::HistogramTester histogram_tester;
  48. history::ClusterVisit visit = testing::CreateClusterVisit(
  49. testing::CreateDefaultAnnotatedVisit(1, GURL("https://google.com/")));
  50. history::ClusterVisit visit2 = testing::CreateClusterVisit(
  51. testing::CreateDefaultAnnotatedVisit(2, GURL("https://foo.com/")));
  52. history::Cluster cluster;
  53. cluster.visits = {visit, visit2};
  54. FinalizeCluster(cluster);
  55. EXPECT_TRUE(cluster.should_show_on_prominent_ui_surfaces);
  56. histogram_tester.ExpectUniqueSample(
  57. "History.Clusters.Backend.WasClusterFiltered.SingleVisit", false, 1);
  58. }
  59. TEST_F(SingleVisitClusterFinalizerTest,
  60. MultipleVisitsButDuplicatesOfCanonical) {
  61. base::HistogramTester histogram_tester;
  62. history::ClusterVisit visit = testing::CreateClusterVisit(
  63. testing::CreateDefaultAnnotatedVisit(1, GURL("https://google.com/")));
  64. history::ClusterVisit visit2 = testing::CreateClusterVisit(
  65. testing::CreateDefaultAnnotatedVisit(2, GURL("https://foo.com/")));
  66. visit2.duplicate_visits = {visit};
  67. history::Cluster cluster;
  68. cluster.visits = {visit2};
  69. FinalizeCluster(cluster);
  70. EXPECT_FALSE(cluster.should_show_on_prominent_ui_surfaces);
  71. histogram_tester.ExpectUniqueSample(
  72. "History.Clusters.Backend.WasClusterFiltered.SingleVisit", true, 1);
  73. }
  74. } // namespace
  75. } // namespace history_clusters