File indexing completed on 2024-12-01 04:35:22

0001 /*
0002    SPDX-FileCopyrightText: 2020 Olivier de Gaalon <olivier.jg@gmail.com>
0003 
0004    SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006 
0007 #include "accountschannelsmodeltest.h"
0008 
0009 #include "accountmanager.h"
0010 #include "model/accountschannelsmodel.h"
0011 #include "rocketchataccount.h"
0012 #include "ruqola.h"
0013 
0014 #include <QAbstractItemModelTester>
0015 #include <QStandardPaths>
0016 #include <QTest>
0017 
0018 QTEST_GUILESS_MAIN(AccountsChannelsModelTest)
0019 
0020 AccountsChannelsModelTest::AccountsChannelsModelTest(QObject *parent)
0021     : QObject(parent)
0022 {
0023 }
0024 
0025 void AccountsChannelsModelTest::initTestCase()
0026 {
0027     QStandardPaths::setTestModeEnabled(true);
0028 }
0029 
0030 void AccountsChannelsModelTest::accountsAndChannels()
0031 {
0032     AccountsChannelsModel model;
0033     QAbstractItemModelTester tester(&model, QAbstractItemModelTester::FailureReportingMode::QtTest);
0034 
0035     QCOMPARE(model.rowCount(), 1); // Ruqola creates one account by default
0036     QCOMPARE(model.data(model.index(1, 0)).toString(), QString());
0037     QCOMPARE(model.rowCount(model.index(1, 0)), 0);
0038 
0039     const auto newAcctName = QStringLiteral("Test Account");
0040     const auto acct = new RocketChatAccount;
0041     Ruqola::self()->accountManager()->addAccount(acct);
0042     const auto newAcctIndex = model.index(1, 0);
0043     QCOMPARE(model.rowCount(), 2);
0044     QVERIFY(!model.hasChildren(newAcctIndex));
0045     QCOMPARE(model.data(newAcctIndex).toString(), QString());
0046     acct->setAccountName(newAcctName);
0047     QCOMPARE(model.data(newAcctIndex).toString(), newAcctName);
0048 
0049     Ruqola::self()->setCurrentAccount(newAcctName);
0050 
0051     const auto newRoomId = QStringLiteral("RoomId");
0052     const auto newRoomName = QStringLiteral("Room Name");
0053     acct->roomModel()->addRoom(newRoomId, newRoomName);
0054     QCOMPARE(model.rowCount(newAcctIndex), 1);
0055 
0056     const auto newRoomIndex = model.index(0, 0, newAcctIndex);
0057     QVERIFY(!model.hasChildren(newRoomIndex));
0058     QCOMPARE(model.data(newRoomIndex).toString(), newRoomName);
0059 
0060     // TODO: RoomsModel currently has no API for removing rooms
0061 
0062     Ruqola::self()->accountManager()->removeAccount(newAcctName);
0063     QCOMPARE(model.rowCount(), 1); // Only the default account remains
0064 }
0065 
0066 #include "moc_accountschannelsmodeltest.cpp"