51 lines
1.3 KiB
C++
51 lines
1.3 KiB
C++
#include "SequenceFixture.hpp"
|
|
|
|
#include "matador/query/query.hpp"
|
|
|
|
#include "matador/sql/dialect.hpp"
|
|
|
|
#include "connection.hpp"
|
|
|
|
#include "catch2/catch_test_macros.hpp"
|
|
|
|
namespace matador::test {
|
|
SequenceFixture::SequenceFixture()
|
|
: db(connection::dns) {
|
|
REQUIRE(db.open());
|
|
}
|
|
|
|
SequenceFixture::~SequenceFixture() {
|
|
while (!sequences_to_drop.empty()) {
|
|
drop_sequence_if_exists(sequences_to_drop.top());
|
|
sequences_to_drop.pop();
|
|
}
|
|
REQUIRE(db.close());
|
|
}
|
|
|
|
void SequenceFixture::check_sequence_exists(const std::string& sequence_name) const {
|
|
auto result = db.sequence_exists(sequence_name);
|
|
REQUIRE(result.is_ok());
|
|
REQUIRE(*result);
|
|
}
|
|
|
|
void SequenceFixture::check_sequence_not_exists(const std::string& sequence_name) const {
|
|
auto result = db.sequence_exists(sequence_name);
|
|
REQUIRE(result.is_ok());
|
|
REQUIRE(!*result);
|
|
}
|
|
|
|
void SequenceFixture::drop_sequence_if_exists(const std::string& sequence_name) const {
|
|
const auto result = db.sequence_exists(sequence_name).and_then([&sequence_name, this](const bool exists) {
|
|
if (exists) {
|
|
auto res = query::drop()
|
|
.sequence(sequence_name)
|
|
.execute(db);
|
|
REQUIRE(res);
|
|
this->check_sequence_not_exists(sequence_name);
|
|
}
|
|
return utils::ok(true);
|
|
});
|
|
REQUIRE(result);
|
|
}
|
|
}
|