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"