File indexing completed on 2024-05-12 16:45:19
0001 /*************************************************************************** 0002 * SPDX-FileCopyrightText: 2022 S. MANKOWSKI stephane@mankowski.fr 0003 * SPDX-FileCopyrightText: 2022 G. DE BURE support@mankowski.fr 0004 * SPDX-License-Identifier: GPL-3.0-or-later 0005 ***************************************************************************/ 0006 /** @file 0007 * This file is a test for SKGObjectModel component. 0008 * 0009 * @author Stephane MANKOWSKI / Guillaume DE BURE 0010 */ 0011 #include "skgtestmodel.h" 0012 #include "modeltest.h" 0013 #include "skgobjectmodel.h" 0014 #include "skgsortfilterproxymodel.h" 0015 #include "skgtestmacro.h" 0016 0017 void SKGTESTModel::Test() 0018 { 0019 KLocalizedString::setApplicationDomain("skrooge"); 0020 0021 int wait = 1; 0022 0023 // Initialize document 0024 SKGDocumentBank doc; 0025 QVERIFY2(!doc.load(SKGTest::getTestPath(QStringLiteral("IN")) % "/advice.skg"), "Load document failed"); 0026 \ 0027 QStringList tables; 0028 doc.getDistinctValues(QStringLiteral("sqlite_master"), QStringLiteral("name"), QStringLiteral("type='view' AND name LIKE 'v_%_display' OR " 0029 "name IN ('v_rule', 'v_account', 'v_recurrentoperation', 'v_operation_display_all', 'v_unit', 'v_operation_displayname', 'v_node')"), tables); 0030 0031 { 0032 SKGError err; 0033 SKGBEGINTRANSACTION(doc, QStringLiteral("DELETE"), err) 0034 doc.executeSqliteOrder(QStringLiteral("DELETE FROM operation WHERE d_date<'") + SKGServices::dateToSqlString(QDate::currentDate().addMonths(-2)) + '\''); 0035 } 0036 0037 for (const auto& table : qAsConst(tables)) { 0038 SKGTRACE << QDateTime::currentDateTime().toString(QStringLiteral("yyyyMMdd-HHmmss-zzz")) << "..:: " << table << " ::.." << SKGENDL; 0039 0040 // Initilialization model 0041 auto model = new SKGObjectModel(&doc, 0042 table, 0043 (table == QStringLiteral("v_account_display") || table == QStringLiteral("v_refund_display") ? QStringLiteral("t_close='N'") : QLatin1String("")), 0044 nullptr, 0045 (table == QStringLiteral("v_category_display") ? QStringLiteral("rd_category_id") : QLatin1String(""))); 0046 0047 if (table == QStringLiteral("v_rule")) { 0048 model->setGroupBy(QStringLiteral("t_action_type")); 0049 } 0050 if (table == QStringLiteral("v_account")) { 0051 model->setGroupBy(QStringLiteral("t_close")); 0052 } 0053 if (table == QStringLiteral("v_recurrentoperation")) { 0054 model->setGroupBy(QStringLiteral("i_nb_times")); 0055 } 0056 if (table == QStringLiteral("v_operation_display_all")) { 0057 model->setGroupBy(QStringLiteral("t_status")); 0058 } 0059 if (table == QStringLiteral("v_operation")) { 0060 model->setGroupBy(QStringLiteral("d_date")); 0061 } 0062 if (table == QStringLiteral("v_unit")) { 0063 model->setGroupBy(QStringLiteral("t_TYPENLS")); 0064 } 0065 if (table == QStringLiteral("v_operation_displayname")) { 0066 model->setGroupBy(QStringLiteral("p_myproperty")); 0067 } 0068 model->getGroupBy(); 0069 model->refresh(); 0070 model->supportedDragActions(); 0071 QTest::qWait(wait); 0072 0073 int nbCols = model->columnCount(); 0074 SKGTRACE << QDateTime::currentDateTime().toString(QStringLiteral("yyyyMMdd-HHmmss-zzz")) << " Nb rows=" << model->rowCount() << SKGENDL; 0075 SKGTRACE << QDateTime::currentDateTime().toString(QStringLiteral("yyyyMMdd-HHmmss-zzz")) << " Nb Cols=" << nbCols << SKGENDL; 0076 for (int i = 0; i < nbCols; ++i) { 0077 SKGTRACE << " " << model->getAttribute(i) << SKGENDL; 0078 } 0079 0080 // Set Data 0081 if (table == QStringLiteral("v_account_display")) { 0082 SKGTRACE << QDateTime::currentDateTime().toString(QStringLiteral("yyyyMMdd-HHmmss-zzz")) << " setData(t_close, Checked)" << SKGENDL; 0083 model->setData(model->index(1, model->getIndexAttribute(QStringLiteral("t_close"))), QVariant(static_cast<unsigned int>(Qt::Checked)), Qt::CheckStateRole); 0084 } 0085 if (table == QStringLiteral("v_refund_display")) { 0086 SKGTRACE << QDateTime::currentDateTime().toString(QStringLiteral("yyyyMMdd-HHmmss-zzz")) << " setData(t_close, Checked)" << SKGENDL; 0087 model->setData(model->index(1, model->getIndexAttribute(QStringLiteral("t_close"))), QVariant(static_cast<unsigned int>(Qt::Checked)), Qt::CheckStateRole); 0088 } 0089 if (table == QStringLiteral("v_operation_display")) { 0090 SKGTRACE << QDateTime::currentDateTime().toString(QStringLiteral("yyyyMMdd-HHmmss-zzz")) << " setData(t_status, Checked)" << SKGENDL; 0091 model->setData(model->index(1, model->getIndexAttribute(QStringLiteral("t_status"))), QVariant(static_cast<unsigned int>(Qt::Checked)), Qt::CheckStateRole); 0092 } 0093 if (table == QStringLiteral("v_recurrentoperation_display")) { 0094 SKGTRACE << QDateTime::currentDateTime().toString(QStringLiteral("yyyyMMdd-HHmmss-zzz")) << " setData(i_warn_days, Checked)" << SKGENDL; 0095 model->setData(model->index(1, model->getIndexAttribute(QStringLiteral("i_warn_days"))), QVariant(static_cast<unsigned int>(Qt::Checked)), Qt::CheckStateRole); 0096 0097 SKGTRACE << QDateTime::currentDateTime().toString(QStringLiteral("yyyyMMdd-HHmmss-zzz")) << " setData(i_auto_write_days, Checked)" << SKGENDL; 0098 model->setData(model->index(1, model->getIndexAttribute(QStringLiteral("i_auto_write_days"))), QVariant(static_cast<unsigned int>(Qt::Checked)), Qt::CheckStateRole); 0099 0100 SKGTRACE << QDateTime::currentDateTime().toString(QStringLiteral("yyyyMMdd-HHmmss-zzz")) << " setData(i_nb_times, Checked)" << SKGENDL; 0101 model->setData(model->index(1, model->getIndexAttribute(QStringLiteral("i_nb_times"))), QVariant(static_cast<unsigned int>(Qt::Checked)), Qt::CheckStateRole); 0102 } 0103 if (table == QStringLiteral("v_budgetrule_display")) { 0104 SKGTRACE << QDateTime::currentDateTime().toString(QStringLiteral("yyyyMMdd-HHmmss-zzz")) << " setData(i_year, Checked)" << SKGENDL; 0105 model->setData(model->index(1, model->getIndexAttribute(QStringLiteral("i_year"))), QVariant(static_cast<unsigned int>(Qt::Checked)), Qt::CheckStateRole); 0106 0107 SKGTRACE << QDateTime::currentDateTime().toString(QStringLiteral("yyyyMMdd-HHmmss-zzz")) << " setData(i_month, Checked)" << SKGENDL; 0108 model->setData(model->index(1, model->getIndexAttribute(QStringLiteral("i_month"))), QVariant(static_cast<unsigned int>(Qt::Checked)), Qt::CheckStateRole); 0109 0110 SKGTRACE << QDateTime::currentDateTime().toString(QStringLiteral("yyyyMMdd-HHmmss-zzz")) << " setData(t_CATEGORYCONDITION, Checked)" << SKGENDL; 0111 model->setData(model->index(1, model->getIndexAttribute(QStringLiteral("t_CATEGORYCONDITION"))), QVariant(static_cast<unsigned int>(Qt::Checked)), Qt::CheckStateRole); 0112 0113 SKGTRACE << QDateTime::currentDateTime().toString(QStringLiteral("yyyyMMdd-HHmmss-zzz")) << " setData(t_CATEGORY, Checked)" << SKGENDL; 0114 model->setData(model->index(1, model->getIndexAttribute(QStringLiteral("t_CATEGORY"))), QVariant(static_cast<unsigned int>(Qt::Checked)), Qt::CheckStateRole); 0115 } 0116 if (table == QStringLiteral("v_budget_display")) { 0117 SKGTRACE << QDateTime::currentDateTime().toString(QStringLiteral("yyyyMMdd-HHmmss-zzz")) << " setData(t_CATEGORY, Checked)" << SKGENDL; 0118 model->setData(model->index(1, model->getIndexAttribute(QStringLiteral("t_CATEGORY"))), QVariant(static_cast<unsigned int>(Qt::Checked)), Qt::CheckStateRole); 0119 } 0120 if (table == QStringLiteral("node")) { 0121 SKGTRACE << QDateTime::currentDateTime().toString(QStringLiteral("yyyyMMdd-HHmmss-zzz")) << " setData(t_name, new name)" << SKGENDL; 0122 model->setData(model->index(1, model->getIndexAttribute(QStringLiteral("t_name"))), QVariant("new name"), Qt::EditRole); 0123 } 0124 if (table == QStringLiteral("v_unit_display")) { 0125 SKGTRACE << QDateTime::currentDateTime().toString(QStringLiteral("yyyyMMdd-HHmmss-zzz")) << " setData(t_name, new name)" << SKGENDL; 0126 model->setData(model->index(1, model->getIndexAttribute(QStringLiteral("t_name"))), QVariant("new name"), Qt::EditRole); 0127 } 0128 0129 if ((table == QStringLiteral("v_node") || table.endsWith(QLatin1String("_display"))) && (model->supportedDragActions()&Qt::MoveAction) != 0u && (model->supportedDropActions()&Qt::MoveAction) != 0u) { 0130 SKGTRACE << QDateTime::currentDateTime().toString(QStringLiteral("yyyyMMdd-HHmmss-zzz")) << " Drag & Drop" << SKGENDL; 0131 model->mimeTypes(); 0132 QMimeData* md = model->mimeData(QModelIndexList() << model->index(0, 0)); 0133 QCOMPARE(model->dropMimeData(md, Qt::MoveAction, 1, 0, model->index(1, 0)), true); 0134 } 0135 0136 // test 0137 SKGTRACE << QDateTime::currentDateTime().toString(QStringLiteral("yyyyMMdd-HHmmss-zzz")) << " new ModelTest" << SKGENDL; 0138 auto modeltest = new ModelTest(model); 0139 QTest::qWait(wait); 0140 0141 delete modeltest; 0142 delete model; 0143 SKGTRACE << QDateTime::currentDateTime().toString(QStringLiteral("yyyyMMdd-HHmmss-zzz")) << " end" << SKGENDL; 0144 } 0145 } 0146 0147 QTEST_MAIN(SKGTESTModel) 0148