#include #include "Common/Query.hpp" #include "Databases/ContactsDB.hpp" #include "Database/Database.hpp" #include "Databases/SmsDB.hpp" #include "SMSRecord.hpp" #include "ThreadRecord.hpp" #include "queries/sms/QuerySMSSearch.hpp" #include namespace db { class TestQuery : public Query { public: [[nodiscard]] auto debugInfo() const -> std::string override { return "Test!"; } }; } // namespace db TEST_CASE("Query interface") { Database::Initialize(); auto contactsDB = std::make_unique(); auto smsDB = std::make_unique(); auto smsInterface = std::make_unique(smsDB.get(), contactsDB.get()); auto threadInterface = std::make_unique(smsDB.get(), contactsDB.get()); REQUIRE(contactsDB); REQUIRE(smsDB); REQUIRE(smsInterface); SECTION("unknown query -> no results") { REQUIRE(smsInterface->runQuery(std::make_unique().get()) == nullptr); } auto query = std::make_unique("a", 0, 10); SECTION("known query, wrong interface") { auto result = smsInterface->runQuery(query.get()); REQUIRE(result == nullptr); } SECTION("proper result returned") { auto result = threadInterface->runQuery(query.get()); REQUIRE(dynamic_cast(result.get())); } }