Move the remaining functionality of ChatDocumentHandler to ChatTextItemHelper or split into own objects
This commit is contained in:
@@ -122,7 +122,7 @@ endmacro()
|
||||
|
||||
add_executable(qmltest qmltest.cpp
|
||||
chatmarkdownhelpertestwrapper.h
|
||||
qmltextitemwrappertestwrapper.h
|
||||
chattextitemhelpertestwrapper.h
|
||||
)
|
||||
qt_add_qml_module(qmltest URI NeoChatTestUtils)
|
||||
|
||||
@@ -135,7 +135,6 @@ target_link_libraries(qmltest
|
||||
)
|
||||
|
||||
add_qml_tests(
|
||||
chatdocumenthelpertest.qml
|
||||
chattextitemhelpertest.qml
|
||||
chatmarkdownhelpertest.qml
|
||||
qmltextitemwrappertest.qml
|
||||
)
|
||||
|
||||
@@ -1,32 +0,0 @@
|
||||
// SPDX-FileCopyrightText: 2024 Carl Schwan <carl@carlschwan.eu>
|
||||
// SPDX-License-Identifier: LGPL-2.0-or-later
|
||||
|
||||
import QtQuick
|
||||
import QtTest
|
||||
|
||||
import org.kde.neochat.libneochat as LibNeoChat
|
||||
|
||||
TestCase {
|
||||
name: "ChatDocumentHandlerTest"
|
||||
|
||||
LibNeoChat.ChatDocumentHandler {
|
||||
id: documentHandler
|
||||
}
|
||||
|
||||
TextEdit {
|
||||
id: textEdit
|
||||
}
|
||||
|
||||
function test_empty(): void {
|
||||
compare(documentHandler.type, LibNeoChat.ChatBarType.None);
|
||||
compare(documentHandler.room, null);
|
||||
compare(documentHandler.textItem, null);
|
||||
compare(documentHandler.atFirstLine, false);
|
||||
compare(documentHandler.atLastLine, false);
|
||||
compare(documentHandler.bold, false);
|
||||
compare(documentHandler.italic, false);
|
||||
compare(documentHandler.underline, false);
|
||||
compare(documentHandler.strikethrough, false);
|
||||
compare(documentHandler.style, 0);
|
||||
}
|
||||
}
|
||||
@@ -9,8 +9,8 @@
|
||||
#include <qtextcursor.h>
|
||||
|
||||
#include "chatmarkdownhelper.h"
|
||||
#include "chattextitemhelper.h"
|
||||
#include "enums/richformat.h"
|
||||
#include "qmltextitemwrapper.h"
|
||||
|
||||
class ChatMarkdownHelperTestWrapper : public QObject
|
||||
{
|
||||
@@ -18,7 +18,7 @@ class ChatMarkdownHelperTestWrapper : public QObject
|
||||
QML_ELEMENT
|
||||
|
||||
/**
|
||||
* @brief The QML text Item the ChatDocumentHandler is handling.
|
||||
* @brief The QML text Item the ChatMerkdownHelper is handling.
|
||||
*/
|
||||
Q_PROPERTY(QQuickItem *textItem READ textItem WRITE setTextItem NOTIFY textItemChanged)
|
||||
|
||||
@@ -26,7 +26,7 @@ public:
|
||||
explicit ChatMarkdownHelperTestWrapper(QObject *parent = nullptr)
|
||||
: QObject(parent)
|
||||
, m_chatMarkdownHelper(new ChatMarkdownHelper(this))
|
||||
, m_textItem(new QmlTextItemWrapper(this))
|
||||
, m_textItem(new ChatTextItemHelper(this))
|
||||
{
|
||||
connect(m_chatMarkdownHelper, &ChatMarkdownHelper::textItemChanged, this, &ChatMarkdownHelperTestWrapper::textItemChanged);
|
||||
connect(m_chatMarkdownHelper, &ChatMarkdownHelper::unhandledBlockFormat, this, &ChatMarkdownHelperTestWrapper::unhandledBlockFormat);
|
||||
@@ -38,7 +38,7 @@ public:
|
||||
}
|
||||
void setTextItem(QQuickItem *textItem)
|
||||
{
|
||||
auto textItemWrapper = new QmlTextItemWrapper(this);
|
||||
auto textItemWrapper = new ChatTextItemHelper(this);
|
||||
textItemWrapper->setTextItem(textItem);
|
||||
m_chatMarkdownHelper->setTextItem(textItemWrapper);
|
||||
m_textItem->setTextItem(textItem);
|
||||
@@ -82,5 +82,5 @@ Q_SIGNALS:
|
||||
|
||||
private:
|
||||
QPointer<ChatMarkdownHelper> m_chatMarkdownHelper;
|
||||
QPointer<QmlTextItemWrapper> m_textItem;
|
||||
QPointer<ChatTextItemHelper> m_textItem;
|
||||
};
|
||||
|
||||
@@ -7,7 +7,7 @@ import QtTest
|
||||
import NeoChatTestUtils
|
||||
|
||||
TestCase {
|
||||
name: "QmlTextItemWrapperTest"
|
||||
name: "ChatTextItemHelperTest"
|
||||
|
||||
TextEdit {
|
||||
id: textEdit
|
||||
@@ -17,51 +17,51 @@ TestCase {
|
||||
id: textEdit2
|
||||
}
|
||||
|
||||
QmlTextItemWrapperTestWrapper {
|
||||
id: qmlTextItemWrapper
|
||||
ChatTextItemHelperTestWrapper {
|
||||
id: chatTextItemHelper
|
||||
|
||||
textItem: textEdit
|
||||
}
|
||||
|
||||
SignalSpy {
|
||||
id: spyItem
|
||||
target: qmlTextItemWrapper
|
||||
target: chatTextItemHelper
|
||||
signalName: "textItemChanged"
|
||||
}
|
||||
|
||||
SignalSpy {
|
||||
id: spyContentsChanged
|
||||
target: qmlTextItemWrapper
|
||||
target: chatTextItemHelper
|
||||
signalName: "contentsChanged"
|
||||
}
|
||||
|
||||
SignalSpy {
|
||||
id: spyContentsChange
|
||||
target: qmlTextItemWrapper
|
||||
target: chatTextItemHelper
|
||||
signalName: "contentsChange"
|
||||
}
|
||||
|
||||
SignalSpy {
|
||||
id: spyCursor
|
||||
target: qmlTextItemWrapper
|
||||
target: chatTextItemHelper
|
||||
signalName: "cursorPositionChanged"
|
||||
}
|
||||
|
||||
function test_item(): void {
|
||||
spyItem.clear();
|
||||
compare(qmlTextItemWrapper.textItem, textEdit);
|
||||
compare(chatTextItemHelper.textItem, textEdit);
|
||||
compare(spyItem.count, 0);
|
||||
qmlTextItemWrapper.textItem = textEdit2;
|
||||
compare(qmlTextItemWrapper.textItem, textEdit2);
|
||||
chatTextItemHelper.textItem = textEdit2;
|
||||
compare(chatTextItemHelper.textItem, textEdit2);
|
||||
compare(spyItem.count, 1);
|
||||
qmlTextItemWrapper.textItem = textEdit;
|
||||
compare(qmlTextItemWrapper.textItem, textEdit);
|
||||
chatTextItemHelper.textItem = textEdit;
|
||||
compare(chatTextItemHelper.textItem, textEdit);
|
||||
compare(spyItem.count, 2);
|
||||
}
|
||||
|
||||
function test_document(): void {
|
||||
// We can't get to the QTextDocument from QML so we have to use a helper function.
|
||||
compare(qmlTextItemWrapper.compareDocuments(textEdit.textDocument), true);
|
||||
compare(chatTextItemHelper.compareDocuments(textEdit.textDocument), true);
|
||||
}
|
||||
|
||||
function test_cursor(): void {
|
||||
@@ -69,8 +69,8 @@ TestCase {
|
||||
spyContentsChanged.clear();
|
||||
spyCursor.clear();
|
||||
// We can't get to the QTextCursor from QML so we have to use a helper function.
|
||||
compare(qmlTextItemWrapper.compareCursor(textEdit.cursorPosition, textEdit.selectionStart, textEdit.selectionEnd), true);
|
||||
compare(textEdit.cursorPosition, qmlTextItemWrapper.cursorPosition());
|
||||
compare(chatTextItemHelper.compareCursor(textEdit.cursorPosition, textEdit.selectionStart, textEdit.selectionEnd), true);
|
||||
compare(textEdit.cursorPosition, chatTextItemHelper.cursorPosition());
|
||||
textEdit.insert(0, "test text")
|
||||
compare(spyContentsChange.count, 1);
|
||||
compare(spyContentsChange.signalArguments[0][0], 0);
|
||||
@@ -78,13 +78,13 @@ TestCase {
|
||||
compare(spyContentsChange.signalArguments[0][2], 9);
|
||||
compare(spyContentsChanged.count, 1);
|
||||
compare(spyCursor.count, 1);
|
||||
compare(qmlTextItemWrapper.compareCursor(textEdit.cursorPosition, textEdit.selectionStart, textEdit.selectionEnd), true);
|
||||
compare(textEdit.cursorPosition, qmlTextItemWrapper.cursorPosition());
|
||||
compare(chatTextItemHelper.compareCursor(textEdit.cursorPosition, textEdit.selectionStart, textEdit.selectionEnd), true);
|
||||
compare(textEdit.cursorPosition, chatTextItemHelper.cursorPosition());
|
||||
textEdit.selectAll();
|
||||
compare(spyContentsChanged.count, 1);
|
||||
compare(spyCursor.count, 1);
|
||||
compare(qmlTextItemWrapper.compareCursor(textEdit.cursorPosition, textEdit.selectionStart, textEdit.selectionEnd), true);
|
||||
compare(textEdit.cursorPosition, qmlTextItemWrapper.cursorPosition());
|
||||
compare(chatTextItemHelper.compareCursor(textEdit.cursorPosition, textEdit.selectionStart, textEdit.selectionEnd), true);
|
||||
compare(textEdit.cursorPosition, chatTextItemHelper.cursorPosition());
|
||||
textEdit.clear();
|
||||
compare(spyContentsChange.count, 2);
|
||||
compare(spyContentsChange.signalArguments[1][0], 0);
|
||||
@@ -100,18 +100,18 @@ TestCase {
|
||||
textEdit.insert(0, "test text");
|
||||
compare(textEdit.cursorPosition, 9);
|
||||
compare(spyCursor.count, 1);
|
||||
qmlTextItemWrapper.setCursorPosition(5);
|
||||
chatTextItemHelper.setCursorPosition(5);
|
||||
compare(textEdit.cursorPosition, 5);
|
||||
compare(spyCursor.count, 2);
|
||||
qmlTextItemWrapper.setCursorPosition(1);
|
||||
chatTextItemHelper.setCursorPosition(1);
|
||||
compare(textEdit.cursorPosition, 1);
|
||||
compare(spyCursor.count, 3);
|
||||
|
||||
textEdit.cursorVisible = false;
|
||||
compare(textEdit.cursorVisible, false);
|
||||
qmlTextItemWrapper.setCursorVisible(true);
|
||||
chatTextItemHelper.setCursorVisible(true);
|
||||
compare(textEdit.cursorVisible, true);
|
||||
qmlTextItemWrapper.setCursorVisible(false);
|
||||
chatTextItemHelper.setCursorVisible(false);
|
||||
compare(textEdit.cursorVisible, false);
|
||||
|
||||
textEdit.clear();
|
||||
@@ -121,7 +121,7 @@ TestCase {
|
||||
function test_forceActiveFocus(): void {
|
||||
textEdit2.forceActiveFocus();
|
||||
compare(textEdit.activeFocus, false);
|
||||
qmlTextItemWrapper.forceActiveFocus();
|
||||
chatTextItemHelper.forceActiveFocus();
|
||||
compare(textEdit.activeFocus, true);
|
||||
}
|
||||
}
|
||||
@@ -8,28 +8,28 @@
|
||||
#include <QQuickTextDocument>
|
||||
#include <QTextCursor>
|
||||
|
||||
#include "qmltextitemwrapper.h"
|
||||
#include "chattextitemhelper.h"
|
||||
|
||||
class QmlTextItemWrapperTestWrapper : public QObject
|
||||
class ChatTextItemHelperTestWrapper : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
QML_ELEMENT
|
||||
|
||||
/**
|
||||
* @brief The QML text Item the ChatDocumentHandler is handling.
|
||||
* @brief The QML text Item the TextItemHelper is handling.
|
||||
*/
|
||||
Q_PROPERTY(QQuickItem *textItem READ textItem WRITE setTextItem NOTIFY textItemChanged)
|
||||
|
||||
public:
|
||||
explicit QmlTextItemWrapperTestWrapper(QObject *parent = nullptr)
|
||||
explicit ChatTextItemHelperTestWrapper(QObject *parent = nullptr)
|
||||
: QObject(parent)
|
||||
, m_textItemWrapper(new QmlTextItemWrapper(this))
|
||||
, m_textItemWrapper(new ChatTextItemHelper(this))
|
||||
{
|
||||
Q_ASSERT(m_textItemWrapper);
|
||||
connect(m_textItemWrapper, &QmlTextItemWrapper::textItemChanged, this, &QmlTextItemWrapperTestWrapper::textItemChanged);
|
||||
connect(m_textItemWrapper, &QmlTextItemWrapper::contentsChange, this, &QmlTextItemWrapperTestWrapper::contentsChange);
|
||||
connect(m_textItemWrapper, &QmlTextItemWrapper::contentsChanged, this, &QmlTextItemWrapperTestWrapper::contentsChanged);
|
||||
connect(m_textItemWrapper, &QmlTextItemWrapper::cursorPositionChanged, this, &QmlTextItemWrapperTestWrapper::cursorPositionChanged);
|
||||
connect(m_textItemWrapper, &ChatTextItemHelper::textItemChanged, this, &ChatTextItemHelperTestWrapper::textItemChanged);
|
||||
connect(m_textItemWrapper, &ChatTextItemHelper::contentsChange, this, &ChatTextItemHelperTestWrapper::contentsChange);
|
||||
connect(m_textItemWrapper, &ChatTextItemHelper::contentsChanged, this, &ChatTextItemHelperTestWrapper::contentsChanged);
|
||||
connect(m_textItemWrapper, &ChatTextItemHelper::cursorPositionChanged, this, &ChatTextItemHelperTestWrapper::cursorPositionChanged);
|
||||
}
|
||||
|
||||
QQuickItem *textItem() const
|
||||
@@ -85,5 +85,5 @@ Q_SIGNALS:
|
||||
void cursorPositionChanged();
|
||||
|
||||
private:
|
||||
QPointer<QmlTextItemWrapper> m_textItemWrapper;
|
||||
QPointer<ChatTextItemHelper> m_textItemWrapper;
|
||||
};
|
||||
Reference in New Issue
Block a user