diff options
author | Marco Bubke <marco.bubke@qt.io> | 2020-09-01 16:36:56 +0200 |
---|---|---|
committer | Marco Bubke <marco.bubke@qt.io> | 2020-09-16 08:37:53 +0000 |
commit | 7c8847333b6e0dab509e1e06006d133ff773c4bf (patch) | |
tree | df4b37e0c117a519d7f08360545fdcc8391f095d /tests | |
parent | af88afe943fef260f59c530313d2cef8247ca601 (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.h | 2 | ||||
-rw-r--r-- | tests/unit/unittest/listmodeleditor-test.cpp | 57 |
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 |