diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/database.cpp | 31 | ||||
-rw-r--r-- | tests/utils.cpp | 12 |
2 files changed, 39 insertions, 4 deletions
diff --git a/tests/database.cpp b/tests/database.cpp index f49220a..7ab6da8 100644 --- a/tests/database.cpp +++ b/tests/database.cpp @@ -1,19 +1,43 @@ #include "catch.hpp" +#include <biboumi.h> + +#ifdef USE_DATABASE + +#include <cstdlib> + #include <database/database.hpp> #include <config/config.hpp> TEST_CASE("Database") { -#ifdef USE_DATABASE - Database::open(":memory:"); +#ifdef PQ_FOUND + std::string postgresql_uri{"postgresql://"}; + const char* env_value = ::getenv("TEST_POSTGRES_URI"); + if (env_value != nullptr) + Database::open("postgresql://"s + env_value); + else +#endif + Database::open(":memory:"); + + Database::raw_exec("DELETE FROM " + Database::irc_server_options.get_name()); + Database::raw_exec("DELETE FROM " + Database::irc_channel_options.get_name()); SECTION("Basic retrieve and update") { auto o = Database::get_irc_server_options("zouzou@example.com", "irc.example.com"); + CHECK(Database::count(Database::irc_server_options) == 0); + o.save(Database::db); + CHECK(Database::count(Database::irc_server_options) == 1); + o.col<Database::Realname>() = "Different realname"; + CHECK(o.col<Database::Realname>() == "Different realname"); o.save(Database::db); + CHECK(o.col<Database::Realname>() == "Different realname"); + CHECK(Database::count(Database::irc_server_options) == 1); + auto a = Database::get_irc_server_options("zouzou@example.com", "irc.example.com"); + CHECK(a.col<Database::Realname>() == "Different realname"); auto b = Database::get_irc_server_options("moumou@example.com", "irc.example.com"); // b does not yet exist in the db, the object is created but not yet @@ -28,7 +52,6 @@ TEST_CASE("Database") SECTION("channel options") { - Config::set("db_name", ":memory:"); auto o = Database::get_irc_channel_options("zouzou@example.com", "irc.example.com", "#foo"); CHECK(o.col<Database::EncodingIn>() == ""); @@ -95,5 +118,5 @@ TEST_CASE("Database") } Database::close(); -#endif } +#endif diff --git a/tests/utils.cpp b/tests/utils.cpp index c5ef7e7..6de19f0 100644 --- a/tests/utils.cpp +++ b/tests/utils.cpp @@ -11,6 +11,7 @@ #include <utils/system.hpp> #include <utils/scopeguard.hpp> #include <utils/dirname.hpp> +#include <utils/is_one_of.hpp> using namespace std::string_literals; @@ -171,3 +172,14 @@ TEST_CASE("dirname") CHECK(utils::dirname(".") == "."); CHECK(utils::dirname("./") == "./"); } + +TEST_CASE("is_in") +{ + CHECK((is_one_of<int, float, std::string, int>) == true); + CHECK((is_one_of<int, float, std::string>) == false); + CHECK((is_one_of<int>) == false); + CHECK((is_one_of<int, int>) == true); + CHECK((is_one_of<bool, int>) == false); + CHECK((is_one_of<bool, bool>) == true); + CHECK((is_one_of<bool, bool, bool, bool, bool, int>) == true); +} |