16#include <gtest/gtest.h>
38 backend_ = std::make_unique<mongodb_backend>();
60 EXPECT_EQ(backend_->type(), database_types::mongodb);
74 EXPECT_FALSE(backend_->is_initialized());
79 EXPECT_FALSE(backend_->in_transaction());
88 auto result = backend_->execute_query(
"users:{\"name\":\"John\"}");
89 EXPECT_FALSE(result.is_ok());
94 auto result = backend_->select_query(
"users:{\"name\":\"John\"}");
95 EXPECT_FALSE(result.is_ok());
100 auto result = backend_->begin_transaction();
101 EXPECT_FALSE(result.is_ok());
106 auto result = backend_->commit_transaction();
107 EXPECT_FALSE(result.is_ok());
112 auto result = backend_->rollback_transaction();
113 EXPECT_FALSE(result.is_ok());
122 auto result = backend_->shutdown();
123 EXPECT_TRUE(result.is_ok());
132 auto backend = mongodb_backend::create();
133 ASSERT_NE(backend,
nullptr);
134 EXPECT_EQ(backend->type(), database_types::mongodb);
135 EXPECT_FALSE(backend->is_initialized());
144 auto info = backend_->connection_info();
150 auto error = backend_->last_error();
163 config.
host =
"localhost";
167 auto result = backend_->initialize(config);
168 if (!result.is_ok()) {
169 GTEST_SKIP() <<
"Local MongoDB not available: " << backend_->last_error();
172 EXPECT_TRUE(backend_->is_initialized());
173 auto info = backend_->connection_info();
174 EXPECT_FALSE(
info.empty());
180 config.
host =
"localhost";
184 if (!backend_->initialize(config).is_ok()) {
185 GTEST_SKIP() <<
"Local MongoDB not available";
189 auto insert_result = backend_->execute_query(
190 "mongo_test:{\"name\":\"test_item\",\"value\":42}");
191 EXPECT_TRUE(insert_result.is_ok());
194 auto select_result = backend_->select_query(
195 "mongo_test:{\"name\":\"test_item\"}");
197 EXPECT_GE(select_result.value().size(), 1u);
200 auto update_result = backend_->execute_query(
201 "mongo_test:{\"name\":\"test_item\"}:{\"$set\":{\"value\":99}}");
202 EXPECT_TRUE(update_result.is_ok());
205 auto delete_result = backend_->execute_query(
206 "mongo_test:{\"name\":\"test_item\"}");
207 EXPECT_TRUE(delete_result.is_ok());
214 ::testing::InitGoogleTest(&argc, argv);
215 return RUN_ALL_TESTS();
connection_config test_config_
std::unique_ptr< mongodb_backend > backend_
static constexpr const char * backend_name()
Backend name for error messages.
Abstract interface for database backends.
MongoDB database backend plugin implementation.
TEST_F(MongoDBBackendTest, TypeReturnsMongoDB)
@ info
Informational messages (default)
Configuration for database connection.
#define ASSERT_TRUE(condition, message)