From af38dcdf3a836a1b94064a617acac387a2de6539 Mon Sep 17 00:00:00 2001 From: Christian Mollekopf Date: Mon, 1 Dec 2014 10:36:54 +0100 Subject: ClientAPI is starting to work and has a first test. --- client/test/CMakeLists.txt | 15 ++++++++++++ client/test/clientapitest.cpp | 54 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 69 insertions(+) create mode 100644 client/test/CMakeLists.txt create mode 100644 client/test/clientapitest.cpp (limited to 'client/test') diff --git a/client/test/CMakeLists.txt b/client/test/CMakeLists.txt new file mode 100644 index 0000000..6453fc5 --- /dev/null +++ b/client/test/CMakeLists.txt @@ -0,0 +1,15 @@ +set(CMAKE_AUTOMOC ON) +include_directories(${CMAKE_CURRENT_BINARY_DIR}) + +macro(auto_tests) + foreach(_testname ${ARGN}) + add_executable(${_testname} ${_testname}.cpp ${store_SRCS}) + qt5_use_modules(${_testname} Core Test) + target_link_libraries(${_testname} lmdb) + add_test(NAME ${_testname} COMMAND ${_testname}) + endforeach(_testname) +endmacro(auto_tests) + +auto_tests ( + clientapitest +) diff --git a/client/test/clientapitest.cpp b/client/test/clientapitest.cpp new file mode 100644 index 0000000..8d8f552 --- /dev/null +++ b/client/test/clientapitest.cpp @@ -0,0 +1,54 @@ +#include +#include +#include + +#include "../clientapi.h" + +class DummyResourceFacade : public Akonadi2::StoreFacade +{ +public: + ~DummyResourceFacade(){}; + virtual void create(const Akonadi2::Domain::Event &domainObject){}; + virtual void modify(const Akonadi2::Domain::Event &domainObject){}; + virtual void remove(const Akonadi2::Domain::Event &domainObject){}; + virtual void load(const Akonadi2::Query &query, const std::function &resultCallback) + { + qDebug() << "load called"; + for(const auto &result : results) { + resultCallback(result); + } + } + + QList results; +}; + +class ClientAPITest : public QObject +{ + Q_OBJECT +private Q_SLOTS: + + void testLoad() + { + DummyResourceFacade facade; + facade.results << Akonadi2::Domain::Event(); + + Akonadi2::FacadeFactory::instance().registerFacade("dummyresource", [facade](){ return new DummyResourceFacade(facade); }); + + Akonadi2::Query query; + query.resources << "dummyresource"; + + auto result = Akonadi2::Store::load(query); + + QList resultSet; + result->onAdded([&resultSet](const Akonadi2::Domain::Event &event){ resultSet << event; qDebug() << "result added";}); + + bool complete; + result->onComplete([&complete]{ complete = true; qDebug() << "complete";}); + + QTRY_VERIFY(complete); + } + +}; + +QTEST_MAIN(ClientAPITest) +#include "clientapitest.moc" -- cgit v1.2.3