slbotbm commented on code in PR #3046:
URL: https://github.com/apache/iggy/pull/3046#discussion_r3038814032


##########
foreign/cpp/tests/stream/low_level_e2e.cpp:
##########
@@ -293,3 +294,160 @@ TEST(LowLevelE2E_Stream, 
GetStreamByNumericIdentifierReturnsStreamDetails) {
     ASSERT_NO_THROW(iggy::ffi::delete_connection(client));
     client = nullptr;
 }
+
+TEST(LowLevelE2E_Stream, GetStreamsReturnsEmptyAfterCleanup) {
+    RecordProperty("description", "Verifies get_streams returns empty vector 
after cleaning up all streams.");
+    iggy::ffi::Client *client = login_to_server();
+    ASSERT_NE(client, nullptr);
+
+    auto streams = client->get_streams();
+    for (const auto &s : streams) {
+        client->delete_stream(make_numeric_identifier(s.id));
+    }
+
+    streams = client->get_streams();
+    ASSERT_EQ(streams.size(), 0);
+
+    ASSERT_NO_THROW(iggy::ffi::delete_connection(client));
+}
+
+TEST(LowLevelE2E_Stream, GetStreamsReturnsStreamAfterCreation) {
+    RecordProperty("description", "Verifies created stream appears in 
get_streams result.");
+    const std::string stream_name = "cpp-stream-get-streams";
+    iggy::ffi::Client *client     = login_to_server();
+    ASSERT_NE(client, nullptr);
+
+    client->create_stream(stream_name);
+    auto streams = client->get_streams();
+    ASSERT_GE(streams.size(), 1);
+
+    bool found = false;
+    for (const auto &s : streams) {
+        if (std::string(s.name) == stream_name) {
+            found = true;
+            break;
+        }
+    }
+    ASSERT_TRUE(found) << "Stream '" << stream_name << "' not found in 
get_streams result";
+
+    client->delete_stream(make_string_identifier(stream_name));
+    ASSERT_NO_THROW(iggy::ffi::delete_connection(client));
+}
+
+TEST(LowLevelE2E_Stream, GetStreamsFieldsVerification) {
+    RecordProperty("description",
+                   "Verifies get_streams returns correct field values after 
creating stream with topic and messages.");
+    const std::string stream_name = "cpp-stream-fields-verify";
+    iggy::ffi::Client *client     = login_to_server();
+    ASSERT_NE(client, nullptr);
+
+    client->create_stream(stream_name);
+    auto stream = client->get_stream(make_string_identifier(stream_name));
+    client->create_topic(make_numeric_identifier(stream.id), "test-topic", 1, 
"none", 0, "never_expire", 0,
+                         "server_default");
+
+    rust::Vec<iggy::ffi::Message> messages;
+    for (std::uint32_t i = 0; i < 5; i++) {
+        iggy::ffi::Message msg;
+        msg.new_message(to_payload("field-verify-message-" + 
std::to_string(i)));
+        messages.push_back(std::move(msg));
+    }
+    client->send_messages(make_numeric_identifier(stream.id), 
make_numeric_identifier(0), "partition_id",
+                          partition_id_bytes(0), std::move(messages));
+
+    auto streams = client->get_streams();
+    ASSERT_GE(streams.size(), 1u);
+
+    bool found = false;
+    for (const auto &s : streams) {
+        if (std::string(s.name) == stream_name) {
+            found = true;
+            EXPECT_EQ(s.topics_count, 1u);
+            EXPECT_EQ(s.messages_count, 5u);

Review Comment:
   Let's compare id, create_at, size_bytes, here as well.



##########
foreign/cpp/tests/stream/low_level_e2e.cpp:
##########
@@ -293,3 +294,160 @@ TEST(LowLevelE2E_Stream, 
GetStreamByNumericIdentifierReturnsStreamDetails) {
     ASSERT_NO_THROW(iggy::ffi::delete_connection(client));
     client = nullptr;
 }
+
+TEST(LowLevelE2E_Stream, GetStreamsReturnsEmptyAfterCleanup) {
+    RecordProperty("description", "Verifies get_streams returns empty vector 
after cleaning up all streams.");
+    iggy::ffi::Client *client = login_to_server();
+    ASSERT_NE(client, nullptr);
+
+    auto streams = client->get_streams();
+    for (const auto &s : streams) {
+        client->delete_stream(make_numeric_identifier(s.id));
+    }
+
+    streams = client->get_streams();
+    ASSERT_EQ(streams.size(), 0);
+
+    ASSERT_NO_THROW(iggy::ffi::delete_connection(client));
+}
+
+TEST(LowLevelE2E_Stream, GetStreamsReturnsStreamAfterCreation) {
+    RecordProperty("description", "Verifies created stream appears in 
get_streams result.");
+    const std::string stream_name = "cpp-stream-get-streams";
+    iggy::ffi::Client *client     = login_to_server();
+    ASSERT_NE(client, nullptr);
+
+    client->create_stream(stream_name);
+    auto streams = client->get_streams();
+    ASSERT_GE(streams.size(), 1);
+
+    bool found = false;
+    for (const auto &s : streams) {
+        if (std::string(s.name) == stream_name) {
+            found = true;

Review Comment:
   Let's check the id, create_at, size_bytes, message_count, topics_count as 
well 



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to