File indexing completed on 2024-05-12 05:26:26

0001 #include <QTest>
0002 #include <QDebug>
0003 #include <functional>
0004 
0005 #include "store.h"
0006 #include "facade.h"
0007 #include "resourceconfig.h"
0008 #include "modelresult.h"
0009 #include "resultprovider.h"
0010 #include "facadefactory.h"
0011 #include "test.h"
0012 
0013 using namespace Sink;
0014 using namespace Sink::ApplicationDomain;
0015 
0016 /**
0017  * Test of the resource configuration.
0018  */
0019 class ResourceConfigTest : public QObject
0020 {
0021     Q_OBJECT
0022 private slots:
0023 
0024     void initTestCase()
0025     {
0026         Sink::Test::initTest();
0027         Sink::FacadeFactory::instance().resetFactory();
0028         ResourceConfig::clear();
0029     }
0030 
0031     void resourceManagement()
0032     {
0033         ResourceConfig::clear();
0034         Sink::FacadeFactory::instance().registerStaticFacades();
0035 
0036         SinkResource res("", "dummyresource.identifier1", 0, QSharedPointer<MemoryBufferAdaptor>::create());
0037         res.setProperty("identifier", "dummyresource.identifier1");
0038         res.setProperty(SinkResource::ResourceType::name, "dummyresource");
0039 
0040         VERIFYEXEC(Sink::Store::create(res));
0041         {
0042             Sink::Query query;
0043             query.filter<SinkResource::ResourceType>("dummyresource");
0044             auto model = Sink::Store::loadModel<SinkResource>(query);
0045             QTRY_COMPARE(model->rowCount(QModelIndex()), 1);
0046         }
0047 
0048         VERIFYEXEC(Sink::Store::remove(res));
0049         {
0050             Sink::Query query;
0051             query.filter<SinkResource::ResourceType>("dummyresource");
0052             auto model = Sink::Store::loadModel<SinkResource>(query);
0053             QTRY_VERIFY(model->data(QModelIndex(), Sink::Store::ChildrenFetchedRole).toBool());
0054             QCOMPARE(model->rowCount(QModelIndex()), 0);
0055         }
0056     }
0057 
0058     void testLoadResourceByCapability()
0059     {
0060         ResourceConfig::clear();
0061         Sink::FacadeFactory::instance().registerStaticFacades();
0062 
0063         SinkResource res("", "dummyresource.identifier1", 0, QSharedPointer<MemoryBufferAdaptor>::create());
0064         res.setProperty("identifier", "dummyresource.identifier1");
0065         res.setResourceType("dummyresource");
0066         res.setCapabilities(QByteArrayList() << "foo");
0067 
0068         VERIFYEXEC(Sink::Store::create(res));
0069         {
0070             Sink::Query query;
0071             query.filter<SinkResource::ResourceType>("dummyresource");
0072             auto model = Sink::Store::loadModel<SinkResource>(Query().containsFilter<SinkResource::Capabilities>("foo"));
0073             QTRY_COMPARE(model->rowCount(QModelIndex()), 1);
0074         }
0075 
0076         VERIFYEXEC(Sink::Store::remove(res));
0077     }
0078 
0079     void testLoadResourceStatus()
0080     {
0081         ResourceConfig::clear();
0082         Sink::FacadeFactory::instance().registerStaticFacades();
0083 
0084         auto res = DummyResource::create("");
0085         VERIFYEXEC(Sink::Store::create(res));
0086         {
0087             Sink::Query query;
0088             query.setFlags(Query::LiveQuery);
0089             query.request<SinkResource::Status>();
0090             auto model = Sink::Store::loadModel<SinkResource>(query);
0091             QTRY_COMPARE(model->rowCount(QModelIndex()), 1);
0092             auto resource = model->data(model->index(0, 0, QModelIndex()), Sink::Store::DomainObjectRole).value<SinkResource::Ptr>();
0093             QCOMPARE(resource->getStatus(), static_cast<int>(NoStatus));
0094 
0095             //Synchronize to connect
0096             VERIFYEXEC(Sink::Store::synchronize(query));
0097             QTRY_COMPARE(model->data(model->index(0, 0, QModelIndex()), Sink::Store::DomainObjectRole).value<SinkResource::Ptr>()->getStatus(), static_cast<int>(ConnectedStatus));
0098         }
0099 
0100         VERIFYEXEC(Sink::Store::remove(res));
0101     }
0102 
0103 };
0104 
0105 QTEST_MAIN(ResourceConfigTest)
0106 #include "resourceconfigtest.moc"