diff --git a/tools/chatgui/tests/test_file_drop.cpp b/tools/chatgui/tests/test_file_drop.cpp index 1f89fa35..2dcc56d4 100644 --- a/tools/chatgui/tests/test_file_drop.cpp +++ b/tools/chatgui/tests/test_file_drop.cpp @@ -181,6 +181,30 @@ private slots: QVERIFY(!encrypt->isVisible()); QVERIFY(!encrypt->isChecked()); } + void editDraftSaveCancelAndFailure() { + InputBar bar(nullptr, nullptr); bar.resize(600, 160); bar.show(); bar.setRecordingContext("/tmp", "123"); + auto* editor = bar.findChild(); QVERIFY(editor); + const QByteArray id(32, 'm'), reply(32, 'r'); + QSignalSpy edits(&bar, &InputBar::saveEdit), sends(&bar, &InputBar::sendMessage), errors(&bar, &InputBar::attachmentRejected); + bar.setReply(reply, "Alice", "original"); editor->setPlainText("draft"); + bar.editMessage(id, 2, "old"); QCOMPARE(editor->toPlainText(), QString("old")); + QTest::keyClick(editor, Qt::Key_Escape); QCOMPARE(editor->toPlainText(), QString("draft")); + bar.editMessage(id, 2, "old"); editor->setPlainText("new"); QTest::keyClick(editor, Qt::Key_Return); + QCOMPARE(edits.size(), 1); QVERIFY(sends.isEmpty()); + QCOMPARE(edits[0][0].toString(), QString("123")); QCOMPARE(edits[0][1].toByteArray(), id); + QCOMPARE(edits[0][2].toULongLong(), quint64(2)); QCOMPARE(edits[0][3].toString(), QString("new")); + QVERIFY(editor->isReadOnly()); const auto request = edits[0][4].toULongLong(); QVERIFY(request); + QTest::keyClick(editor, Qt::Key_Return); QCOMPARE(edits.size(), 1); + bar.submissionResult(request, false); QCOMPARE(errors.size(), 1); QVERIFY(!editor->isReadOnly()); + QCOMPARE(editor->toPlainText(), QString("new")); QTest::keyClick(editor, Qt::Key_Return); QCOMPARE(edits.size(), 2); + bar.submissionResult(edits[1][4].toULongLong(), true); QCOMPARE(editor->toPlainText(), QString("draft")); + QTest::keyClick(editor, Qt::Key_Return); QCOMPARE(sends.size(), 1); QCOMPARE(sends[0][1].toByteArray(), reply); + bar.submissionResult(sends[0][2].toULongLong(), true); + editor->setPlainText("another draft"); bar.editMessage(id, 3, "edit"); QTest::keyClick(editor, Qt::Key_Return); + bar.setRecordingContext("/tmp", "456"); editor->setPlainText("new channel draft"); + bar.submissionResult(edits.last()[4].toULongLong(), true); QCOMPARE(editor->toPlainText(), QString("new channel draft")); + } + void replyDraftAndLateResults() { InputBar bar(nullptr, nullptr); bar.resize(600, 160); bar.show(); bar.setRecordingContext("/tmp", "123"); auto* editor = bar.findChild(); QVERIFY(editor);