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