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"