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

0001 /*
0002    SPDX-FileCopyrightText: 2019-2024 Laurent Montel <montel@kde.org>
0003 
0004    SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006 
0007 #include "discussionsmodeltest.h"
0008 #include "discussions/discussions.h"
0009 #include "model/discussionsmodel.h"
0010 #include "test_model_helpers.h"
0011 #include <QTest>
0012 QTEST_GUILESS_MAIN(DiscussionsModelTest)
0013 DiscussionsModelTest::DiscussionsModelTest(QObject *parent)
0014     : QObject(parent)
0015 {
0016 }
0017 
0018 void DiscussionsModelTest::shouldHaveDefaultValues()
0019 {
0020     DiscussionsModel model;
0021     QVERIFY(!model.loadMoreDiscussionsInProgress());
0022 }
0023 
0024 void DiscussionsModelTest::shouldAssignValues()
0025 {
0026     DiscussionsModel w;
0027     QSignalSpy rowInsertedSpy(&w, &DiscussionsModel::rowsInserted);
0028     QSignalSpy rowABTInserted(&w, &DiscussionsModel::rowsAboutToBeInserted);
0029     QSignalSpy modelAboutToBeResetSpy(&w, &DiscussionsModel::modelAboutToBeReset);
0030 
0031     Discussions discussionList;
0032     for (int i = 0; i < 10; ++i) {
0033         Discussion c;
0034         c.setDescription(QStringLiteral("roomid%1").arg(i));
0035         c.setNumberMessages(i);
0036         c.setParentRoomId(QStringLiteral("online"));
0037         discussionList.append(std::move(c));
0038     }
0039     w.setDiscussions(discussionList);
0040     QCOMPARE(w.rowCount(), 10);
0041     QCOMPARE(rowInsertedSpy.count(), 1);
0042     QCOMPARE(rowABTInserted.count(), 1);
0043     QCOMPARE(modelAboutToBeResetSpy.count(), 0);
0044     QCOMPARE(TestModelHelpers::rowSpyToText(rowInsertedSpy), QStringLiteral("0,9"));
0045     QCOMPARE(TestModelHelpers::rowSpyToText(rowABTInserted), QStringLiteral("0,9"));
0046 
0047     // add Empty list
0048     discussionList.clear();
0049     rowInsertedSpy.clear();
0050     rowABTInserted.clear();
0051     modelAboutToBeResetSpy.clear();
0052 
0053     w.setDiscussions(discussionList);
0054 
0055     QCOMPARE(w.rowCount(), 0);
0056     QCOMPARE(rowInsertedSpy.count(), 0);
0057     QCOMPARE(rowABTInserted.count(), 0);
0058     QCOMPARE(modelAboutToBeResetSpy.count(), 1);
0059 
0060     // Add same element
0061     rowInsertedSpy.clear();
0062     rowABTInserted.clear();
0063     modelAboutToBeResetSpy.clear();
0064 
0065     w.setDiscussions(discussionList);
0066 
0067     QCOMPARE(w.rowCount(), 0);
0068     QCOMPARE(rowInsertedSpy.count(), 0);
0069     QCOMPARE(rowABTInserted.count(), 0);
0070     QCOMPARE(modelAboutToBeResetSpy.count(), 0);
0071     QCOMPARE(TestModelHelpers::rowSpyToText(rowInsertedSpy), QString());
0072     QCOMPARE(TestModelHelpers::rowSpyToText(rowABTInserted), QString());
0073 
0074     // Test add same number of element.
0075     discussionList.clear();
0076     rowInsertedSpy.clear();
0077     rowABTInserted.clear();
0078     modelAboutToBeResetSpy.clear();
0079 
0080     for (int i = 0; i < 5; ++i) {
0081         Discussion c;
0082         c.setDescription(QStringLiteral("roomid%1").arg(i));
0083         c.setNumberMessages(i);
0084         c.setParentRoomId(QStringLiteral("online"));
0085         discussionList.append(std::move(c));
0086     }
0087     w.setDiscussions(discussionList);
0088     QCOMPARE(w.rowCount(), 5);
0089     QCOMPARE(rowInsertedSpy.count(), 1);
0090     QCOMPARE(rowABTInserted.count(), 1);
0091     QCOMPARE(modelAboutToBeResetSpy.count(), 0);
0092     QCOMPARE(TestModelHelpers::rowSpyToText(rowInsertedSpy), QStringLiteral("0,4"));
0093     QCOMPARE(TestModelHelpers::rowSpyToText(rowABTInserted), QStringLiteral("0,4"));
0094 
0095     rowInsertedSpy.clear();
0096     rowABTInserted.clear();
0097     modelAboutToBeResetSpy.clear();
0098     w.setDiscussions(discussionList);
0099 
0100     QCOMPARE(rowInsertedSpy.count(), 1);
0101     QCOMPARE(rowABTInserted.count(), 1);
0102     QCOMPARE(modelAboutToBeResetSpy.count(), 1);
0103     QCOMPARE(TestModelHelpers::rowSpyToText(rowInsertedSpy), QStringLiteral("0,4"));
0104     QCOMPARE(TestModelHelpers::rowSpyToText(rowABTInserted), QStringLiteral("0,4"));
0105 }
0106 
0107 #include "moc_discussionsmodeltest.cpp"