Database System 0.1.0
Advanced C++20 Database System with Multi-Backend Support
Loading...
Searching...
No Matches
backend_contract_test.cpp File Reference
#include <atomic>
#include <gtest/gtest.h>
#include <memory>
#include <string>
#include <thread>
#include <vector>
#include "database/core/database_backend.h"
#include "mocks/mock_backend.h"
Include dependency graph for backend_contract_test.cpp:

Go to the source code of this file.

Classes

class  BackendContractTest
 

Functions

 TEST_F (BackendContractTest, InitializeSucceeds)
 
 TEST_F (BackendContractTest, InitializeStoresConnectionString)
 
 TEST_F (BackendContractTest, InitializeFailureSimulation)
 
 TEST_F (BackendContractTest, InitializeFailureDefaultMessage)
 
 TEST_F (BackendContractTest, ShutdownClearsState)
 
 TEST_F (BackendContractTest, SimulateShutdown)
 
 TEST_F (BackendContractTest, TypeReturnsConfiguredType)
 
 TEST_F (BackendContractTest, DefaultTypeIsNone)
 
 TEST_F (BackendContractTest, ExecuteInsertQuerySucceeds)
 
 TEST_F (BackendContractTest, ExecuteInsertQueryWithError)
 
 TEST_F (BackendContractTest, ExecuteUpdateQuerySucceeds)
 
 TEST_F (BackendContractTest, ExecuteDeleteQuerySucceeds)
 
 TEST_F (BackendContractTest, SelectQueryReturnsResults)
 
 TEST_F (BackendContractTest, SelectQueryReturnsEmptyResult)
 
 TEST_F (BackendContractTest, SelectQueryWithDefaultResult)
 
 TEST_F (BackendContractTest, ExecuteQuerySucceeds)
 
 TEST_F (BackendContractTest, ExecuteQueryWithExpectedFailure)
 
 TEST_F (BackendContractTest, TransactionInitiallyInactive)
 
 TEST_F (BackendContractTest, BeginTransactionActivates)
 
 TEST_F (BackendContractTest, CommitTransactionDeactivates)
 
 TEST_F (BackendContractTest, RollbackTransactionDeactivates)
 
 TEST_F (BackendContractTest, NestedBeginTransactionFails)
 
 TEST_F (BackendContractTest, CommitWithoutTransactionFails)
 
 TEST_F (BackendContractTest, RollbackWithoutTransactionFails)
 
 TEST_F (BackendContractTest, TransactionCycleBeginCommitBeginRollback)
 
 TEST_F (BackendContractTest, ShutdownClearsTransactionState)
 
 TEST_F (BackendContractTest, PatternMatchingWithRegex)
 
 TEST_F (BackendContractTest, AnyMatcherMatchesAll)
 
 TEST_F (BackendContractTest, RecordsExecutedQueries)
 
 TEST_F (BackendContractTest, GetQueryCountTotal)
 
 TEST_F (BackendContractTest, GetQueryCountByPattern)
 
 TEST_F (BackendContractTest, ClearHistory)
 
 TEST_F (BackendContractTest, ClearExpectations)
 
 TEST_F (BackendContractTest, ResetClearsEverything)
 
 TEST_F (BackendContractTest, VerifyAllExpectationsWhenAllMatched)
 
 TEST_F (BackendContractTest, VerifyExpectationsFailsWhenUnmatched)
 
 TEST_F (BackendContractTest, ConnectionInfoReturnsMap)
 
 TEST_F (BackendContractTest, LastErrorInitiallyEmpty)
 
 TEST_F (BackendContractTest, EmptyDatabasePreset)
 
 TEST_F (BackendContractTest, WithDataPreset)
 
 TEST_F (BackendContractTest, FailingDatabasePreset)
 
 TEST_F (BackendContractTest, AllDatabaseValueTypesInResult)
 
 TEST_F (BackendContractTest, ConcurrentQueryExecution)
 
 TEST_F (BackendContractTest, MoveConstructor)
 
 TEST_F (BackendContractTest, MoveAssignment)
 
int main (int argc, char **argv)
 

Function Documentation

◆ main()

int main ( int argc,
char ** argv )

Definition at line 546 of file backend_contract_test.cpp.

547{
548 ::testing::InitGoogleTest(&argc, argv);
549 return RUN_ALL_TESTS();
550}

◆ TEST_F() [1/45]

TEST_F ( BackendContractTest ,
AllDatabaseValueTypesInResult  )

Definition at line 466 of file backend_contract_test.cpp.

467{
468 database_result data = {{
469 {"string_col", std::string("hello")},
470 {"int_col", int64_t(42)},
471 {"double_col", double(3.14)},
472 {"bool_col", true},
473 {"null_col", nullptr}
474 }};
475
476 backend_.expect_query("SELECT *").will_return(data);
477 auto result = backend_.select_query("SELECT *");
478 ASSERT_TRUE(result.is_ok());
479 ASSERT_EQ(result.value().size(), 1u);
480
481 auto& row = result.value()[0];
482 EXPECT_EQ(std::get<std::string>(row.at("string_col")), "hello");
483 EXPECT_EQ(std::get<int64_t>(row.at("int_col")), 42);
484 EXPECT_DOUBLE_EQ(std::get<double>(row.at("double_col")), 3.14);
485 EXPECT_EQ(std::get<bool>(row.at("bool_col")), true);
486 EXPECT_EQ(std::get<std::nullptr_t>(row.at("null_col")), nullptr);
487}
std::vector< database_row > database_result
#define ASSERT_EQ(expected, actual, message)
#define ASSERT_TRUE(condition, message)

References ASSERT_EQ, and ASSERT_TRUE.

◆ TEST_F() [2/45]

TEST_F ( BackendContractTest ,
AnyMatcherMatchesAll  )

Definition at line 313 of file backend_contract_test.cpp.

314{
315 auto r1 = backend_.execute_query("INSERT INTO a VALUES (1)");
316 auto r2 = backend_.execute_query("UPDATE b SET x = 1");
317 auto r3 = backend_.execute_query("DELETE FROM c WHERE id = 1");
318
319 EXPECT_TRUE(r1.is_ok());
320 EXPECT_TRUE(r2.is_ok());
321 EXPECT_TRUE(r3.is_ok());
322}

◆ TEST_F() [3/45]

TEST_F ( BackendContractTest ,
BeginTransactionActivates  )

Definition at line 229 of file backend_contract_test.cpp.

230{
231 EXPECT_TRUE(backend_.begin_transaction().is_ok());
232 EXPECT_TRUE(backend_.in_transaction());
233}

◆ TEST_F() [4/45]

TEST_F ( BackendContractTest ,
ClearExpectations  )

Definition at line 369 of file backend_contract_test.cpp.

370{
371 backend_.expect_query("q1").will_return_rows(10);
372 backend_.clear_expectations();
373
374 // After clearing, should use default behavior (success)
375 auto result = backend_.execute_query("q1");
376 ASSERT_TRUE(result.is_ok());
377}

References ASSERT_TRUE.

◆ TEST_F() [5/45]

TEST_F ( BackendContractTest ,
ClearHistory  )

Definition at line 361 of file backend_contract_test.cpp.

362{
363 backend_.execute_query("q1");
364 backend_.clear_history();
365 EXPECT_EQ(backend_.get_query_count(), 0u);
366 EXPECT_TRUE(backend_.get_executed_queries().empty());
367}

◆ TEST_F() [6/45]

TEST_F ( BackendContractTest ,
CommitTransactionDeactivates  )

Definition at line 235 of file backend_contract_test.cpp.

236{
237 backend_.begin_transaction();
238 EXPECT_TRUE(backend_.commit_transaction().is_ok());
239 EXPECT_FALSE(backend_.in_transaction());
240}

◆ TEST_F() [7/45]

TEST_F ( BackendContractTest ,
CommitWithoutTransactionFails  )

Definition at line 258 of file backend_contract_test.cpp.

259{
260 auto result = backend_.commit_transaction();
261 EXPECT_FALSE(result.is_ok());
262}

◆ TEST_F() [8/45]

TEST_F ( BackendContractTest ,
ConcurrentQueryExecution  )

Definition at line 493 of file backend_contract_test.cpp.

494{
495 constexpr int num_threads = 10;
496 constexpr int queries_per_thread = 50;
497 std::vector<std::thread> threads;
498
499 for (int t = 0; t < num_threads; ++t) {
500 threads.emplace_back([this, t]() {
501 for (int q = 0; q < queries_per_thread; ++q) {
502 std::string query = "INSERT INTO t" + std::to_string(t) +
503 " VALUES (" + std::to_string(q) + ")";
504 backend_.execute_query(query);
505 }
506 });
507 }
508
509 for (auto& t : threads) {
510 t.join();
511 }
512
513 EXPECT_EQ(backend_.get_query_count(),
514 static_cast<size_t>(num_threads * queries_per_thread));
515}

◆ TEST_F() [9/45]

TEST_F ( BackendContractTest ,
ConnectionInfoReturnsMap  )

Definition at line 416 of file backend_contract_test.cpp.

417{
418 backend_.initialize(test_config_);
419 auto info = backend_.connection_info();
420
421 EXPECT_FALSE(info.empty());
422 EXPECT_EQ(info.at("type"), "mock");
423 EXPECT_EQ(info.at("initialized"), "true");
424}
@ info
Informational messages (default)

◆ TEST_F() [10/45]

TEST_F ( BackendContractTest ,
DefaultTypeIsNone  )

Definition at line 118 of file backend_contract_test.cpp.

119{
120 mock_backend fresh_backend;
121 EXPECT_EQ(fresh_backend.type(), database_types::none);
122}
Configurable mock for database_backend interface.
database_types type() const override
Get the database type of this backend.

References database::testing::mock_backend::type().

Here is the call graph for this function:

◆ TEST_F() [11/45]

TEST_F ( BackendContractTest ,
EmptyDatabasePreset  )

Definition at line 435 of file backend_contract_test.cpp.

436{
438 auto result = db.select_query("SELECT * FROM anything");
439 ASSERT_TRUE(result.is_ok());
440 EXPECT_TRUE(result.value().empty());
441}

References ASSERT_TRUE, and database::testing::mock_backend_builder::empty_database().

Here is the call graph for this function:

◆ TEST_F() [12/45]

TEST_F ( BackendContractTest ,
ExecuteDeleteQuerySucceeds  )

Definition at line 149 of file backend_contract_test.cpp.

150{
151 auto result = backend_.execute_query("DELETE FROM users WHERE id = 1");
152 ASSERT_TRUE(result.is_ok());
153}

References ASSERT_TRUE.

◆ TEST_F() [13/45]

TEST_F ( BackendContractTest ,
ExecuteInsertQuerySucceeds  )

Definition at line 128 of file backend_contract_test.cpp.

129{
130 auto result = backend_.execute_query("INSERT INTO users (name) VALUES ('John')");
131 ASSERT_TRUE(result.is_ok());
132}

References ASSERT_TRUE.

◆ TEST_F() [14/45]

TEST_F ( BackendContractTest ,
ExecuteInsertQueryWithError  )

Definition at line 134 of file backend_contract_test.cpp.

135{
136 backend_.expect_query("INSERT INTO users (name) VALUES ('John')")
137 .will_fail("Duplicate key violation");
138
139 auto result = backend_.execute_query("INSERT INTO users (name) VALUES ('John')");
140 EXPECT_FALSE(result.is_ok());
141}

◆ TEST_F() [15/45]

TEST_F ( BackendContractTest ,
ExecuteQuerySucceeds  )

Definition at line 205 of file backend_contract_test.cpp.

206{
207 auto result = backend_.execute_query("CREATE TABLE test (id INTEGER)");
208 EXPECT_TRUE(result.is_ok());
209}

◆ TEST_F() [16/45]

TEST_F ( BackendContractTest ,
ExecuteQueryWithExpectedFailure  )

Definition at line 211 of file backend_contract_test.cpp.

212{
213 backend_.expect_query("DROP TABLE nonexistent")
214 .will_fail("Table does not exist");
215
216 auto result = backend_.execute_query("DROP TABLE nonexistent");
217 EXPECT_FALSE(result.is_ok());
218}

◆ TEST_F() [17/45]

TEST_F ( BackendContractTest ,
ExecuteUpdateQuerySucceeds  )

Definition at line 143 of file backend_contract_test.cpp.

144{
145 auto result = backend_.execute_query("UPDATE users SET name = 'Jane' WHERE id = 1");
146 ASSERT_TRUE(result.is_ok());
147}

References ASSERT_TRUE.

◆ TEST_F() [18/45]

TEST_F ( BackendContractTest ,
FailingDatabasePreset  )

Definition at line 455 of file backend_contract_test.cpp.

456{
457 auto db = mock_backend_builder::failing_database("DB is down");
458 auto result = db.select_query("SELECT * FROM users");
459 EXPECT_FALSE(result.is_ok());
460}
static mock_backend failing_database(const std::string &error="Mock database error")

References database::testing::mock_backend_builder::failing_database().

Here is the call graph for this function:

◆ TEST_F() [19/45]

TEST_F ( BackendContractTest ,
GetQueryCountByPattern  )

Definition at line 350 of file backend_contract_test.cpp.

351{
352 backend_.execute_query("INSERT INTO users VALUES (1)");
353 backend_.execute_query("INSERT INTO orders VALUES (1)");
354 backend_.select_query("SELECT * FROM users");
355
356 EXPECT_EQ(backend_.get_query_count("INSERT"), 2u);
357 EXPECT_EQ(backend_.get_query_count("users"), 2u);
358 EXPECT_EQ(backend_.get_query_count("orders"), 1u);
359}

◆ TEST_F() [20/45]

TEST_F ( BackendContractTest ,
GetQueryCountTotal  )

Definition at line 341 of file backend_contract_test.cpp.

342{
343 backend_.execute_query("q1");
344 backend_.execute_query("q2");
345 backend_.select_query("q3");
346
347 EXPECT_EQ(backend_.get_query_count(), 3u);
348}

◆ TEST_F() [21/45]

TEST_F ( BackendContractTest ,
InitializeFailureDefaultMessage  )

Definition at line 83 of file backend_contract_test.cpp.

84{
85 backend_.simulate_initialization_failure();
86 auto result = backend_.initialize(test_config_);
87 EXPECT_FALSE(result.is_ok());
88 EXPECT_EQ(backend_.last_error(), "Mock initialization failed");
89}

◆ TEST_F() [22/45]

TEST_F ( BackendContractTest ,
InitializeFailureSimulation  )

Definition at line 75 of file backend_contract_test.cpp.

76{
77 backend_.simulate_initialization_failure("Custom error");
78 auto result = backend_.initialize(test_config_);
79 EXPECT_FALSE(result.is_ok());
80 EXPECT_FALSE(backend_.is_initialized());
81}

◆ TEST_F() [23/45]

TEST_F ( BackendContractTest ,
InitializeStoresConnectionString  )

Definition at line 66 of file backend_contract_test.cpp.

67{
68 backend_.initialize(test_config_);
69 auto conn_str = backend_.get_connection_string();
70 EXPECT_FALSE(conn_str.empty());
71 EXPECT_NE(conn_str.find("localhost"), std::string::npos);
72 EXPECT_NE(conn_str.find("test_db"), std::string::npos);
73}

◆ TEST_F() [24/45]

TEST_F ( BackendContractTest ,
InitializeSucceeds  )

Definition at line 59 of file backend_contract_test.cpp.

60{
61 auto result = backend_.initialize(test_config_);
62 EXPECT_TRUE(result.is_ok());
63 EXPECT_TRUE(backend_.is_initialized());
64}

References database::testing::mock_backend::initialize().

Here is the call graph for this function:

◆ TEST_F() [25/45]

TEST_F ( BackendContractTest ,
LastErrorInitiallyEmpty  )

Definition at line 426 of file backend_contract_test.cpp.

427{
428 EXPECT_TRUE(backend_.last_error().empty());
429}

◆ TEST_F() [26/45]

TEST_F ( BackendContractTest ,
MoveAssignment  )

Definition at line 534 of file backend_contract_test.cpp.

535{
536 backend_.initialize(test_config_);
537 backend_.execute_query("q1");
538
539 mock_backend target;
540 target = std::move(backend_);
541
542 EXPECT_TRUE(target.is_initialized());
543 EXPECT_EQ(target.get_query_count(), 1u);
544}
bool is_initialized() const override
Check if backend is initialized and ready.

References database::testing::mock_backend::get_query_count(), and database::testing::mock_backend::is_initialized().

Here is the call graph for this function:

◆ TEST_F() [27/45]

TEST_F ( BackendContractTest ,
MoveConstructor  )

Definition at line 521 of file backend_contract_test.cpp.

522{
523 backend_.initialize(test_config_);
524 backend_.set_database_type(database_types::sqlite);
525 backend_.execute_query("q1");
526
527 mock_backend moved(std::move(backend_));
528
529 EXPECT_TRUE(moved.is_initialized());
530 EXPECT_EQ(moved.type(), database_types::sqlite);
531 EXPECT_EQ(moved.get_query_count(), 1u);
532}

References database::testing::mock_backend::get_query_count(), database::testing::mock_backend::is_initialized(), and database::testing::mock_backend::type().

Here is the call graph for this function:

◆ TEST_F() [28/45]

TEST_F ( BackendContractTest ,
NestedBeginTransactionFails  )

Definition at line 249 of file backend_contract_test.cpp.

250{
251 backend_.begin_transaction();
252 auto result = backend_.begin_transaction();
253 EXPECT_FALSE(result.is_ok());
254 // Should still be in transaction
255 EXPECT_TRUE(backend_.in_transaction());
256}

◆ TEST_F() [29/45]

TEST_F ( BackendContractTest ,
PatternMatchingWithRegex  )

Definition at line 299 of file backend_contract_test.cpp.

300{
301 database_result expected = {
302 {{"id", int64_t(1)}, {"name", std::string("Test")}}
303 };
304
305 backend_.expect_pattern("SELECT.*FROM users.*")
306 .will_return(expected);
307
308 auto result = backend_.select_query("SELECT id, name FROM users WHERE id = 1");
309 ASSERT_TRUE(result.is_ok());
310 EXPECT_EQ(result.value().size(), 1u);
311}

References ASSERT_TRUE.

◆ TEST_F() [30/45]

TEST_F ( BackendContractTest ,
RecordsExecutedQueries  )

Definition at line 328 of file backend_contract_test.cpp.

329{
330 backend_.execute_query("INSERT INTO t1 VALUES (1)");
331 backend_.select_query("SELECT * FROM t1");
332 backend_.execute_query("UPDATE t1 SET x = 2");
333
334 auto queries = backend_.get_executed_queries();
335 EXPECT_EQ(queries.size(), 3u);
336 EXPECT_EQ(queries[0], "INSERT INTO t1 VALUES (1)");
337 EXPECT_EQ(queries[1], "SELECT * FROM t1");
338 EXPECT_EQ(queries[2], "UPDATE t1 SET x = 2");
339}

◆ TEST_F() [31/45]

TEST_F ( BackendContractTest ,
ResetClearsEverything  )

Definition at line 379 of file backend_contract_test.cpp.

380{
381 backend_.initialize(test_config_);
382 backend_.begin_transaction();
383 backend_.execute_query("q1");
384 backend_.expect_query("q2").will_return_rows(5);
385
386 backend_.reset();
387
388 EXPECT_FALSE(backend_.is_initialized());
389 EXPECT_FALSE(backend_.in_transaction());
390 EXPECT_EQ(backend_.get_query_count(), 0u);
391 EXPECT_TRUE(backend_.get_connection_string().empty());
392}

◆ TEST_F() [32/45]

TEST_F ( BackendContractTest ,
RollbackTransactionDeactivates  )

Definition at line 242 of file backend_contract_test.cpp.

243{
244 backend_.begin_transaction();
245 EXPECT_TRUE(backend_.rollback_transaction().is_ok());
246 EXPECT_FALSE(backend_.in_transaction());
247}

◆ TEST_F() [33/45]

TEST_F ( BackendContractTest ,
RollbackWithoutTransactionFails  )

Definition at line 264 of file backend_contract_test.cpp.

265{
266 auto result = backend_.rollback_transaction();
267 EXPECT_FALSE(result.is_ok());
268}

◆ TEST_F() [34/45]

TEST_F ( BackendContractTest ,
SelectQueryReturnsEmptyResult  )

Definition at line 178 of file backend_contract_test.cpp.

179{
180 backend_.expect_query("SELECT * FROM empty_table")
181 .will_return(database_result{});
182
183 auto result = backend_.select_query("SELECT * FROM empty_table");
184 ASSERT_TRUE(result.is_ok());
185 EXPECT_TRUE(result.value().empty());
186}

References ASSERT_TRUE.

◆ TEST_F() [35/45]

TEST_F ( BackendContractTest ,
SelectQueryReturnsResults  )

Definition at line 159 of file backend_contract_test.cpp.

160{
161 database_result expected_data = {
162 {{"id", int64_t(1)}, {"name", std::string("Alice")}},
163 {{"id", int64_t(2)}, {"name", std::string("Bob")}}
164 };
165
166 backend_.expect_query("SELECT * FROM users")
167 .will_return(expected_data);
168
169 auto result = backend_.select_query("SELECT * FROM users");
170 ASSERT_TRUE(result.is_ok());
171 EXPECT_EQ(result.value().size(), 2u);
172
173 auto& row0 = result.value()[0];
174 EXPECT_EQ(std::get<int64_t>(row0.at("id")), 1);
175 EXPECT_EQ(std::get<std::string>(row0.at("name")), "Alice");
176}

References ASSERT_TRUE.

◆ TEST_F() [36/45]

TEST_F ( BackendContractTest ,
SelectQueryWithDefaultResult  )

Definition at line 188 of file backend_contract_test.cpp.

189{
190 database_result default_data = {
191 {{"count", int64_t(42)}}
192 };
193 backend_.set_default_select_result(default_data);
194
195 auto result = backend_.select_query("SELECT COUNT(*) FROM anything");
196 ASSERT_TRUE(result.is_ok());
197 EXPECT_EQ(result.value().size(), 1u);
198 EXPECT_EQ(std::get<int64_t>(result.value()[0].at("count")), 42);
199}

References ASSERT_TRUE.

◆ TEST_F() [37/45]

TEST_F ( BackendContractTest ,
ShutdownClearsState  )

Definition at line 91 of file backend_contract_test.cpp.

92{
93 backend_.initialize(test_config_);
94 EXPECT_TRUE(backend_.is_initialized());
95
96 auto result = backend_.shutdown();
97 EXPECT_TRUE(result.is_ok());
98 EXPECT_FALSE(backend_.is_initialized());
99}

◆ TEST_F() [38/45]

TEST_F ( BackendContractTest ,
ShutdownClearsTransactionState  )

Definition at line 285 of file backend_contract_test.cpp.

286{
287 backend_.initialize(test_config_);
288 backend_.begin_transaction();
289 EXPECT_TRUE(backend_.in_transaction());
290
291 backend_.shutdown();
292 EXPECT_FALSE(backend_.in_transaction());
293}

◆ TEST_F() [39/45]

TEST_F ( BackendContractTest ,
SimulateShutdown  )

Definition at line 101 of file backend_contract_test.cpp.

102{
103 backend_.initialize(test_config_);
104 backend_.simulate_shutdown();
105 EXPECT_FALSE(backend_.is_initialized());
106}

◆ TEST_F() [40/45]

TEST_F ( BackendContractTest ,
TransactionCycleBeginCommitBeginRollback  )

Definition at line 270 of file backend_contract_test.cpp.

271{
272 // First cycle: begin -> commit
273 EXPECT_TRUE(backend_.begin_transaction().is_ok());
274 EXPECT_TRUE(backend_.in_transaction());
275 EXPECT_TRUE(backend_.commit_transaction().is_ok());
276 EXPECT_FALSE(backend_.in_transaction());
277
278 // Second cycle: begin -> rollback
279 EXPECT_TRUE(backend_.begin_transaction().is_ok());
280 EXPECT_TRUE(backend_.in_transaction());
281 EXPECT_TRUE(backend_.rollback_transaction().is_ok());
282 EXPECT_FALSE(backend_.in_transaction());
283}

◆ TEST_F() [41/45]

TEST_F ( BackendContractTest ,
TransactionInitiallyInactive  )

Definition at line 224 of file backend_contract_test.cpp.

225{
226 EXPECT_FALSE(backend_.in_transaction());
227}

◆ TEST_F() [42/45]

TEST_F ( BackendContractTest ,
TypeReturnsConfiguredType  )

Definition at line 112 of file backend_contract_test.cpp.

113{
114 backend_.set_database_type(database_types::sqlite);
115 EXPECT_EQ(backend_.type(), database_types::sqlite);
116}

◆ TEST_F() [43/45]

TEST_F ( BackendContractTest ,
VerifyAllExpectationsWhenAllMatched  )

Definition at line 398 of file backend_contract_test.cpp.

399{
400 backend_.expect_query("q1").will_return_rows(1).once();
401 backend_.execute_query("q1");
402 EXPECT_TRUE(backend_.verify_all_expectations());
403}

◆ TEST_F() [44/45]

TEST_F ( BackendContractTest ,
VerifyExpectationsFailsWhenUnmatched  )

Definition at line 405 of file backend_contract_test.cpp.

406{
407 backend_.expect_query("q1").will_return_rows(1).once();
408 // Don't execute q1
409 EXPECT_FALSE(backend_.verify_all_expectations());
410}

◆ TEST_F() [45/45]

TEST_F ( BackendContractTest ,
WithDataPreset  )

Definition at line 443 of file backend_contract_test.cpp.

444{
445 database_result test_data = {
446 {{"id", int64_t(1)}, {"name", std::string("Test")}}
447 };
448 auto db = mock_backend_builder::with_data("users", test_data);
449
450 auto result = db.select_query("SELECT * FROM users WHERE id = 1");
451 ASSERT_TRUE(result.is_ok());
452 EXPECT_EQ(result.value().size(), 1u);
453}
static mock_backend with_data(const std::string &table_name, const core::database_result &data)

References ASSERT_TRUE, and database::testing::mock_backend_builder::with_data().

Here is the call graph for this function: