File indexing completed on 2024-05-12 05:40:48

0001 #include <QTest>
0002 
0003 #include <QSignalSpy>
0004 
0005 #include "data/player.h"
0006 #include "controller/view_controller/sharednotecontroller.h"
0007 #include "model/playermodel.h"
0008 #include <QAbstractItemModelTester>
0009 #include <helper.h>
0010 #include <limits>
0011 
0012 
0013 class SharedNoteControllerTest : public QObject
0014 {
0015     Q_OBJECT
0016 public:
0017     SharedNoteControllerTest() = default;
0018 
0019 private slots:
0020     void init();
0021 
0022     void setAndGetTest();
0023 
0024 private:
0025     std::unique_ptr<SharedNoteController> m_ctrl;
0026     std::unique_ptr<PlayerModel> m_playerModel;
0027 };
0028 
0029 
0030 void SharedNoteControllerTest::init()
0031 {
0032     m_playerModel.reset(new PlayerModel);
0033     SharedNoteController::setPlayerModel(m_playerModel.get());
0034     m_ctrl.reset(new SharedNoteController);
0035 }
0036 
0037 void SharedNoteControllerTest::setAndGetTest()
0038 {
0039     QSignalSpy spy(m_ctrl.get(), &SharedNoteController::permissionChanged);
0040 
0041     auto id = Helper::randomString();
0042     m_ctrl->setLocalId(id);
0043     m_ctrl->setOwnerId(id);
0044 
0045     m_ctrl->setPermission(ParticipantModel::hidden);
0046     m_ctrl->setPermission(ParticipantModel::readOnly);
0047     m_ctrl->setPermission(ParticipantModel::readWrite);
0048 
0049     QVERIFY(!m_ctrl->localCanWrite());
0050 
0051     auto length = Helper::generate<int>(1,100);
0052     m_ctrl->setUpdateCmd(Helper::randomString(length));
0053     m_ctrl->setUpdateCmd(QString("doc:%1").arg(Helper::randomString(length)));
0054     auto cmd = QString("doc:%1 %2 %3 %4").arg(Helper::generate<int>(1,100)).arg(Helper::generate<int>(1,100)).arg(length).arg(Helper::randomString(length));
0055     m_ctrl->setUpdateCmd(cmd);
0056 
0057     QCOMPARE(m_ctrl->updateCmd(), cmd);
0058 
0059     auto text = Helper::randomString();
0060     m_ctrl->setTextUpdate(text);
0061     m_ctrl->setTextUpdate(text);
0062 
0063     m_ctrl->setText(text);
0064     m_ctrl->setText(text);
0065 
0066     QVERIFY(!m_ctrl->canRead(nullptr));
0067     QVERIFY(!m_ctrl->canWrite(nullptr));
0068 
0069     {
0070         auto model = m_ctrl->playerModel();
0071         QCOMPARE(model, m_playerModel.get());
0072     }
0073     m_ctrl->setUrl(Helper::randomUrl());
0074 
0075     // MODEL Player
0076     PlayerModel model;
0077     SharedNoteController::setPlayerModel(&model);
0078     m_ctrl.reset(new SharedNoteController(id,id));//local is owner
0079 
0080     Player* local = new Player;
0081     local->setUuid(id);
0082     model.setLocalPlayerId(id);
0083     model.addPlayer(local);
0084 
0085 
0086     Player* p2 = new Player;
0087     p2->setUuid(Helper::randomString());
0088     model.addPlayer(p2);
0089 
0090     m_ctrl->setPermission(ParticipantModel::hidden);
0091     m_ctrl->setPermission(ParticipantModel::readOnly);
0092     m_ctrl->setPermission(ParticipantModel::readWrite);
0093 
0094     m_ctrl->promoteCurrentItem(QModelIndex());
0095     m_ctrl->demoteCurrentItem(QModelIndex());
0096 }
0097 
0098 
0099 QTEST_MAIN(SharedNoteControllerTest);
0100 #include "tst_sharednotecontroller.moc"