#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); } }