|
Database System 0.1.0
Advanced C++20 Database System with Multi-Backend Support
|
Configurable mock for database_backend interface. More...
#include <mock_backend.h>


Public Member Functions | |
| mock_backend () | |
| ~mock_backend () override=default | |
| mock_backend (const mock_backend &)=delete | |
| mock_backend & | operator= (const mock_backend &)=delete |
| mock_backend (mock_backend &&other) noexcept | |
| mock_backend & | operator= (mock_backend &&other) noexcept |
| database_types | type () const override |
| Get the database type of this backend. | |
| kcenon::common::VoidResult | initialize (const core::connection_config &config) override |
| Initialize the database backend. | |
| kcenon::common::VoidResult | shutdown () override |
| Shutdown the database backend gracefully. | |
| bool | is_initialized () const override |
| Check if backend is initialized and ready. | |
| kcenon::common::Result< core::database_result > | select_query (const std::string &query_string) override |
| Execute a SELECT query. | |
| kcenon::common::VoidResult | execute_query (const std::string &query_string) override |
| Execute a general SQL query (DDL, DML) | |
| kcenon::common::VoidResult | begin_transaction () override |
| Begin a transaction. | |
| kcenon::common::VoidResult | commit_transaction () override |
| Commit the current transaction. | |
| kcenon::common::VoidResult | rollback_transaction () override |
| Rollback the current transaction. | |
| bool | in_transaction () const override |
| Check if backend is currently in a transaction. | |
| std::string | last_error () const override |
| Get last error message from backend. | |
| std::map< std::string, std::string > | connection_info () const override |
| Get backend-specific connection information. | |
| mock_backend & | set_database_type (database_types type) |
| mock_backend & | set_initialize_result (bool result, const std::string &error="") |
| mock_backend & | set_default_select_result (const core::database_result &result) |
| mock_backend & | set_default_rows_affected (uint64_t rows) |
| backend_expectation_builder | expect_query (const std::string &query) |
| backend_expectation_builder | expect_pattern (const std::string ®ex_pattern) |
| backend_expectation_builder | expect_any () |
| mock_backend & | simulate_initialization_failure (const std::string &error="Mock initialization failed") |
| mock_backend & | simulate_shutdown () |
| bool | verify_all_expectations () const |
| std::vector< std::string > | get_executed_queries () const |
| size_t | get_query_count () const |
| size_t | get_query_count (const std::string &pattern) const |
| void | reset () |
| void | clear_expectations () |
| void | clear_history () |
| std::string | get_connection_string () const |
Public Member Functions inherited from database::core::database_backend | |
| virtual | ~database_backend ()=default |
| virtual kcenon::common::Result< database_result > | select_prepared (const std::string &query, const std::vector< database_value > ¶ms) |
| Execute a parameterized SELECT query (prepared statement) | |
| virtual kcenon::common::VoidResult | execute_prepared (const std::string &query, const std::vector< database_value > ¶ms) |
| Execute a parameterized DML/DDL query (prepared statement) | |
Private Member Functions | |
| void | record_query (const std::string &query) |
| backend_expectation * | find_expectation (const std::string &query) |
Private Attributes | |
| database_types | db_type_ |
| bool | initialized_ |
| bool | init_result_ |
| std::string | init_error_ |
| std::string | connection_string_ |
| core::database_result | default_result_ |
| uint64_t | default_rows_affected_ |
| std::string | last_error_ |
| bool | in_transaction_ |
| std::vector< backend_expectation > | expectations_ |
| std::vector< std::string > | executed_queries_ |
| std::mutex | mutex_ |
Friends | |
| class | backend_expectation_builder |
Additional Inherited Members | |
Static Protected Member Functions inherited from database::core::database_backend | |
| static std::string | expand_params (const std::string &query, const std::vector< database_value > ¶ms) |
| Expand positional parameters into a SQL string (fallback) | |
Configurable mock for database_backend interface.
This is the modern mock class that implements database_backend and returns Result<T> types for proper error handling.
Features:
Example usage:
Definition at line 48 of file mock_backend.h.
| database::testing::mock_backend::mock_backend | ( | ) |
Definition at line 11 of file mock_backend.cpp.
|
overridedefault |
|
delete |
|
noexcept |
Definition at line 20 of file mock_backend.cpp.
|
overridevirtual |
Begin a transaction.
Implements database::core::database_backend.
Definition at line 102 of file mock_backend.cpp.
References in_transaction_, last_error_, and mutex_.
| void database::testing::mock_backend::clear_expectations | ( | ) |
Definition at line 231 of file mock_backend.cpp.
References expectations_, and mutex_.
| void database::testing::mock_backend::clear_history | ( | ) |
Definition at line 236 of file mock_backend.cpp.
References executed_queries_, and mutex_.
|
overridevirtual |
Commit the current transaction.
Implements database::core::database_backend.
Definition at line 112 of file mock_backend.cpp.
References in_transaction_, last_error_, and mutex_.
|
overridevirtual |
Get backend-specific connection information.
Example keys: "server_version", "connection_id", "protocol_version"
Implements database::core::database_backend.
Definition at line 140 of file mock_backend.cpp.
References connection_string_, and initialized_.
|
overridevirtual |
Execute a general SQL query (DDL, DML)
| query_string | SQL statement |
Implements database::core::database_backend.
Definition at line 92 of file mock_backend.cpp.
References find_expectation(), mutex_, and record_query().

| backend_expectation_builder database::testing::mock_backend::expect_any | ( | ) |
Definition at line 181 of file mock_backend.cpp.
References backend_expectation_builder, and database::testing::backend_expectation::for_any().
Referenced by database::testing::mock_backend_builder::failing_database().


| backend_expectation_builder database::testing::mock_backend::expect_pattern | ( | const std::string & | regex_pattern | ) |
Definition at line 175 of file mock_backend.cpp.
References backend_expectation_builder, and database::testing::backend_expectation::for_pattern().
Referenced by database::testing::mock_backend_builder::with_data().


| backend_expectation_builder database::testing::mock_backend::expect_query | ( | const std::string & | query | ) |
Definition at line 169 of file mock_backend.cpp.
References backend_expectation_builder, database::testing::EXACT, and database::testing::backend_expectation::for_query().

|
private |
Definition at line 249 of file mock_backend.cpp.
References expectations_.
Referenced by execute_query(), and select_query().

| std::string database::testing::mock_backend::get_connection_string | ( | ) | const |
Definition at line 241 of file mock_backend.cpp.
References connection_string_.
| std::vector< std::string > database::testing::mock_backend::get_executed_queries | ( | ) | const |
Definition at line 204 of file mock_backend.cpp.
References executed_queries_, and mutex_.
| size_t database::testing::mock_backend::get_query_count | ( | ) | const |
Definition at line 209 of file mock_backend.cpp.
References executed_queries_, and mutex_.
Referenced by TEST_F(), and TEST_F().

| size_t database::testing::mock_backend::get_query_count | ( | const std::string & | pattern | ) | const |
Definition at line 214 of file mock_backend.cpp.
References executed_queries_, and mutex_.
|
overridevirtual |
Check if backend is currently in a transaction.
Implements database::core::database_backend.
Definition at line 132 of file mock_backend.cpp.
References in_transaction_.
|
overridevirtual |
Initialize the database backend.
| config | Connection configuration |
This method should:
Implements database::core::database_backend.
Definition at line 60 of file mock_backend.cpp.
References connection_string_, database::core::connection_config::database, database::core::connection_config::host, init_error_, init_result_, initialized_, last_error_, mutex_, and database::core::connection_config::port.
Referenced by TEST_F().

|
overridevirtual |
Check if backend is initialized and ready.
Implements database::core::database_backend.
Definition at line 78 of file mock_backend.cpp.
References initialized_.
Referenced by TEST_F(), and TEST_F().

|
overridevirtual |
Get last error message from backend.
Implements database::core::database_backend.
Definition at line 136 of file mock_backend.cpp.
References last_error_.
|
delete |
|
noexcept |
Definition at line 37 of file mock_backend.cpp.
|
private |
Definition at line 245 of file mock_backend.cpp.
References executed_queries_.
Referenced by execute_query(), and select_query().

| void database::testing::mock_backend::reset | ( | ) |
Definition at line 221 of file mock_backend.cpp.
References connection_string_, executed_queries_, expectations_, in_transaction_, initialized_, last_error_, and mutex_.
|
overridevirtual |
Rollback the current transaction.
Implements database::core::database_backend.
Definition at line 122 of file mock_backend.cpp.
References in_transaction_, last_error_, and mutex_.
|
overridevirtual |
Execute a SELECT query.
| query_string | SQL SELECT statement |
Implements database::core::database_backend.
Definition at line 82 of file mock_backend.cpp.
References default_result_, find_expectation(), mutex_, and record_query().

| mock_backend & database::testing::mock_backend::set_database_type | ( | database_types | type | ) |
Definition at line 148 of file mock_backend.cpp.
References db_type_, and type().
Referenced by BackendContractTest::SetUp().


| mock_backend & database::testing::mock_backend::set_default_rows_affected | ( | uint64_t | rows | ) |
Definition at line 164 of file mock_backend.cpp.
References default_rows_affected_.
| mock_backend & database::testing::mock_backend::set_default_select_result | ( | const core::database_result & | result | ) |
Definition at line 159 of file mock_backend.cpp.
References default_result_.
| mock_backend & database::testing::mock_backend::set_initialize_result | ( | bool | result, |
| const std::string & | error = "" ) |
Definition at line 153 of file mock_backend.cpp.
References init_error_, and init_result_.
|
overridevirtual |
Shutdown the database backend gracefully.
This method should:
Implements database::core::database_backend.
Definition at line 71 of file mock_backend.cpp.
References in_transaction_, initialized_, and mutex_.
| mock_backend & database::testing::mock_backend::simulate_initialization_failure | ( | const std::string & | error = "Mock initialization failed" | ) |
Definition at line 187 of file mock_backend.cpp.
References init_error_, and init_result_.
| mock_backend & database::testing::mock_backend::simulate_shutdown | ( | ) |
Definition at line 193 of file mock_backend.cpp.
References initialized_.
|
overridevirtual |
Get the database type of this backend.
Implements database::core::database_backend.
Definition at line 56 of file mock_backend.cpp.
References db_type_.
Referenced by set_database_type(), TEST_F(), and TEST_F().

| bool database::testing::mock_backend::verify_all_expectations | ( | ) | const |
Definition at line 198 of file mock_backend.cpp.
References expectations_, and mutex_.
|
friend |
Definition at line 106 of file mock_backend.h.
Referenced by expect_any(), expect_pattern(), and expect_query().
|
private |
Definition at line 112 of file mock_backend.h.
Referenced by connection_info(), get_connection_string(), initialize(), and reset().
|
private |
Definition at line 108 of file mock_backend.h.
Referenced by set_database_type(), and type().
|
private |
Definition at line 113 of file mock_backend.h.
Referenced by select_query(), and set_default_select_result().
|
private |
Definition at line 114 of file mock_backend.h.
Referenced by set_default_rows_affected().
|
private |
Definition at line 119 of file mock_backend.h.
Referenced by clear_history(), get_executed_queries(), get_query_count(), get_query_count(), record_query(), and reset().
|
private |
Definition at line 118 of file mock_backend.h.
Referenced by database::testing::backend_expectation_builder::any_times(), clear_expectations(), find_expectation(), database::testing::backend_expectation_builder::once(), reset(), database::testing::backend_expectation_builder::times(), verify_all_expectations(), database::testing::backend_expectation_builder::will_fail(), database::testing::backend_expectation_builder::will_return(), database::testing::backend_expectation_builder::will_return_rows(), and database::testing::backend_expectation_builder::will_succeed().
|
private |
Definition at line 116 of file mock_backend.h.
Referenced by begin_transaction(), commit_transaction(), in_transaction(), reset(), rollback_transaction(), and shutdown().
|
private |
Definition at line 111 of file mock_backend.h.
Referenced by initialize(), set_initialize_result(), and simulate_initialization_failure().
|
private |
Definition at line 110 of file mock_backend.h.
Referenced by initialize(), set_initialize_result(), and simulate_initialization_failure().
|
private |
Definition at line 109 of file mock_backend.h.
Referenced by connection_info(), initialize(), is_initialized(), reset(), shutdown(), and simulate_shutdown().
|
private |
Definition at line 115 of file mock_backend.h.
Referenced by begin_transaction(), commit_transaction(), initialize(), last_error(), reset(), and rollback_transaction().
|
mutableprivate |
Definition at line 120 of file mock_backend.h.
Referenced by begin_transaction(), clear_expectations(), clear_history(), commit_transaction(), execute_query(), get_executed_queries(), get_query_count(), get_query_count(), initialize(), reset(), rollback_transaction(), select_query(), shutdown(), and verify_all_expectations().