aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorMarco Bubke <marco.bubke@qt.io>2020-09-01 16:36:56 +0200
committerMarco Bubke <marco.bubke@qt.io>2020-09-16 08:37:53 +0000
commit7c8847333b6e0dab509e1e06006d133ff773c4bf (patch)
treedf4b37e0c117a519d7f08360545fdcc8391f095d /tests
parentaf88afe943fef260f59c530313d2cef8247ca601 (diff)
QmlDesigner: Go into components
Task-nubmer: QDS-2696 Change-Id: I2f0ee71deea593da08fa4a754d783b53867473ed Reviewed-by: Michael Winkelmann <michael.winkelmann@qt.io> Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io> Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
Diffstat (limited to 'tests')
-rw-r--r--tests/unit/unittest/google-using-declarations.h2
-rw-r--r--tests/unit/unittest/listmodeleditor-test.cpp57
2 files changed, 52 insertions, 7 deletions
diff --git a/tests/unit/unittest/google-using-declarations.h b/tests/unit/unittest/google-using-declarations.h
index de52483403..99514fe9b4 100644
--- a/tests/unit/unittest/google-using-declarations.h
+++ b/tests/unit/unittest/google-using-declarations.h
@@ -63,6 +63,7 @@ using testing::Pair;
using testing::PrintToString;
using testing::Property;
using testing::Return;
+using testing::ReturnArg;
using testing::ReturnRef;
using testing::SafeMatcherCast;
using testing::SaveArg;
@@ -74,3 +75,4 @@ using testing::Throw;
using testing::TypedEq;
using testing::UnorderedElementsAre;
using testing::VariantWith;
+using testing::WithArg;
diff --git a/tests/unit/unittest/listmodeleditor-test.cpp b/tests/unit/unittest/listmodeleditor-test.cpp
index bdd5e9c070..1bfa00646a 100644
--- a/tests/unit/unittest/listmodeleditor-test.cpp
+++ b/tests/unit/unittest/listmodeleditor-test.cpp
@@ -99,17 +99,31 @@ public:
listViewNode = mockView.createModelNode("QtQuick.ListView", 2, 15);
listModelNode = mockView.createModelNode("QtQml.Models.ListModel", 2, 15);
mockView.rootModelNode().defaultNodeListProperty().reparentHere(listModelNode);
- element1 = createElement({{"name", "foo"}, {"value", 1}, {"value2", 42}});
- element2 = createElement({{"value", 4}, {"name", "bar"}, {"image", "pic.png"}});
- element3 = createElement({{"image", "pic.png"}, {"name", "poo"}, {"value", 111}});
+ element1 = createElement({{"name", "foo"}, {"value", 1}, {"value2", 42}},
+ mockView,
+ listModelNode);
+ element2 = createElement({{"value", 4}, {"name", "bar"}, {"image", "pic.png"}},
+ mockView,
+ listModelNode);
+ element3 = createElement({{"image", "pic.png"}, {"name", "poo"}, {"value", 111}},
+ mockView,
+ listModelNode);
+
+ componentModel->attachView(&mockComponentView);
+
+ componentElement = createElement({{"name", "com"}, {"value", 11}, {"value2", 55}},
+ mockComponentView,
+ mockComponentView.rootModelNode());
+
+ ON_CALL(mockGoIntoComponent, Call(_)).WillByDefault([](ModelNode node) { return node; });
}
using Entry = std::pair<QmlDesigner::PropertyName, QVariant>;
- ModelNode createElement(std::initializer_list<Entry> entries)
+ ModelNode createElement(std::initializer_list<Entry> entries, AbstractView &view, ModelNode listModel)
{
- auto element = mockView.createModelNode("QtQml.Models/ListElement", 2, 15);
- listModelNode.defaultNodeListProperty().reparentHere(element);
+ auto element = view.createModelNode("QtQml.Models/ListElement", 2, 15);
+ listModel.defaultNodeListProperty().reparentHere(element);
for (const auto &entry : entries) {
element.variantProperty(entry.first).setValue(entry.second);
@@ -184,17 +198,23 @@ public:
}
protected:
+ MockFunction<ModelNode(const ModelNode &)> mockGoIntoComponent;
std::unique_ptr<QmlDesigner::Model> designerModel{QmlDesigner::Model::create("QtQuick.Item", 1, 1)};
NiceMock<MockListModelEditorView> mockView;
QmlDesigner::ListModelEditorModel model{
[&] { return mockView.createModelNode("QtQml.Models.ListModel", 2, 15); },
- [&] { return mockView.createModelNode("QtQml.Models.ListElement", 2, 15); }};
+ [&] { return mockView.createModelNode("QtQml.Models.ListElement", 2, 15); },
+ mockGoIntoComponent.AsStdFunction()};
ModelNode listViewNode;
ModelNode listModelNode;
ModelNode emptyListModelNode;
ModelNode element1;
ModelNode element2;
ModelNode element3;
+ std::unique_ptr<QmlDesigner::Model> componentModel{
+ QmlDesigner::Model::create("QtQml.Models.ListModel", 1, 1)};
+ NiceMock<MockListModelEditorView> mockComponentView;
+ ModelNode componentElement;
};
TEST_F(ListModelEditor, CreatePropertyNameSet)
@@ -1376,4 +1396,27 @@ TEST_F(ListModelEditor, AddFalseAsStringProperties)
IsVariantProperty("value", 111))));
}
+TEST_F(ListModelEditor, GoIntoComponentForBinding)
+{
+ EXPECT_CALL(mockGoIntoComponent, Call(Eq(listModelNode)))
+ .WillRepeatedly(Return(mockComponentView.rootModelNode()));
+ listModelNode.setIdWithoutRefactoring("listModel");
+ listViewNode.bindingProperty("model").setExpression("listModel");
+
+ model.setListView(listViewNode);
+
+ ASSERT_THAT(displayValues(), ElementsAre(ElementsAre("com", 11, 55)));
+}
+
+TEST_F(ListModelEditor, GoIntoComponentForModelNode)
+{
+ EXPECT_CALL(mockGoIntoComponent, Call(Eq(listModelNode)))
+ .WillRepeatedly(Return(mockComponentView.rootModelNode()));
+ listViewNode.nodeProperty("model").reparentHere(listModelNode);
+
+ model.setListView(listViewNode);
+
+ ASSERT_THAT(displayValues(), ElementsAre(ElementsAre("com", 11, 55)));
+}
+
} // namespace