From 7c8847333b6e0dab509e1e06006d133ff773c4bf Mon Sep 17 00:00:00 2001 From: Marco Bubke Date: Tue, 1 Sep 2020 16:36:56 +0200 Subject: QmlDesigner: Go into components Task-nubmer: QDS-2696 Change-Id: I2f0ee71deea593da08fa4a754d783b53867473ed Reviewed-by: Michael Winkelmann Reviewed-by: Leena Miettinen Reviewed-by: Thomas Hartmann --- tests/unit/unittest/google-using-declarations.h | 2 + tests/unit/unittest/listmodeleditor-test.cpp | 57 ++++++++++++++++++++++--- 2 files changed, 52 insertions(+), 7 deletions(-) (limited to 'tests') 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; - ModelNode createElement(std::initializer_list entries) + ModelNode createElement(std::initializer_list 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 mockGoIntoComponent; std::unique_ptr designerModel{QmlDesigner::Model::create("QtQuick.Item", 1, 1)}; NiceMock 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 componentModel{ + QmlDesigner::Model::create("QtQml.Models.ListModel", 1, 1)}; + NiceMock 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 -- cgit v1.2.3