diff --git a/src/presentation/CMakeLists.txt b/src/presentation/CMakeLists.txt --- a/src/presentation/CMakeLists.txt +++ b/src/presentation/CMakeLists.txt @@ -16,6 +16,7 @@ projectpagemodel.cpp querytreemodelbase.cpp tagpagemodel.cpp + taskapplicationmodel.cpp tasklistmodel.cpp workdaypagemodel.cpp ) diff --git a/src/presentation/applicationmodel.h b/src/presentation/applicationmodel.h --- a/src/presentation/applicationmodel.h +++ b/src/presentation/applicationmodel.h @@ -44,6 +44,7 @@ namespace Presentation { +class AvailablePagesModelInterface; class ErrorHandler; class ApplicationModel : public QObject @@ -95,14 +96,17 @@ void currentPageChanged(QObject *page); private: + virtual AvailablePagesModelInterface *createAvailablePagesModel() = 0; + Domain::QueryResult::Ptr noteSources(); Domain::QueryResult::Ptr taskSources(); QObject *m_availableSources; QObject *m_availablePages; QObject *m_currentPage; QObject *m_editor; +protected: Domain::ArtifactQueries::Ptr m_artifactQueries; Domain::ProjectQueries::Ptr m_projectQueries; diff --git a/src/presentation/applicationmodel.cpp b/src/presentation/applicationmodel.cpp --- a/src/presentation/applicationmodel.cpp +++ b/src/presentation/applicationmodel.cpp @@ -169,17 +169,7 @@ QObject *ApplicationModel::availablePages() { if (!m_availablePages) { - auto model = new AvailableTaskPagesModel(m_artifactQueries, - m_projectQueries, - m_projectRepository, - m_contextQueries, - m_contextRepository, - m_taskQueries, - m_taskRepository, - m_noteRepository, - m_tagQueries, - m_tagRepository, - this); + auto model = createAvailablePagesModel(); model->setErrorHandler(errorHandler()); m_availablePages = model; } diff --git a/src/presentation/taskapplicationmodel.h b/src/presentation/taskapplicationmodel.h new file mode 100644 --- /dev/null +++ b/src/presentation/taskapplicationmodel.h @@ -0,0 +1,56 @@ +/* This file is part of Zanshin + + Copyright 2015 Kevin Ottens + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of + the License or (at your option) version 3 or any later version + accepted by the membership of KDE e.V. (or its successor approved + by the membership of KDE e.V.), which shall act as a proxy + defined in Section 14 of version 3 of the license. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. +*/ + + +#ifndef PRESENTATION_TASKAPPLICATIONMODEL_H +#define PRESENTATION_TASKAPPLICATIONMODEL_H + +#include "presentation/applicationmodel.h" + +namespace Presentation { + +class TaskApplicationModel : public ApplicationModel +{ + Q_OBJECT +public: + explicit TaskApplicationModel(const Domain::ArtifactQueries::Ptr &artifactQueries, + const Domain::ProjectQueries::Ptr &projectQueries, + const Domain::ProjectRepository::Ptr &projectRepository, + const Domain::ContextQueries::Ptr &contextQueries, + const Domain::ContextRepository::Ptr &contextRepository, + const Domain::DataSourceQueries::Ptr &sourceQueries, + const Domain::DataSourceRepository::Ptr &sourceRepository, + const Domain::TaskQueries::Ptr &taskQueries, + const Domain::TaskRepository::Ptr &taskRepository, + const Domain::NoteRepository::Ptr ¬eRepository, + const Domain::TagQueries::Ptr &tagQueries, + const Domain::TagRepository::Ptr &tagRepository, + QObject *parent = Q_NULLPTR); + +private: + AvailablePagesModelInterface *createAvailablePagesModel() Q_DECL_OVERRIDE; +}; + +} + +#endif // PRESENTATION_TASKAPPLICATIONMODEL_H diff --git a/src/presentation/taskapplicationmodel.cpp b/src/presentation/taskapplicationmodel.cpp new file mode 100644 --- /dev/null +++ b/src/presentation/taskapplicationmodel.cpp @@ -0,0 +1,73 @@ +/* This file is part of Zanshin + + Copyright 2015 Kevin Ottens + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of + the License or (at your option) version 3 or any later version + accepted by the membership of KDE e.V. (or its successor approved + by the membership of KDE e.V.), which shall act as a proxy + defined in Section 14 of version 3 of the license. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. +*/ + + +#include "taskapplicationmodel.h" + +#include "presentation/availabletaskpagesmodel.h" + +using namespace Presentation; + +TaskApplicationModel::TaskApplicationModel(const Domain::ArtifactQueries::Ptr &artifactQueries, + const Domain::ProjectQueries::Ptr &projectQueries, + const Domain::ProjectRepository::Ptr &projectRepository, + const Domain::ContextQueries::Ptr &contextQueries, + const Domain::ContextRepository::Ptr &contextRepository, + const Domain::DataSourceQueries::Ptr &sourceQueries, + const Domain::DataSourceRepository::Ptr &sourceRepository, + const Domain::TaskQueries::Ptr &taskQueries, + const Domain::TaskRepository::Ptr &taskRepository, + const Domain::NoteRepository::Ptr ¬eRepository, + const Domain::TagQueries::Ptr &tagQueries, + const Domain::TagRepository::Ptr &tagRepository, + QObject *parent) + : ApplicationModel(artifactQueries, + projectQueries, + projectRepository, + contextQueries, + contextRepository, + sourceQueries, + sourceRepository, + taskQueries, + taskRepository, + noteRepository, + tagQueries, + tagRepository, + parent) +{ +} + +AvailablePagesModelInterface *TaskApplicationModel::createAvailablePagesModel() +{ + return new AvailableTaskPagesModel(m_artifactQueries, + m_projectQueries, + m_projectRepository, + m_contextQueries, + m_contextRepository, + m_taskQueries, + m_taskRepository, + m_noteRepository, + m_tagQueries, + m_tagRepository, + this); +} diff --git a/src/zanshin/app/dependencies.cpp b/src/zanshin/app/dependencies.cpp --- a/src/zanshin/app/dependencies.cpp +++ b/src/zanshin/app/dependencies.cpp @@ -42,7 +42,7 @@ #include "akonadi/akonadiserializer.h" #include "akonadi/akonadistorage.h" -#include "presentation/applicationmodel.h" +#include "presentation/taskapplicationmodel.h" #include "scripting/scripthandler.h" @@ -120,18 +120,18 @@ deps.add(); + Presentation::TaskApplicationModel(Domain::ArtifactQueries*, + Domain::ProjectQueries*, + Domain::ProjectRepository*, + Domain::ContextQueries*, + Domain::ContextRepository*, + Domain::DataSourceQueries*, + Domain::DataSourceRepository*, + Domain::TaskQueries*, + Domain::TaskRepository*, + Domain::NoteRepository*, + Domain::TagQueries*, + Domain::TagRepository*)>(); deps.add(); diff --git a/tests/units/presentation/CMakeLists.txt b/tests/units/presentation/CMakeLists.txt --- a/tests/units/presentation/CMakeLists.txt +++ b/tests/units/presentation/CMakeLists.txt @@ -13,6 +13,7 @@ projectpagemodeltest querytreemodeltest tagpagemodeltest + taskapplicationmodeltest tasklistmodeltest contextpagemodeltest workdaypagemodeltest diff --git a/tests/units/presentation/applicationmodeltest.cpp b/tests/units/presentation/applicationmodeltest.cpp --- a/tests/units/presentation/applicationmodeltest.cpp +++ b/tests/units/presentation/applicationmodeltest.cpp @@ -33,7 +33,7 @@ #include "presentation/applicationmodel.h" #include "presentation/artifacteditormodel.h" -#include "presentation/availabletaskpagesmodel.h" +#include "presentation/availablepagesmodelinterface.h" #include "presentation/availablesourcesmodel.h" #include "presentation/datasourcelistmodel.h" #include "presentation/inboxpagemodel.h" @@ -55,6 +55,63 @@ QString m_message; }; +class FakeAvailablePagesModel : public Presentation::AvailablePagesModelInterface +{ + Q_OBJECT +public: + explicit FakeAvailablePagesModel(QObject *parent = Q_NULLPTR) + : Presentation::AvailablePagesModelInterface(parent) {} + + QAbstractItemModel *pageListModel() Q_DECL_OVERRIDE { return Q_NULLPTR; } + + QObject *createPageForIndex(const QModelIndex &) Q_DECL_OVERRIDE { return Q_NULLPTR; } + + void addProject(const QString &, const Domain::DataSource::Ptr &) Q_DECL_OVERRIDE {} + void addContext(const QString &) Q_DECL_OVERRIDE {} + void addTag(const QString &) Q_DECL_OVERRIDE {} + void removeItem(const QModelIndex &) Q_DECL_OVERRIDE {} +}; + +class ApplicationModel : public Presentation::ApplicationModel +{ + Q_OBJECT +public: + explicit ApplicationModel(const Domain::ArtifactQueries::Ptr &artifactQueries, + const Domain::ProjectQueries::Ptr &projectQueries, + const Domain::ProjectRepository::Ptr &projectRepository, + const Domain::ContextQueries::Ptr &contextQueries, + const Domain::ContextRepository::Ptr &contextRepository, + const Domain::DataSourceQueries::Ptr &sourceQueries, + const Domain::DataSourceRepository::Ptr &sourceRepository, + const Domain::TaskQueries::Ptr &taskQueries, + const Domain::TaskRepository::Ptr &taskRepository, + const Domain::NoteRepository::Ptr ¬eRepository, + const Domain::TagQueries::Ptr &tagQueries, + const Domain::TagRepository::Ptr &tagRepository, + QObject *parent = Q_NULLPTR) + : Presentation::ApplicationModel(artifactQueries, + projectQueries, + projectRepository, + contextQueries, + contextRepository, + sourceQueries, + sourceRepository, + taskQueries, + taskRepository, + noteRepository, + tagQueries, + tagRepository, + parent) + { + } + +private: + Presentation::AvailablePagesModelInterface *createAvailablePagesModel() Q_DECL_OVERRIDE + { + return new FakeAvailablePagesModel(this); + } +}; + class ApplicationModelTest : public QObject { Q_OBJECT @@ -74,27 +131,27 @@ auto noteRepository = Domain::NoteRepository::Ptr(); auto tagQueries = Domain::TagQueries::Ptr(); auto tagRepository = Domain::TagRepository::Ptr(); - Presentation::ApplicationModel app(artifactQueries, - projectQueries, - projectRepository, - contextQueries, - contextRepository, - sourceQueries, - sourceRepository, - taskQueries, - taskRepository, - noteRepository, - tagQueries, - tagRepository); + ApplicationModel app(artifactQueries, + projectQueries, + projectRepository, + contextQueries, + contextRepository, + sourceQueries, + sourceRepository, + taskQueries, + taskRepository, + noteRepository, + tagQueries, + tagRepository); // WHEN QObject *available = app.availableSources(); // THEN QVERIFY(qobject_cast(available)); } - void shouldProvideAvailableTaskPagesModel() + void shouldProvideAvailablePagesModel() { // GIVEN auto artifactQueries = Domain::ArtifactQueries::Ptr(); @@ -109,24 +166,24 @@ auto noteRepository = Domain::NoteRepository::Ptr(); auto tagQueries = Domain::TagQueries::Ptr(); auto tagRepository = Domain::TagRepository::Ptr(); - Presentation::ApplicationModel app(artifactQueries, - projectQueries, - projectRepository, - contextQueries, - contextRepository, - sourceQueries, - sourceRepository, - taskQueries, - taskRepository, - noteRepository, - tagQueries, - tagRepository); + ApplicationModel app(artifactQueries, + projectQueries, + projectRepository, + contextQueries, + contextRepository, + sourceQueries, + sourceRepository, + taskQueries, + taskRepository, + noteRepository, + tagQueries, + tagRepository); // WHEN QObject *available = app.availablePages(); // THEN - QVERIFY(qobject_cast(available)); + QVERIFY(qobject_cast(available)); } void shouldProvideCurrentPage() @@ -144,18 +201,18 @@ auto noteRepository = Domain::NoteRepository::Ptr(); auto tagQueries = Domain::TagQueries::Ptr(); auto tagRepository = Domain::TagRepository::Ptr(); - Presentation::ApplicationModel app(artifactQueries, - projectQueries, - projectRepository, - contextQueries, - contextRepository, - sourceQueries, - sourceRepository, - taskQueries, - taskRepository, - noteRepository, - tagQueries, - tagRepository); + ApplicationModel app(artifactQueries, + projectQueries, + projectRepository, + contextQueries, + contextRepository, + sourceQueries, + sourceRepository, + taskQueries, + taskRepository, + noteRepository, + tagQueries, + tagRepository); QVERIFY(!app.currentPage()); QSignalSpy spy(&app, SIGNAL(currentPageChanged(QObject*))); @@ -189,18 +246,18 @@ auto noteRepository = Domain::NoteRepository::Ptr(); auto tagQueries = Domain::TagQueries::Ptr(); auto tagRepository = Domain::TagRepository::Ptr(); - Presentation::ApplicationModel app(artifactQueries, - projectQueries, - projectRepository, - contextQueries, - contextRepository, - sourceQueries, - sourceRepository, - taskQueries, - taskRepository, - noteRepository, - tagQueries, - tagRepository); + ApplicationModel app(artifactQueries, + projectQueries, + projectRepository, + contextQueries, + contextRepository, + sourceQueries, + sourceRepository, + taskQueries, + taskRepository, + noteRepository, + tagQueries, + tagRepository); // WHEN QObject *page = app.editor(); @@ -227,18 +284,18 @@ auto noteRepository = Domain::NoteRepository::Ptr(); auto tagQueries = Domain::TagQueries::Ptr(); auto tagRepository = Domain::TagRepository::Ptr(); - Presentation::ApplicationModel app(artifactQueries, - projectQueries, - projectRepository, - contextQueries, - contextRepository, - sourceQueriesMock.getInstance(), - sourceRepository, - taskQueries, - taskRepository, - noteRepository, - tagQueries, - tagRepository); + ApplicationModel app(artifactQueries, + projectQueries, + projectRepository, + contextQueries, + contextRepository, + sourceQueriesMock.getInstance(), + sourceRepository, + taskQueries, + taskRepository, + noteRepository, + tagQueries, + tagRepository); // WHEN auto tasks = app.taskSourcesModel(); @@ -286,18 +343,18 @@ auto noteRepository = Domain::NoteRepository::Ptr(); auto tagQueries = Domain::TagQueries::Ptr(); auto tagRepository = Domain::TagRepository::Ptr(); - Presentation::ApplicationModel app(artifactQueries, - projectQueries, - projectRepository, - contextQueries, - contextRepository, - sourceQueriesMock.getInstance(), - sourceRepository, - taskQueries, - taskRepositoryMock.getInstance(), - noteRepository, - tagQueries, - tagRepository); + ApplicationModel app(artifactQueries, + projectQueries, + projectRepository, + contextQueries, + contextRepository, + sourceQueriesMock.getInstance(), + sourceRepository, + taskQueries, + taskRepositoryMock.getInstance(), + noteRepository, + tagQueries, + tagRepository); // WHEN auto source = app.defaultTaskDataSource(); @@ -340,18 +397,18 @@ auto noteRepository = Domain::NoteRepository::Ptr(); auto tagQueries = Domain::TagQueries::Ptr(); auto tagRepository = Domain::TagRepository::Ptr(); - Presentation::ApplicationModel app(artifactQueries, - projectQueries, - projectRepository, - contextQueries, - contextRepository, - sourceQueriesMock.getInstance(), - sourceRepository, - taskQueries, - taskRepositoryMock.getInstance(), - noteRepository, - tagQueries, - tagRepository); + ApplicationModel app(artifactQueries, + projectQueries, + projectRepository, + contextQueries, + contextRepository, + sourceQueriesMock.getInstance(), + sourceRepository, + taskQueries, + taskRepositoryMock.getInstance(), + noteRepository, + tagQueries, + tagRepository); // WHEN auto source = app.defaultTaskDataSource(); @@ -386,18 +443,18 @@ auto noteRepository = Domain::NoteRepository::Ptr(); auto tagQueries = Domain::TagQueries::Ptr(); auto tagRepository = Domain::TagRepository::Ptr(); - Presentation::ApplicationModel app(artifactQueries, - projectQueries, - projectRepository, - contextQueries, - contextRepository, - sourceQueriesMock.getInstance(), - sourceRepository, - taskQueries, - taskRepositoryMock.getInstance(), - noteRepository, - tagQueries, - tagRepository); + ApplicationModel app(artifactQueries, + projectQueries, + projectRepository, + contextQueries, + contextRepository, + sourceQueriesMock.getInstance(), + sourceRepository, + taskQueries, + taskRepositoryMock.getInstance(), + noteRepository, + tagQueries, + tagRepository); // WHEN auto source = app.defaultTaskDataSource(); @@ -436,18 +493,18 @@ auto noteRepository = Domain::NoteRepository::Ptr(); auto tagQueries = Domain::TagQueries::Ptr(); auto tagRepository = Domain::TagRepository::Ptr(); - Presentation::ApplicationModel app(artifactQueries, - projectQueries, - projectRepository, - contextQueries, - contextRepository, - sourceQueriesMock.getInstance(), - sourceRepository, - taskQueries, - taskRepositoryMock.getInstance(), - noteRepository, - tagQueries, - tagRepository); + ApplicationModel app(artifactQueries, + projectQueries, + projectRepository, + contextQueries, + contextRepository, + sourceQueriesMock.getInstance(), + sourceRepository, + taskQueries, + taskRepositoryMock.getInstance(), + noteRepository, + tagQueries, + tagRepository); // WHEN @@ -494,18 +551,18 @@ auto taskRepository = Domain::TaskRepository::Ptr(); auto tagQueries = Domain::TagQueries::Ptr(); auto tagRepository = Domain::TagRepository::Ptr(); - Presentation::ApplicationModel app(artifactQueries, - projectQueries, - projectRepository, - contextQueries, - contextRepository, - sourceQueriesMock.getInstance(), - sourceRepository, - taskQueries, - taskRepository, - noteRepositoryMock.getInstance(), - tagQueries, - tagRepository); + ApplicationModel app(artifactQueries, + projectQueries, + projectRepository, + contextQueries, + contextRepository, + sourceQueriesMock.getInstance(), + sourceRepository, + taskQueries, + taskRepository, + noteRepositoryMock.getInstance(), + tagQueries, + tagRepository); // WHEN auto source = app.defaultNoteDataSource(); @@ -548,18 +605,18 @@ auto taskRepository = Domain::TaskRepository::Ptr(); auto tagQueries = Domain::TagQueries::Ptr(); auto tagRepository = Domain::TagRepository::Ptr(); - Presentation::ApplicationModel app(artifactQueries, - projectQueries, - projectRepository, - contextQueries, - contextRepository, - sourceQueriesMock.getInstance(), - sourceRepository, - taskQueries, - taskRepository, - noteRepositoryMock.getInstance(), - tagQueries, - tagRepository); + ApplicationModel app(artifactQueries, + projectQueries, + projectRepository, + contextQueries, + contextRepository, + sourceQueriesMock.getInstance(), + sourceRepository, + taskQueries, + taskRepository, + noteRepositoryMock.getInstance(), + tagQueries, + tagRepository); // WHEN auto source = app.defaultNoteDataSource(); @@ -594,18 +651,18 @@ auto taskRepository = Domain::TaskRepository::Ptr(); auto tagQueries = Domain::TagQueries::Ptr(); auto tagRepository = Domain::TagRepository::Ptr(); - Presentation::ApplicationModel app(artifactQueries, - projectQueries, - projectRepository, - contextQueries, - contextRepository, - sourceQueriesMock.getInstance(), - sourceRepository, - taskQueries, - taskRepository, - noteRepositoryMock.getInstance(), - tagQueries, - tagRepository); + ApplicationModel app(artifactQueries, + projectQueries, + projectRepository, + contextQueries, + contextRepository, + sourceQueriesMock.getInstance(), + sourceRepository, + taskQueries, + taskRepository, + noteRepositoryMock.getInstance(), + tagQueries, + tagRepository); // WHEN auto source = app.defaultNoteDataSource(); @@ -644,18 +701,18 @@ auto taskRepository = Domain::TaskRepository::Ptr(); auto tagQueries = Domain::TagQueries::Ptr(); auto tagRepository = Domain::TagRepository::Ptr(); - Presentation::ApplicationModel app(artifactQueries, - projectQueries, - projectRepository, - contextQueries, - contextRepository, - sourceQueriesMock.getInstance(), - sourceRepository, - taskQueries, - taskRepository, - noteRepositoryMock.getInstance(), - tagQueries, - tagRepository); + ApplicationModel app(artifactQueries, + projectQueries, + projectRepository, + contextQueries, + contextRepository, + sourceQueriesMock.getInstance(), + sourceRepository, + taskQueries, + taskRepository, + noteRepositoryMock.getInstance(), + tagQueries, + tagRepository); // WHEN app.setDefaultNoteDataSource(source); @@ -683,25 +740,25 @@ auto taskRepository = Domain::TaskRepository::Ptr(); auto tagQueries = Domain::TagQueries::Ptr(); auto tagRepository = Domain::TagRepository::Ptr(); - Presentation::ApplicationModel app(artifactQueries, - projectQueries, - projectRepository, - contextQueries, - contextRepository, - sourceQueries, - sourceRepository, - taskQueries, - taskRepository, - noteRepository, - tagQueries, - tagRepository); + ApplicationModel app(artifactQueries, + projectQueries, + projectRepository, + contextQueries, + contextRepository, + sourceQueries, + sourceRepository, + taskQueries, + taskRepository, + noteRepository, + tagQueries, + tagRepository); // WHEN app.setErrorHandler(&errorHandler); // THEN auto availableSource = static_cast(app.availableSources()); - auto availablePages = static_cast(app.availablePages()); + auto availablePages = static_cast(app.availablePages()); auto editor = static_cast(app.editor()); QCOMPARE(availableSource->errorHandler(), &errorHandler); QCOMPARE(availablePages->errorHandler(), &errorHandler); diff --git a/tests/units/presentation/taskapplicationmodeltest.cpp b/tests/units/presentation/taskapplicationmodeltest.cpp new file mode 100644 --- /dev/null +++ b/tests/units/presentation/taskapplicationmodeltest.cpp @@ -0,0 +1,71 @@ +/* This file is part of Zanshin + + Copyright 2015 Kevin Ottens + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of + the License or (at your option) version 3 or any later version + accepted by the membership of KDE e.V. (or its successor approved + by the membership of KDE e.V.), which shall act as a proxy + defined in Section 14 of version 3 of the license. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. +*/ + +#include + +#include "presentation/availabletaskpagesmodel.h" +#include "presentation/taskapplicationmodel.h" + +class TaskApplicationModelTest : public QObject +{ + Q_OBJECT +private slots: + void shouldProvideAvailableTaskPagesModel() + { + // GIVEN + auto artifactQueries = Domain::ArtifactQueries::Ptr(); + auto projectQueries = Domain::ProjectQueries::Ptr(); + auto projectRepository = Domain::ProjectRepository::Ptr(); + auto contextQueries = Domain::ContextQueries::Ptr(); + auto contextRepository = Domain::ContextRepository::Ptr(); + auto sourceQueries = Domain::DataSourceQueries::Ptr(); + auto sourceRepository = Domain::DataSourceRepository::Ptr(); + auto taskQueries = Domain::TaskQueries::Ptr(); + auto taskRepository = Domain::TaskRepository::Ptr(); + auto noteRepository = Domain::NoteRepository::Ptr(); + auto tagQueries = Domain::TagQueries::Ptr(); + auto tagRepository = Domain::TagRepository::Ptr(); + Presentation::TaskApplicationModel app(artifactQueries, + projectQueries, + projectRepository, + contextQueries, + contextRepository, + sourceQueries, + sourceRepository, + taskQueries, + taskRepository, + noteRepository, + tagQueries, + tagRepository); + + // WHEN + QObject *available = app.availablePages(); + + // THEN + QVERIFY(qobject_cast(available)); + } +}; + +QTEST_MAIN(TaskApplicationModelTest) + +#include "taskapplicationmodeltest.moc"