File indexing completed on 2024-06-09 04:57:47

0001 /*
0002    SPDX-FileCopyrightText: 2023-2024 Laurent Montel <montel.org>
0003 
0004    SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006 
0007 #include "globaldatabasetest.h"
0008 #include "localdatabase/globaldatabase.h"
0009 #include <QStandardPaths>
0010 #include <QTest>
0011 QTEST_GUILESS_MAIN(GlobalDatabaseTest)
0012 static QString accountName()
0013 {
0014     return QStringLiteral("myAccount");
0015 }
0016 
0017 static QString roomName()
0018 {
0019     return QStringLiteral("myRoom");
0020 }
0021 static QString roomNameOther()
0022 {
0023     return QStringLiteral("myOtherRoom");
0024 }
0025 
0026 enum class Fields {
0027     Identifier,
0028     TimeStamp,
0029 }; // in the same order as the table
0030 
0031 GlobalDatabaseTest::GlobalDatabaseTest(QObject *parent)
0032     : QObject{parent}
0033 {
0034 }
0035 
0036 void GlobalDatabaseTest::initTestCase()
0037 {
0038     QStandardPaths::setTestModeEnabled(true);
0039 
0040     // Clean up after previous runs
0041     GlobalDatabase globalDataBase;
0042     QFile::remove(globalDataBase.dbFileName(accountName()));
0043 }
0044 
0045 void GlobalDatabaseTest::shouldStoreIdentifier()
0046 {
0047     // GIVEN
0048     GlobalDatabase globalDataBase;
0049     const int roomNameValue = 55;
0050     globalDataBase.insertOrReplaceTimeStamp(accountName(), roomName(), roomNameValue, GlobalDatabase::TimeStampType::MessageTimeStamp);
0051     const int roomNameOtherValue = 12;
0052     globalDataBase.insertOrReplaceTimeStamp(accountName(), roomNameOther(), roomNameOtherValue, GlobalDatabase::TimeStampType::MessageTimeStamp);
0053 
0054     QCOMPARE(globalDataBase.timeStamp(accountName(), roomName(), GlobalDatabase::TimeStampType::MessageTimeStamp), roomNameValue);
0055 
0056     QCOMPARE(globalDataBase.timeStamp(accountName(), roomNameOther(), GlobalDatabase::TimeStampType::MessageTimeStamp), roomNameOtherValue);
0057 
0058     // -1 if timeStamp doesn't exist
0059     QCOMPARE(globalDataBase.timeStamp(accountName(), roomNameOther(), GlobalDatabase::TimeStampType::AccountTimeStamp), -1);
0060 }
0061 
0062 void GlobalDatabaseTest::shouldGenerateIdentifier()
0063 {
0064     QFETCH(QString, accountName);
0065     QFETCH(QString, roomName);
0066     QFETCH(GlobalDatabase::TimeStampType, type);
0067     QFETCH(QString, result);
0068 
0069     GlobalDatabase globalDataBase;
0070     QCOMPARE(globalDataBase.generateIdentifier(accountName, roomName, type), result);
0071 }
0072 
0073 void GlobalDatabaseTest::shouldGenerateIdentifier_data()
0074 {
0075     QTest::addColumn<QString>("accountName");
0076     QTest::addColumn<QString>("roomName");
0077     QTest::addColumn<GlobalDatabase::TimeStampType>("type");
0078     QTest::addColumn<QString>("result");
0079 
0080     QTest::addRow("empty") << QString() << QString() << GlobalDatabase::TimeStampType::MessageTimeStamp << QString();
0081     QTest::addRow("test1") << QStringLiteral("account1") << QStringLiteral("room1") << GlobalDatabase::TimeStampType::MessageTimeStamp
0082                            << QStringLiteral("messages-account1-room1");
0083     QTest::addRow("test2") << QStringLiteral("account2") << QStringLiteral("room2") << GlobalDatabase::TimeStampType::RoomTimeStamp
0084                            << QStringLiteral("rooms-account2-room2");
0085     QTest::addRow("test3") << QStringLiteral("account3") << QString() << GlobalDatabase::TimeStampType::AccountTimeStamp << QStringLiteral("account-account3");
0086 }
0087 
0088 void GlobalDatabaseTest::shouldVerifyDbFileName()
0089 {
0090     GlobalDatabase accountDataBase;
0091     QCOMPARE(accountDataBase.dbFileName(accountName()),
0092              QStandardPaths::writableLocation(QStandardPaths::AppLocalDataLocation) + QStringLiteral("/database/global/myAccount/myAccount.sqlite"));
0093 }
0094 
0095 void GlobalDatabaseTest::shouldRemoveTimeStamp()
0096 {
0097     GlobalDatabase globalDataBase;
0098     const int roomNameValue = 55;
0099     globalDataBase.insertOrReplaceTimeStamp(accountName(), roomName(), roomNameValue, GlobalDatabase::TimeStampType::MessageTimeStamp);
0100     const int roomNameOtherValue = 12;
0101     globalDataBase.insertOrReplaceTimeStamp(accountName(), roomNameOther(), roomNameOtherValue, GlobalDatabase::TimeStampType::MessageTimeStamp);
0102 
0103     QCOMPARE(globalDataBase.timeStamp(accountName(), roomName(), GlobalDatabase::TimeStampType::MessageTimeStamp), roomNameValue);
0104 
0105     QCOMPARE(globalDataBase.timeStamp(accountName(), roomNameOther(), GlobalDatabase::TimeStampType::MessageTimeStamp), roomNameOtherValue);
0106 
0107     // Remove it.
0108     globalDataBase.removeTimeStamp(accountName(), roomName(), GlobalDatabase::TimeStampType::MessageTimeStamp);
0109     QCOMPARE(globalDataBase.timeStamp(accountName(), roomName(), GlobalDatabase::TimeStampType::MessageTimeStamp), -1);
0110 
0111     // OTher still exists
0112     QCOMPARE(globalDataBase.timeStamp(accountName(), roomNameOther(), GlobalDatabase::TimeStampType::MessageTimeStamp), roomNameOtherValue);
0113 
0114     globalDataBase.removeTimeStamp(accountName(), roomNameOther(), GlobalDatabase::TimeStampType::AccountTimeStamp);
0115     QCOMPARE(globalDataBase.timeStamp(accountName(), roomNameOther(), GlobalDatabase::TimeStampType::MessageTimeStamp), roomNameOtherValue);
0116 
0117     globalDataBase.removeTimeStamp(accountName(), roomNameOther(), GlobalDatabase::TimeStampType::MessageTimeStamp);
0118     QCOMPARE(globalDataBase.timeStamp(accountName(), roomNameOther(), GlobalDatabase::TimeStampType::MessageTimeStamp), -1);
0119 
0120     // RoomTimeStamp
0121     globalDataBase.insertOrReplaceTimeStamp(accountName(), roomName(), roomNameValue, GlobalDatabase::TimeStampType::RoomTimeStamp);
0122     QCOMPARE(globalDataBase.timeStamp(accountName(), roomName(), GlobalDatabase::TimeStampType::RoomTimeStamp), roomNameValue);
0123     globalDataBase.removeTimeStamp(accountName(), roomName(), GlobalDatabase::TimeStampType::RoomTimeStamp);
0124     QCOMPARE(globalDataBase.timeStamp(accountName(), roomName(), GlobalDatabase::TimeStampType::RoomTimeStamp), -1);
0125 }
0126 
0127 #include "moc_globaldatabasetest.cpp"