Add ASYNC_ASSERT_ICON_IS_EQUAL command to SocketApi
authorDominik Schmidt <dev@dominik-schmidt.de>
Wed, 5 Jun 2019 19:04:40 +0000 (21:04 +0200)
committerKevin Ottens <kevin.ottens@nextcloud.com>
Tue, 15 Dec 2020 09:58:57 +0000 (10:58 +0100)
src/gui/socketapi.cpp
src/gui/socketapi.h

index b72688fa30f321c90b4d128ce3c320c8c16ce2cd..f33727f463083bdc25e8cf3cb21f4f2f042967a3 100644 (file)
@@ -1305,6 +1305,51 @@ void SocketApi::command_ASYNC_TRIGGER_MENU_ACTION(const QSharedPointer<SocketApi
 
     job->reject("Action not found");
 }
+
+void SocketApi::command_ASYNC_ASSERT_ICON_IS_EQUAL(const QSharedPointer<SocketApiJob> &job)
+{
+    auto widget = findWidget(job->arguments()[QLatin1String("queryString")].toString());
+    if (!widget) {
+        QString message("Widget not found: 37: ");
+        message.append(job->arguments()["objectName"].toString());
+        job->reject(message);
+        return;
+    }
+
+    auto propertyName = job->arguments()[QLatin1String("propertyPath")].toString();
+
+    auto segments = propertyName.split('.');
+
+    QObject* currentObject = widget;
+    QIcon value;
+    for(int i = 0;i<segments.count(); i++) {
+        auto segment = segments.at(i);
+        auto var = currentObject->property(segment.toUtf8().constData());
+
+        if(var.canConvert<QIcon>()) {
+            var.convert(QMetaType::QIcon);
+            value = var.value<QIcon>();
+
+            DEBUG << "VALUE: " << value;
+            break;
+        }
+
+        auto tmpObject = var.value<QObject*>();
+        if(tmpObject) {
+            currentObject = tmpObject;
+        } else {
+            DEBUG << "HUH not found .. what do";
+        }
+    }
+
+    auto iconName = job->arguments()[QLatin1String("iconName")].toString();
+    if (value.name() ==  iconName) {
+        job->resolve();
+    } else {
+        job->reject("iconName " + iconName + " does not match: " + value.name());
+    }
+
+}
 #endif
 
 QString SocketApi::buildRegisterPathMessage(const QString &path)
index d24999019aad2a17b034365e8c7f9bce5d9a8116..47aaef550fc0006a7d8d6212025d2b72441bfbe8 100644 (file)
@@ -150,6 +150,7 @@ private:
     DirectEditor* getDirectEditorForLocalFile(const QString &localFile);
 
 #if GUI_TESTING
+    Q_INVOKABLE void command_ASYNC_ASSERT_ICON_IS_EQUAL(const QSharedPointer<SocketApiJob> &job);
     Q_INVOKABLE void command_ASYNC_LIST_WIDGETS(const QSharedPointer<SocketApiJob> &job);
     Q_INVOKABLE void command_ASYNC_INVOKE_WIDGET_METHOD(const QSharedPointer<SocketApiJob> &job);
     Q_INVOKABLE void command_ASYNC_GET_WIDGET_PROPERTY(const QSharedPointer<SocketApiJob> &job);