breadcrumb_manager_observer_unittest.cc 3.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. // Copyright 2019 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/breadcrumbs/core/breadcrumb_manager_observer.h"
  5. #include <string>
  6. #include "base/memory/raw_ptr.h"
  7. #include "base/test/task_environment.h"
  8. #include "base/time/time.h"
  9. #include "components/breadcrumbs/core/breadcrumb_manager.h"
  10. #include "components/breadcrumbs/core/breadcrumb_util.h"
  11. #include "testing/gtest/include/gtest/gtest.h"
  12. #include "testing/platform_test.h"
  13. namespace breadcrumbs {
  14. namespace {
  15. class FakeBreadcrumbManagerObserver : public BreadcrumbManagerObserver {
  16. public:
  17. FakeBreadcrumbManagerObserver() = default;
  18. ~FakeBreadcrumbManagerObserver() override = default;
  19. FakeBreadcrumbManagerObserver(const FakeBreadcrumbManagerObserver&) = delete;
  20. FakeBreadcrumbManagerObserver& operator=(
  21. const FakeBreadcrumbManagerObserver&) = delete;
  22. // BreadcrumbManagerObserver
  23. void EventAdded(BreadcrumbManager* manager,
  24. const std::string& event) override {
  25. event_added_last_received_manager_ = manager;
  26. event_added_last_received_event_ = event;
  27. }
  28. void OldEventsRemoved(BreadcrumbManager* manager) override {
  29. old_events_removed_last_received_manager_ = manager;
  30. }
  31. raw_ptr<BreadcrumbManager> event_added_last_received_manager_ = nullptr;
  32. std::string event_added_last_received_event_;
  33. raw_ptr<BreadcrumbManager> old_events_removed_last_received_manager_ =
  34. nullptr;
  35. };
  36. } // namespace
  37. class BreadcrumbManagerObserverTest : public PlatformTest {
  38. protected:
  39. BreadcrumbManagerObserverTest() { manager_.AddObserver(&observer_); }
  40. ~BreadcrumbManagerObserverTest() override {
  41. manager_.RemoveObserver(&observer_);
  42. }
  43. base::test::TaskEnvironment task_env_{
  44. base::test::TaskEnvironment::TimeSource::MOCK_TIME};
  45. BreadcrumbManager manager_{GetStartTime()};
  46. FakeBreadcrumbManagerObserver observer_;
  47. };
  48. // Tests that |BreadcrumbManagerObserver::EventAdded| is called when an event to
  49. // added to |manager_|.
  50. TEST_F(BreadcrumbManagerObserverTest, EventAdded) {
  51. ASSERT_FALSE(observer_.event_added_last_received_manager_);
  52. ASSERT_TRUE(observer_.event_added_last_received_event_.empty());
  53. const std::string event = "event";
  54. manager_.AddEvent(event);
  55. EXPECT_EQ(&manager_, observer_.event_added_last_received_manager_);
  56. // A timestamp will be prepended to the event passed to |AddEvent|.
  57. EXPECT_NE(std::string::npos,
  58. observer_.event_added_last_received_event_.find(event));
  59. }
  60. // Tests that |BreadcumbManager::OldEventsRemoved| is called when old events are
  61. // dropped from |manager_|.
  62. TEST_F(BreadcrumbManagerObserverTest, OldEventsRemoved) {
  63. ASSERT_FALSE(observer_.old_events_removed_last_received_manager_);
  64. const std::string event = "event";
  65. manager_.AddEvent(event);
  66. task_env_.FastForwardBy(base::Hours(1));
  67. manager_.AddEvent(event);
  68. task_env_.FastForwardBy(base::Hours(1));
  69. manager_.AddEvent(event);
  70. EXPECT_EQ(&manager_, observer_.old_events_removed_last_received_manager_);
  71. }
  72. } // namespace breadcrumbs