File indexing completed on 2024-05-26 04:29:38

0001 /*
0002  * SPDX-FileCopyrightText: 2018 boud <boud@valdyas.org>
0003  *
0004  *  SPDX-License-Identifier: GPL-2.0-or-later
0005  */
0006 #include "TestResourceTypeModel.h"
0007 
0008 #include <simpletest.h>
0009 #include <QStandardPaths>
0010 #include <QDir>
0011 #include <QVersionNumber>
0012 #include <QDirIterator>
0013 #include <QSqlError>
0014 #include <QSqlQuery>
0015 #include <QtSql>
0016 #include <QModelIndex>
0017 #include <QAbstractItemModelTester>
0018 #include <kconfig.h>
0019 #include <kconfiggroup.h>
0020 #include <ksharedconfig.h>
0021 
0022 #include <KisResourceCacheDb.h>
0023 #include <KisResourceLocator.h>
0024 #include <KisResourceLoaderRegistry.h>
0025 #include <KisResourceTypeModel.h>
0026 
0027 #include <DummyResource.h>
0028 #include <ResourceTestHelper.h>
0029 
0030 
0031 #ifndef FILES_DATA_DIR
0032 #error "FILES_DATA_DIR not set. A directory with the data used for testing installing resources"
0033 #endif
0034 
0035 
0036 void TestResourceTypeModel::initTestCase()
0037 {
0038     ResourceTestHelper::initTestDb();
0039     ResourceTestHelper::createDummyLoaderRegistry();
0040 
0041     m_srcLocation = QString(FILES_DATA_DIR);
0042     QVERIFY2(QDir(m_srcLocation).exists(), m_srcLocation.toUtf8());
0043 
0044     m_dstLocation = ResourceTestHelper::filesDestDir();
0045     ResourceTestHelper::cleanDstLocation(m_dstLocation);
0046 
0047     KConfigGroup cfg(KSharedConfig::openConfig(), "");
0048     cfg.writeEntry(KisResourceLocator::resourceLocationKey, m_dstLocation);
0049 
0050     m_locator = KisResourceLocator::instance();
0051 
0052     if (!KisResourceCacheDb::initialize(QStandardPaths::writableLocation(QStandardPaths::AppDataLocation))) {
0053         qDebug() << "Could not initialize KisResourceCacheDb on" << QStandardPaths::writableLocation(QStandardPaths::AppDataLocation);
0054     }
0055     QVERIFY(KisResourceCacheDb::isValid());
0056 
0057     KisResourceLocator::LocatorError r = m_locator->initialize(m_srcLocation);
0058     if (!m_locator->errorMessages().isEmpty()) qDebug() << m_locator->errorMessages();
0059 
0060     QVERIFY(r == KisResourceLocator::LocatorError::Ok);
0061     QVERIFY(QDir(m_dstLocation).exists());
0062 }
0063 
0064 void TestResourceTypeModel::testWithTagModelTester()
0065 {
0066     KisResourceTypeModel model;
0067     auto tester = new QAbstractItemModelTester(&model);
0068     Q_UNUSED(tester);
0069 }
0070 
0071 
0072 void TestResourceTypeModel::testRowCount()
0073 {
0074     QSqlQuery q;
0075     QVERIFY(q.prepare("SELECT count(*)\n"
0076                       "FROM   resource_types"));
0077     QVERIFY(q.exec());
0078     q.first();
0079     int rowCount = q.value(0).toInt();
0080     QCOMPARE(rowCount, KisResourceLoaderRegistry::instance()->resourceTypes().count());
0081 
0082     KisResourceTypeModel typeModel;
0083     QCOMPARE(typeModel.rowCount(), rowCount);
0084 }
0085 
0086 void TestResourceTypeModel::testData()
0087 {
0088     KisResourceTypeModel typeModel;
0089     for(int i = 0; i < typeModel.rowCount(); ++i) {
0090 
0091         QModelIndex idx = typeModel.index(0, KisResourceTypeModel::ResourceType);
0092 //        qDebug() << "test" << idx.data(Qt::DisplayRole)
0093 //                 << idx.data(Qt::UserRole + KisResourceTypeModel::Id)
0094 //                 << idx.data(Qt::UserRole + KisResourceTypeModel::ResourceType)
0095 //                 << idx.data(Qt::UserRole + KisResourceTypeModel::Name);
0096 
0097         QCOMPARE(ResourceName::resourceTypeToName(ResourceType::Brushes), idx.data(Qt::UserRole + KisResourceTypeModel::Name).toString());
0098     }
0099 }
0100 
0101 
0102 void TestResourceTypeModel::cleanupTestCase()
0103 {
0104     ResourceTestHelper::rmTestDb();
0105     ResourceTestHelper::cleanDstLocation(m_dstLocation);
0106 }
0107 
0108 
0109 
0110 
0111 SIMPLE_TEST_MAIN(TestResourceTypeModel)
0112