summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/database.cpp31
-rw-r--r--tests/utils.cpp12
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);
+}