Reproduce ordinary draft loss and missing cancellation acknowledgments
This commit is contained in:
1 parent
88760510da
commit
9be3c4af48
2 files changed
+55
No files matched your search
@@ -54,6 +54,47 @@ static bool dropUrls(QWidget* target, const QList<QUrl>& urls, bool process = tr
|
||||
class FileDropTest : public QObject {
|
||||
Q_OBJECT
|
||||
private slots:
|
||||
void ordinaryTextWaitsForResultAndCanRetry() {
|
||||
InputBar bar(nullptr, nullptr); bar.setRecordingContext("/tmp", "123");
|
||||
auto* editor = bar.findChild<QTextEdit*>(); QVERIFY(editor);
|
||||
QSignalSpy sends(&bar, &InputBar::sendMessage), errors(&bar, &InputBar::attachmentRejected);
|
||||
editor->setPlainText("ordinary");
|
||||
QVERIFY(QMetaObject::invokeMethod(&bar, "onSendClicked", Qt::DirectConnection));
|
||||
QCOMPARE(sends.size(), 1); const auto request = sends[0][2].toULongLong(); QVERIFY(request);
|
||||
QCOMPARE(editor->toPlainText(), QString("ordinary"));
|
||||
QVERIFY(QMetaObject::invokeMethod(&bar, "onSendClicked", Qt::DirectConnection)); QCOMPARE(sends.size(), 1);
|
||||
bar.submissionResult(request, false); QCOMPARE(errors.size(), 1); QCOMPARE(editor->toPlainText(), QString("ordinary"));
|
||||
QVERIFY(QMetaObject::invokeMethod(&bar, "onSendClicked", Qt::DirectConnection)); QCOMPARE(sends.size(), 2);
|
||||
QVERIFY(sends[1][2].toULongLong() != request); bar.submissionResult(sends[1][2].toULongLong(), true);
|
||||
QVERIFY(editor->toPlainText().isEmpty());
|
||||
}
|
||||
|
||||
void ordinaryResultPreservesNewDraftAndContext() {
|
||||
InputBar bar(nullptr, nullptr); bar.setRecordingContext("/tmp", "123");
|
||||
auto* editor = bar.findChild<QTextEdit*>(); QVERIFY(editor); QSignalSpy sends(&bar, &InputBar::sendMessage);
|
||||
editor->setPlainText("first"); QVERIFY(QMetaObject::invokeMethod(&bar, "onSendClicked", Qt::DirectConnection));
|
||||
editor->setPlainText("second"); bar.submissionResult(sends[0][2].toULongLong(), true);
|
||||
QCOMPARE(editor->toPlainText(), QString("second"));
|
||||
QVERIFY(QMetaObject::invokeMethod(&bar, "onSendClicked", Qt::DirectConnection));
|
||||
bar.setRecordingContext("/tmp", "456"); bar.setRecordingContext("/tmp", "123");
|
||||
editor->setPlainText("returned to channel"); bar.submissionResult(sends[1][2].toULongLong(), true);
|
||||
QCOMPARE(editor->toPlainText(), QString("returned to channel"));
|
||||
}
|
||||
|
||||
void submissionIdsOutliveComposer() {
|
||||
quint64 oldRequest = 0;
|
||||
{
|
||||
InputBar bar(nullptr, nullptr); bar.setRecordingContext("/tmp", "123");
|
||||
QSignalSpy sends(&bar, &InputBar::sendMessage); bar.findChild<QTextEdit*>()->setPlainText("old");
|
||||
QVERIFY(QMetaObject::invokeMethod(&bar, "onSendClicked", Qt::DirectConnection)); oldRequest = sends[0][2].toULongLong();
|
||||
}
|
||||
InputBar bar(nullptr, nullptr); bar.setRecordingContext("/tmp", "123");
|
||||
auto* editor = bar.findChild<QTextEdit*>(); editor->setPlainText("new"); QSignalSpy sends(&bar, &InputBar::sendMessage);
|
||||
QVERIFY(QMetaObject::invokeMethod(&bar, "onSendClicked", Qt::DirectConnection));
|
||||
QVERIFY(oldRequest); QVERIFY(sends[0][2].toULongLong() != oldRequest);
|
||||
bar.submissionResult(oldRequest, true); QCOMPARE(editor->toPlainText(), QString("new"));
|
||||
}
|
||||
|
||||
void emojiSelectionInsertsCorrectTextAtCursor() {
|
||||
EmojiPanel panel;
|
||||
InputBar input(&panel, nullptr);
|
||||
|
||||
@@ -35,6 +35,7 @@ static QList<int> cpuLoads;
|
||||
static bool cpuOnGuiThread = true;
|
||||
static QStringList changedChannels;
|
||||
static QList<QByteArray> edits;
|
||||
static QList<QByteArray> submitted;
|
||||
static int readyEvents;
|
||||
|
||||
struct BoundCore {
|
||||
@@ -211,6 +212,19 @@ private slots:
|
||||
QCOMPARE(u_get_allocated_count(), before);
|
||||
}
|
||||
|
||||
void cancelledSubmissionReturnsOneFailureAndFreesRequest() {
|
||||
BoundCore core; QVERIFY(core.ua); core.attach(); submitted.clear();
|
||||
gui_bridge_set_msg_submitted_cb([](const uint8_t* data, int len) { submitted.append(QByteArray((const char*)data, len)); });
|
||||
const size_t before = u_get_allocated_count();
|
||||
auto* request = static_cast<chat_msg_submit*>(u_calloc(1, sizeof(chat_msg_submit))); QVERIFY(request);
|
||||
request->request_id = UINT64_C(0x0102030405060708);
|
||||
QCOMPARE(gui_bridge_submit_message(request), 0); gui_bridge_set_inst(nullptr);
|
||||
QCoreApplication::processEvents();
|
||||
QCOMPARE(submitted, QList<QByteArray>({QByteArray::fromHex("080706050403020100")}));
|
||||
uasync_poll(core.ua, 0); QCoreApplication::processEvents(); QCOMPARE(submitted.size(), 1);
|
||||
QCOMPARE(u_get_allocated_count(), before); gui_bridge_set_msg_submitted_cb(nullptr);
|
||||
}
|
||||
|
||||
void invalidPostArgumentsDoNotTurnIntoEmptyEvents() {
|
||||
readyEvents = 0;
|
||||
gui_bridge_set_db_ready_cb([] { readyEvents++; });
|
||||
|
||||
Reference in new issue
Block a user