backend tests progress

This commit is contained in:
2024-01-31 07:21:06 +01:00
parent e171147915
commit 7c02d745c8
9 changed files with 88 additions and 20 deletions
+44 -9
View File
@@ -18,6 +18,7 @@ public:
drop_table_if_exists("flight");
drop_table_if_exists("airplane");
drop_table_if_exists("person");
drop_table_if_exists("quotes");
}
protected:
@@ -34,7 +35,7 @@ private:
using namespace matador::sql;
TEST_CASE_METHOD(SessionRecordFixture, " Create and drop table statement", "[session record]")
TEST_CASE_METHOD(SessionRecordFixture, " Create and drop table statement", "[session][record]")
{
REQUIRE(!ses.table_exists("person"));
ses.create()
@@ -54,7 +55,7 @@ TEST_CASE_METHOD(SessionRecordFixture, " Create and drop table statement", "[ses
REQUIRE(!ses.table_exists("person"));
}
TEST_CASE_METHOD(SessionRecordFixture, " Create and drop table statement with foreign key", "[session record]")
TEST_CASE_METHOD(SessionRecordFixture, " Create and drop table statement with foreign key", "[session][record]")
{
ses.create()
.table("airplane", {
@@ -89,7 +90,7 @@ TEST_CASE_METHOD(SessionRecordFixture, " Create and drop table statement with fo
REQUIRE(!ses.table_exists("airplane"));
}
TEST_CASE_METHOD(SessionRecordFixture, " Execute insert record statement", "[session record]")
TEST_CASE_METHOD(SessionRecordFixture, " Execute insert record statement", "[session][record]")
{
ses.create()
.table("person", {
@@ -128,7 +129,7 @@ TEST_CASE_METHOD(SessionRecordFixture, " Execute insert record statement", "[ses
.execute();
}
TEST_CASE_METHOD(SessionRecordFixture, " Execute insert record statement with foreign key", "[session record]")
TEST_CASE_METHOD(SessionRecordFixture, " Execute insert record statement with foreign key", "[session][record]")
{
ses.create()
.table("airplane", {
@@ -168,7 +169,7 @@ TEST_CASE_METHOD(SessionRecordFixture, " Execute insert record statement with fo
REQUIRE(!ses.table_exists("airplane"));
}
TEST_CASE_METHOD(SessionRecordFixture, " Execute update record statement", "[session record]")
TEST_CASE_METHOD(SessionRecordFixture, " Execute update record statement", "[session][record]")
{
ses.create()
.table("person", {
@@ -214,7 +215,7 @@ TEST_CASE_METHOD(SessionRecordFixture, " Execute update record statement", "[ses
ses.drop().table("person").execute();
}
TEST_CASE_METHOD(SessionRecordFixture, " Execute select statement", "[session record]")
TEST_CASE_METHOD(SessionRecordFixture, " Execute select statement", "[session][record]")
{
ses.create()
.table("person", {
@@ -257,7 +258,7 @@ TEST_CASE_METHOD(SessionRecordFixture, " Execute select statement", "[session re
ses.drop().table("person").execute();
}
TEST_CASE_METHOD(SessionRecordFixture, " Execute select statement with order by", "[session record]")
TEST_CASE_METHOD(SessionRecordFixture, " Execute select statement with order by", "[session][record]")
{
ses.create()
.table("person", {
@@ -291,7 +292,7 @@ TEST_CASE_METHOD(SessionRecordFixture, " Execute select statement with order by"
ses.drop().table("person").execute();
}
TEST_CASE_METHOD(SessionRecordFixture, " Execute select statement with group by and order by", "[session record]")
TEST_CASE_METHOD(SessionRecordFixture, " Execute select statement with group by and order by", "[session][record]")
{
ses.create()
.table("person", {
@@ -330,7 +331,7 @@ TEST_CASE_METHOD(SessionRecordFixture, " Execute select statement with group by
ses.drop().table("person").execute();
}
TEST_CASE_METHOD(SessionRecordFixture, " Execute delete statement", "[session record]")
TEST_CASE_METHOD(SessionRecordFixture, " Execute delete statement", "[session][record]")
{
ses.create()
.table("person", {
@@ -359,3 +360,37 @@ TEST_CASE_METHOD(SessionRecordFixture, " Execute delete statement", "[session re
ses.drop().table("person").execute();
}
TEST_CASE_METHOD(SessionRecordFixture, " Test quoted identifier", "[session][record]") {
ses.create()
.table("quotes", {
make_column<std::string>("from", 255),
make_column<std::string>("to", 255)
}).execute();
// check table description
std::vector<std::string> columns = { "from", "to"};
std::vector<data_type_t> types = {data_type_t::type_varchar, data_type_t::type_varchar};
auto fields = ses.describe_table("quotes");
for (const auto &field : fields) {
REQUIRE(field.name() == columns[field.index()]);
REQUIRE(field.type() == types[field.index()]);
}
ses.insert().into("quotes", {"from", "to"}).values({"Berlin", "London"}).execute();
auto res = ses.select({"from", "to"}).from("quotes").fetch_one();
REQUIRE("Berlin" == res.at("from").str());
REQUIRE("London" == res.at("to").str());
ses.update("quotes").set({{"from", "Hamburg"}, {"to", "New York"}}).where("from"_col == "Berlin").execute();
res = ses.select({"from", "to"}).from("quotes").fetch_one();
REQUIRE("Hamburg" == res.at("from").str());
REQUIRE("New York" == res.at("to").str());
ses.drop().table("quotes").execute();
}