report_queue_unittest.cc 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  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/reporting/client/report_queue.h"
  5. #include "base/bind.h"
  6. #include "base/strings/strcat.h"
  7. #include "base/test/task_environment.h"
  8. #include "components/reporting/client/mock_report_queue.h"
  9. #include "components/reporting/proto/synced/record.pb.h"
  10. #include "components/reporting/util/status.h"
  11. #include "components/reporting/util/status_macros.h"
  12. #include "components/reporting/util/statusor.h"
  13. #include "components/reporting/util/test_support_callbacks.h"
  14. #include "testing/gmock/include/gmock/gmock.h"
  15. #include "testing/gtest/include/gtest/gtest.h"
  16. using ::testing::_;
  17. using ::testing::Invoke;
  18. using ::testing::WithArg;
  19. namespace reporting {
  20. namespace {
  21. class ReportQueueTest : public ::testing::Test {
  22. protected:
  23. ReportQueueTest() = default;
  24. base::test::TaskEnvironment task_environment_{
  25. base::test::TaskEnvironment::TimeSource::MOCK_TIME};
  26. };
  27. TEST_F(ReportQueueTest, EnqueueTest) {
  28. MockReportQueue queue;
  29. EXPECT_CALL(queue, AddRecord(_, _, _))
  30. .WillOnce(WithArg<2>(Invoke([](ReportQueue::EnqueueCallback cb) {
  31. std::move(cb).Run(Status::StatusOK());
  32. })));
  33. test::TestEvent<Status> e;
  34. queue.Enqueue("Record", FAST_BATCH, e.cb());
  35. ASSERT_OK(e.result());
  36. }
  37. TEST_F(ReportQueueTest, FlushTest) {
  38. MockReportQueue queue;
  39. EXPECT_CALL(queue, Flush(_, _))
  40. .WillOnce(WithArg<1>(Invoke([](ReportQueue::FlushCallback cb) {
  41. std::move(cb).Run(Status::StatusOK());
  42. })));
  43. test::TestEvent<Status> e;
  44. queue.Flush(MANUAL_BATCH, e.cb());
  45. ASSERT_OK(e.result());
  46. }
  47. } // namespace
  48. } // namespace reporting