File indexing completed on 2024-05-19 16:18:20

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 script.
0008  *
0009  * @author Stephane MANKOWSKI / Guillaume DE BURE
0010  */
0011 #include "skgtestmacro.h"
0012 #include "skgbankincludes.h"
0013 #include "skgservices.h"
0014 
0015 /**
0016  * The main function of the unit test
0017  * @param argc the number of arguments
0018  * @param argv the list of arguments
0019  */
0020 int main(int argc, char** argv)
0021 {
0022     Q_UNUSED(argc)
0023     Q_UNUSED(argv)
0024 
0025     // Init test
0026     SKGINITTEST(true)
0027 
0028     // ============================================================================
0029     {
0030         // Test bank document
0031         SKGDocumentBank document1;
0032         SKGTESTERROR(QStringLiteral("document1.initialize()"), document1.initialize(), true)
0033         SKGBankObject bank(&document1);
0034         SKGAccountObject account;
0035         SKGUnitObject unit_euro(&document1);
0036         SKGUnitValueObject unit_euro_val1;
0037         QDate d1 = QDate::currentDate().addMonths(-6);
0038         SKGError err;
0039         {
0040             // Scope of the transaction
0041             SKGBEGINTRANSACTION(document1, QStringLiteral("BANK_T1"), err)
0042 
0043             // Creation bank
0044             SKGTESTERROR(QStringLiteral("BANK:setName"), bank.setName(QStringLiteral("CREDIT COOP")), true)
0045             SKGTESTERROR(QStringLiteral("BANK:save"), bank.save(), true)
0046 
0047             // Creation account
0048             SKGTESTERROR(QStringLiteral("BANK:addAccount"), bank.addAccount(account), true)
0049             SKGTESTERROR(QStringLiteral("ACCOUNT:setName"), account.setName(QStringLiteral("Courant steph")), true)
0050             SKGTESTERROR(QStringLiteral("ACCOUNT:save"), account.save(), true)
0051 
0052             // Creation unit
0053             SKGTESTERROR(QStringLiteral("UNIT:setName"), unit_euro.setName(QStringLiteral("euro")), true)
0054             SKGTESTERROR(QStringLiteral("UNIT:save"), unit_euro.save(), true)
0055 
0056             // Creation unitvalue
0057             SKGTESTERROR(QStringLiteral("UNIT:addUnitValue"), unit_euro.addUnitValue(unit_euro_val1), true)
0058             SKGTESTERROR(QStringLiteral("UNITVALUE:setQuantity"), unit_euro_val1.setQuantity(1), true)
0059             SKGTESTERROR(QStringLiteral("UNITVALUE:setDate"), unit_euro_val1.setDate(d1), true)
0060             SKGTESTERROR(QStringLiteral("UNITVALUE:save"), unit_euro_val1.save(), true)
0061 
0062             // Creation operation
0063             SKGOperationObject op;
0064             SKGTESTERROR(QStringLiteral("ACCOUNT:addOperation"), account.addOperation(op), true)
0065             SKGTESTERROR(QStringLiteral("OPE:setMode"), op.setMode(QStringLiteral("cheque")), true)
0066             SKGTESTERROR(QStringLiteral("OPE:setDate"), op.setDate(d1), true)
0067             SKGTESTERROR(QStringLiteral("OPE:setUnit"), op.setUnit(unit_euro), true)
0068             SKGTESTERROR(QStringLiteral("OPE:save"), op.save(), true)
0069 
0070             SKGSubOperationObject subop1;
0071             SKGTESTERROR(QStringLiteral("OPE:addSubOperation"), op.addSubOperation(subop1), true)
0072             SKGTESTERROR(QStringLiteral("SUBOPE:setQuantity"), subop1.setQuantity(21), true)
0073             SKGTESTERROR(QStringLiteral("SUBOPE:save"), subop1.save(), true)
0074             SKGSubOperationObject subop2;
0075             SKGTESTERROR(QStringLiteral("OPE:addSubOperation"), op.addSubOperation(subop2), true)
0076             SKGTESTERROR(QStringLiteral("SUBOPE:setQuantity"), subop2.setQuantity(1), true)
0077             SKGTESTERROR(QStringLiteral("SUBOPE:save"), subop2.save(), true)
0078 
0079             SKGTrackerObject tracker(&document1);
0080             SKGTrackerObject trackerCopy(tracker);
0081             SKGTrackerObject trackerCopy2(static_cast<SKGObjectBase>(tracker));
0082             SKGTESTERROR(QStringLiteral("REF:setName"), tracker.setName(QStringLiteral("tracker")), true)
0083             SKGTESTERROR(QStringLiteral("REF:setComment"), tracker.setComment(QStringLiteral("comment")), true)
0084             SKGTESTERROR(QStringLiteral("REF:save"), tracker.save(), true)
0085             SKGTEST(QStringLiteral("REF:getName"), tracker.getName(), QStringLiteral("tracker"))
0086             SKGTEST(QStringLiteral("REF:getComment"), tracker.getComment(), QStringLiteral("comment"))
0087 
0088             SKGTESTBOOL("REF:isClosed", tracker.isClosed(), false)
0089             SKGTESTERROR(QStringLiteral("OPE:setClosed"), tracker.setClosed(true), true)
0090             SKGTESTBOOL("REF:isClosed", tracker.isClosed(), true)
0091             SKGTESTERROR(QStringLiteral("OPE:setClosed"), tracker.setClosed(false), true)
0092             SKGTESTBOOL("REF:isClosed", tracker.isClosed(), false)
0093 
0094             SKGTESTERROR(QStringLiteral("OPE:setTracker"), subop1.setTracker(tracker), true)
0095             SKGTESTERROR(QStringLiteral("OPE:save"), subop1.save(), true)
0096 
0097             SKGTESTERROR(QStringLiteral("OPE:setClosed"), tracker.setClosed(true), true)
0098             SKGTESTERROR(QStringLiteral("OPE:save"), tracker.save(), true)
0099 
0100             // BUG 250350 vvv
0101             SKGTESTERROR(QStringLiteral("OPE:setTracker"), subop1.setTracker(tracker), true)
0102             SKGTESTERROR(QStringLiteral("OPE:setTracker"), subop1.setTracker(tracker), true)
0103 
0104             SKGTrackerObject trackerclose(&document1);
0105             SKGTESTERROR(QStringLiteral("REF:setName"), trackerclose.setName(QStringLiteral("trackerclose")), true)
0106             SKGTESTERROR(QStringLiteral("OPE:setClosed"), trackerclose.setClosed(true), true)
0107             SKGTESTERROR(QStringLiteral("REF:save"), trackerclose.save(), true)
0108             SKGTESTERROR(QStringLiteral("OPE:setTracker"), subop1.setTracker(trackerclose), false)
0109 
0110             SKGTrackerObject trackeropen(&document1);
0111             SKGTESTERROR(QStringLiteral("REF:setName"), trackeropen.setName(QStringLiteral("trackeropen")), true)
0112             SKGTESTERROR(QStringLiteral("OPE:setClosed"), trackerclose.setClosed(true), true)
0113             SKGTESTERROR(QStringLiteral("OPE:setTracker"), subop1.setTracker(trackeropen), false)
0114             // BUG 250350 ^^^
0115 
0116             SKGTrackerObject tracker2;
0117             SKGTESTERROR(QStringLiteral("OPE:getTracker"), subop1.getTracker(tracker2), true)
0118             SKGTESTBOOL("OPE:compare", (tracker == tracker2), true)
0119 
0120             SKGTESTERROR(QStringLiteral("REF:load"), tracker.load(), true)
0121             SKGTEST(QStringLiteral("REF:getCurrentAmount"), tracker.getCurrentAmount(), 21)
0122             SKGObjectBase::SKGListSKGObjectBase oSubOperations;
0123             SKGTESTERROR(QStringLiteral("REF:getSubOperations"), tracker.getSubOperations(oSubOperations), true)
0124             SKGTEST(QStringLiteral("REF:compare"), oSubOperations.count(), 1)
0125 
0126             SKGTrackerObject track;
0127             SKGTESTERROR(QStringLiteral("REF:createTracker"), SKGTrackerObject::createTracker(&document1, QStringLiteral("track"), track, true), true)
0128 
0129             SKGTESTERROR(QStringLiteral("OPE:setClosed"), tracker.setClosed(false), true)
0130             SKGTESTERROR(QStringLiteral("REF:save"), tracker.save(), true)
0131             SKGTESTERROR(QStringLiteral("REF:merge"), track.merge(tracker), true)
0132 
0133             SKGTrackerObject trackBlank;
0134             SKGTESTERROR(QStringLiteral("REF:createTracker"), SKGTrackerObject::createTracker(&document1, QLatin1String(""), trackBlank, true), true)
0135         }
0136     }
0137 
0138 
0139     // End test
0140     SKGENDTEST()
0141 }