Skip to content

Commit 52a49fc

Browse files
committed
Extend tests.
1 parent 891dcf8 commit 52a49fc

1 file changed

Lines changed: 76 additions & 6 deletions

File tree

libs/server-sdk-otel/tests/tracing_hook_test.cpp

Lines changed: 76 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99

1010
namespace launchdarkly::server_side::integrations::otel {
1111

12-
// Basic smoke test
12+
// Basic construction tests
1313
TEST(TracingHookTest, ConstructsWithDefaultOptions) {
1414
TracingHook hook;
1515
EXPECT_EQ(hook.Metadata().Name(), "LaunchDarkly OpenTelemetry Tracing Hook");
@@ -26,6 +26,7 @@ TEST(TracingHookTest, ConstructsWithCustomOptions) {
2626
EXPECT_EQ(hook.Metadata().Name(), "LaunchDarkly OpenTelemetry Tracing Hook");
2727
}
2828

29+
// Options builder tests
2930
TEST(TracingHookOptionsBuilderTest, BuildsDefaultOptions) {
3031
auto options = TracingHookOptionsBuilder().Build();
3132

@@ -67,10 +68,79 @@ TEST(TracingHookOptionsBuilderTest, ChainsMethods) {
6768
EXPECT_EQ(options.EnvironmentId().value(), "staging");
6869
}
6970

70-
// TODO: Add integration tests with mock OpenTelemetry components
71-
// TODO: Add tests for BeforeEvaluation and AfterEvaluation
72-
// TODO: Add tests for span event creation
73-
// TODO: Add tests for span creation when enabled
74-
// TODO: Add tests for HookContext span injection
71+
TEST(TracingHookOptionsBuilderTest, IncludeValueDefaultsFalse) {
72+
auto options = TracingHookOptionsBuilder()
73+
.CreateSpans(true)
74+
.Build();
75+
76+
EXPECT_FALSE(options.IncludeValue());
77+
EXPECT_TRUE(options.CreateSpans());
78+
}
79+
80+
TEST(TracingHookOptionsBuilderTest, CreateSpansDefaultsFalse) {
81+
auto options = TracingHookOptionsBuilder()
82+
.IncludeValue(true)
83+
.Build();
84+
85+
EXPECT_TRUE(options.IncludeValue());
86+
EXPECT_FALSE(options.CreateSpans());
87+
}
88+
89+
TEST(TracingHookOptionsBuilderTest, CanSetMultipleOptions) {
90+
auto options = TracingHookOptionsBuilder()
91+
.IncludeValue(true)
92+
.CreateSpans(true)
93+
.EnvironmentId("dev")
94+
.Build();
95+
96+
EXPECT_TRUE(options.IncludeValue());
97+
EXPECT_TRUE(options.CreateSpans());
98+
ASSERT_TRUE(options.EnvironmentId().has_value());
99+
EXPECT_EQ(options.EnvironmentId().value(), "dev");
100+
}
101+
102+
TEST(TracingHookOptionsBuilderTest, EnvironmentIdIsOptional) {
103+
auto options1 = TracingHookOptionsBuilder()
104+
.IncludeValue(true)
105+
.Build();
106+
EXPECT_FALSE(options1.EnvironmentId().has_value());
107+
108+
auto options2 = TracingHookOptionsBuilder()
109+
.CreateSpans(true)
110+
.Build();
111+
EXPECT_FALSE(options2.EnvironmentId().has_value());
112+
}
113+
114+
TEST(TracingHookOptionsBuilderTest, BuilderIsReusable) {
115+
auto builder = TracingHookOptionsBuilder()
116+
.IncludeValue(true)
117+
.CreateSpans(true);
118+
119+
auto options1 = builder.Build();
120+
auto options2 = builder.EnvironmentId("test").Build();
121+
122+
EXPECT_TRUE(options1.IncludeValue());
123+
EXPECT_TRUE(options2.IncludeValue());
124+
EXPECT_FALSE(options1.EnvironmentId().has_value());
125+
EXPECT_TRUE(options2.EnvironmentId().has_value());
126+
}
127+
128+
// Metadata tests
129+
TEST(TracingHookTest, MetadataNameIsCorrect) {
130+
TracingHook hook;
131+
EXPECT_EQ(hook.Metadata().Name(), "LaunchDarkly OpenTelemetry Tracing Hook");
132+
}
133+
134+
TEST(TracingHookTest, MetadataIsConsistent) {
135+
auto options = TracingHookOptionsBuilder()
136+
.IncludeValue(true)
137+
.CreateSpans(true)
138+
.EnvironmentId("production")
139+
.Build();
140+
TracingHook hook(options);
141+
142+
// Metadata should be the same regardless of options
143+
EXPECT_EQ(hook.Metadata().Name(), "LaunchDarkly OpenTelemetry Tracing Hook");
144+
}
75145

76146
} // namespace launchdarkly::server_side::integrations::otel

0 commit comments

Comments
 (0)