2
0
mirror of https://github.com/boostorg/mysql.git synced 2026-02-20 14:52:25 +00:00

Recovered query tests

This commit is contained in:
Ruben Perez
2022-10-14 17:00:36 +02:00
parent 8600ba7e5a
commit 25ca21546e
8 changed files with 78 additions and 64 deletions

View File

@@ -6,8 +6,9 @@
//
#include <boost/mysql/connection.hpp>
#include "metadata_validator.hpp"
#include "integration_test_common.hpp"
#include "metadata_validator.hpp"
#include "test_common.hpp"
using namespace boost::mysql::test;
@@ -21,17 +22,21 @@ BOOST_MYSQL_NETWORK_TEST(insert_ok, network_fixture)
start_transaction();
// Issue query
auto result = conn->query(
"INSERT INTO inserts_table (field_varchar, field_date) VALUES ('v0', '2010-10-11')").get();
auto result = create_resultset();
conn->query(
"INSERT INTO inserts_table (field_varchar, field_date) VALUES ('v0', '2010-10-11')",
*result
)
.get();
// Verify resultset_base
BOOST_TEST(result->fields().empty());
BOOST_TEST(result->valid());
BOOST_TEST(result->complete());
BOOST_TEST(result->affected_rows() == 1u);
BOOST_TEST(result->warning_count() == 0u);
BOOST_TEST(result->last_insert_id() > 0u);
BOOST_TEST(result->info() == "");
BOOST_TEST(result->base().fields().empty());
BOOST_TEST(result->base().valid());
BOOST_TEST(result->base().complete());
BOOST_TEST(result->base().affected_rows() == 1u);
BOOST_TEST(result->base().warning_count() == 0u);
BOOST_TEST(result->base().last_insert_id() > 0u);
BOOST_TEST(result->base().info() == "");
// Verify insertion took place
BOOST_TEST(this->get_table_size("inserts_table") == 1u);
@@ -41,9 +46,12 @@ BOOST_MYSQL_NETWORK_TEST(insert_error, network_fixture)
{
setup_and_connect(sample.net);
start_transaction();
auto result = conn->query(
"INSERT INTO bad_table (field_varchar, field_date) VALUES ('v0', '2010-10-11')");
result.validate_error(errc::no_such_table, {"table", "doesn't exist", "bad_table"});
auto result = create_resultset();
auto netresult = conn->query(
"INSERT INTO bad_table (field_varchar, field_date) VALUES ('v0', '2010-10-11')",
*result
);
netresult.validate_error(errc::no_such_table, {"table", "doesn't exist", "bad_table"});
}
BOOST_MYSQL_NETWORK_TEST(update_ok, network_fixture)
@@ -52,37 +60,42 @@ BOOST_MYSQL_NETWORK_TEST(update_ok, network_fixture)
start_transaction();
// Issue the query
auto result = conn->query("UPDATE updates_table SET field_int = field_int+10").get();
auto result = create_resultset();
conn->query("UPDATE updates_table SET field_int = field_int+10", *result).get();
// Validate resultset_base
BOOST_TEST(result->fields().empty());
BOOST_TEST(result->valid());
BOOST_TEST(result->complete());
BOOST_TEST(result->affected_rows() == 2u);
BOOST_TEST(result->warning_count() == 0u);
BOOST_TEST(result->last_insert_id() == 0u);
validate_string_contains(std::string(result->info()), {"rows matched"});
BOOST_TEST(result->base().fields().empty());
BOOST_TEST(result->base().valid());
BOOST_TEST(result->base().complete());
BOOST_TEST(result->base().affected_rows() == 2u);
BOOST_TEST(result->base().warning_count() == 0u);
BOOST_TEST(result->base().last_insert_id() == 0u);
validate_string_contains(std::string(result->base().info()), {"rows matched"});
// Validate it took effect
result = conn->query("SELECT field_int FROM updates_table WHERE field_varchar = 'f0'").get();
auto updated_value = result->read_all().get().at(0).values().at(0).template get<std::int64_t>();
BOOST_TEST(updated_value == 52); // initial value was 42
conn->query("SELECT field_int FROM updates_table WHERE field_varchar = 'f0'", *result).get();
auto updated_value = result->read_all().get().at(0).at(0).as_int64();
BOOST_TEST(updated_value == 52); // initial value was 42
}
BOOST_MYSQL_NETWORK_TEST(select_ok, network_fixture)
{
setup_and_connect(sample.net);
auto result = conn->query("SELECT * FROM empty_table").get();
BOOST_TEST(result->valid());
BOOST_TEST(!result->complete());
this->validate_2fields_meta(*result, "empty_table");
auto result = create_resultset();
conn->query("SELECT * FROM empty_table", *result).get();
BOOST_TEST(result->base().valid());
BOOST_TEST(!result->base().complete());
this->validate_2fields_meta(result->base(), "empty_table");
}
BOOST_MYSQL_NETWORK_TEST(select_error, network_fixture)
{
setup_and_connect(sample.net);
auto result = conn->query("SELECT field_varchar, field_bad FROM one_row_table");
result.validate_error(errc::bad_field_error, {"unknown column", "field_bad"});
auto result = create_resultset();
auto netresult = conn->query("SELECT field_varchar, field_bad FROM one_row_table", *result);
netresult.validate_error(errc::bad_field_error, {"unknown column", "field_bad"});
}
BOOST_AUTO_TEST_SUITE_END() // test_query
BOOST_AUTO_TEST_SUITE_END() // test_query