summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorDan Goodliffe <dan@randomdan.homeip.net>2021-06-13 02:42:26 +0100
committerDan Goodliffe <dan@randomdan.homeip.net>2021-06-13 02:42:26 +0100
commitd8025ff93d66ec1ff7a6ffd90783e877e9eaafff (patch)
tree2ca815e4ffb42430acbe290858f859157356336e /test
parentCreate and drop PostgreSQL mock DBs as needed (diff)
downloadmygrate-d8025ff93d66ec1ff7a6ffd90783e877e9eaafff.tar.bz2
mygrate-d8025ff93d66ec1ff7a6ffd90783e877e9eaafff.tar.xz
mygrate-d8025ff93d66ec1ff7a6ffd90783e877e9eaafff.zip
Support creating a PostgreSQL mock DB and filling it with a schema script
Diffstat (limited to 'test')
-rw-r--r--test/Jamfile.jam1
-rw-r--r--test/test-postgresql.cpp8
-rw-r--r--test/testdb-postgresql.cpp11
-rw-r--r--test/testdb-postgresql.h1
4 files changed, 21 insertions, 0 deletions
diff --git a/test/Jamfile.jam b/test/Jamfile.jam
index 691a68f..8025839 100644
--- a/test/Jamfile.jam
+++ b/test/Jamfile.jam
@@ -4,6 +4,7 @@ project : requirements
<library>../lib//mygrate
<library>boost_unit_test_framework/<link>shared
<define>BOOST_TEST_DYN_LINK
+ <define>ROOT=\\\"$(root)\\\"
;
lib testdb :
diff --git a/test/test-postgresql.cpp b/test/test-postgresql.cpp
index 38feb3c..faafcc0 100644
--- a/test/test-postgresql.cpp
+++ b/test/test-postgresql.cpp
@@ -82,3 +82,11 @@ BOOST_AUTO_TEST_CASE(mock)
auto rs = MyGrate::DbStmt<"SELECT CURRENT_DATABASE()">::execute(&mdb);
BOOST_CHECK_EQUAL(rs->at(0, 0).get<std::string_view>().substr(0, 13), "mygrate_test_");
}
+
+BOOST_AUTO_TEST_CASE(mock_schema)
+{
+ MyGrate::Testing::PqConnDB db {ROOT "/db/schema.sql"};
+ auto mdb = db.mock();
+ auto rs = MyGrate::DbStmt<"SELECT COUNT(*) FROM mygrate.source">::execute(&mdb);
+ BOOST_CHECK_EQUAL(rs->at(0, 0).operator unsigned int(), 0);
+}
diff --git a/test/testdb-postgresql.cpp b/test/testdb-postgresql.cpp
index 55f163f..c59640a 100644
--- a/test/testdb-postgresql.cpp
+++ b/test/testdb-postgresql.cpp
@@ -1,6 +1,7 @@
#include "testdb-postgresql.h"
#include <compileTimeFormatter.h>
#include <cstdlib>
+#include <fstream>
#include <helpers.h>
#include <output/pq/pqConn.h>
@@ -15,6 +16,16 @@ namespace MyGrate {
query(("CREATE DATABASE " + mockname).c_str());
}
+ PqConnDB::PqConnDB(const std::string & schemaFile) : PqConnDB()
+ {
+ auto mdb = mock();
+
+ std::stringstream buffer;
+ buffer << std::ifstream(schemaFile).rdbuf();
+
+ mdb.query(buffer.str().c_str());
+ }
+
PqConnDB::~PqConnDB()
{
query(("DROP DATABASE IF EXISTS " + mockname).c_str());
diff --git a/test/testdb-postgresql.h b/test/testdb-postgresql.h
index fc73d2a..c1cd14a 100644
--- a/test/testdb-postgresql.h
+++ b/test/testdb-postgresql.h
@@ -8,6 +8,7 @@ namespace MyGrate {
class PqConnDB : public Output::Pq::PqConn {
public:
PqConnDB();
+ PqConnDB(const std::string & schemaFile);
~PqConnDB();
Output::Pq::PqConn mock() const;