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"