blob: f390e2972c7c205a9fcbfe2098261361a13639cd [file] [log] [blame]
// Copyright 2024 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "src/lib/analytics/cpp/google_analytics_4/batch.h"
#include <vector>
#include <gtest/gtest.h>
namespace analytics::google_analytics_4 {
class MockEvent : public Event {
public:
using Event::SetParameter;
explicit MockEvent(std::string name) : Event(std::move(name)) {}
};
TEST(BatchTest, All) {
std::vector<std::unique_ptr<Event>> sent_events;
Batch batch([&](std::vector<std::unique_ptr<Event>> events) { sent_events = std::move(events); },
3);
auto event0 = std::make_unique<MockEvent>("test-event");
event0->SetParameter("order", 0);
auto event1 = std::make_unique<MockEvent>("other-event");
event1->SetParameter("order", 1);
auto event2 = std::make_unique<MockEvent>("test-event");
event2->SetParameter("order", 2);
auto event3 = std::make_unique<MockEvent>("test-event");
event3->SetParameter("order", 3);
batch.AddEvent(std::move(event0));
EXPECT_EQ(sent_events.size(), 0u);
batch.AddEvent(std::move(event1));
EXPECT_EQ(sent_events.size(), 0u);
batch.AddEvent(std::move(event2));
ASSERT_EQ(sent_events.size(), 3u);
EXPECT_EQ(std::get<int64_t>(sent_events[0]->parameters_opt()->at("order")), 0);
EXPECT_EQ(std::get<int64_t>(sent_events[1]->parameters_opt()->at("order")), 1);
EXPECT_EQ(std::get<int64_t>(sent_events[2]->parameters_opt()->at("order")), 2);
sent_events.clear();
batch.AddEvent(std::move(event3));
EXPECT_EQ(sent_events.size(), 0u);
batch.Send();
ASSERT_EQ(sent_events.size(), 1u);
EXPECT_EQ(std::get<int64_t>(sent_events[0]->parameters_opt()->at("order")), 3);
}
} // namespace analytics::google_analytics_4