QmlDesigner: Fix tests for changing import in model

Change-Id: Ie09f4d77da460362deb068d2358dfb311d6428be
Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io>
This commit is contained in:
Marco Bubke
2024-06-20 15:09:23 +02:00
parent 29c222ba18
commit b98a67ee9e
12 changed files with 28 additions and 18 deletions

View File

@@ -367,8 +367,10 @@ public:
class ProjectStorageMockWithQtQtuick : public ProjectStorageMock class ProjectStorageMockWithQtQtuick : public ProjectStorageMock
{ {
public: public:
ProjectStorageMockWithQtQtuick(QmlDesigner::SourceId sourceId) ProjectStorageMockWithQtQtuick(QmlDesigner::SourceId sourceId,
Utils::SmallStringView localPathModuleName)
{ {
createModule(localPathModuleName, QmlDesigner::Storage::ModuleKind::PathLibrary);
setupQtQuick(); setupQtQuick();
setupQtQuickImportedTypeNameIds(sourceId); setupQtQuickImportedTypeNameIds(sourceId);
setupCommonTypeCache(); setupCommonTypeCache();

View File

@@ -172,7 +172,7 @@ protected:
inline static QSharedPointer<const QmlJS::SimpleReaderNode> simpleReaderNode; inline static QSharedPointer<const QmlJS::SimpleReaderNode> simpleReaderNode;
NiceMock<AbstractViewMock> viewMock; NiceMock<AbstractViewMock> viewMock;
NiceMock<SourcePathCacheMockWithPaths> pathCacheMock{"/path/foo.qml"}; NiceMock<SourcePathCacheMockWithPaths> pathCacheMock{"/path/foo.qml"};
NiceMock<ProjectStorageMockWithQtQtuick> projectStorageMock{pathCacheMock.sourceId}; NiceMock<ProjectStorageMockWithQtQtuick> projectStorageMock{pathCacheMock.sourceId, "/path"};
NiceMock<ModelResourceManagementMock> resourceManagementMock; NiceMock<ModelResourceManagementMock> resourceManagementMock;
QmlDesigner::Model model{{projectStorageMock, pathCacheMock}, QmlDesigner::Model model{{projectStorageMock, pathCacheMock},
"Item", "Item",

View File

@@ -84,7 +84,7 @@ protected:
protected: protected:
QmlDesigner::SourceId sourceId = QmlDesigner::SourceId::create(10); QmlDesigner::SourceId sourceId = QmlDesigner::SourceId::create(10);
NiceMock<ProjectStorageMockWithQtQtuick> projectStorageMock{sourceId}; NiceMock<ProjectStorageMockWithQtQtuick> projectStorageMock{sourceId, "/path"};
NiceMock<PropertyComponentGeneratorMock> propertyGeneratorMock; NiceMock<PropertyComponentGeneratorMock> propertyGeneratorMock;
QmlDesigner::PropertyEditorComponentGenerator generator{propertyGeneratorMock}; QmlDesigner::PropertyEditorComponentGenerator generator{propertyGeneratorMock};
QmlDesigner::ModuleId qtQuickModuleId = projectStorageMock.createModule("QtQuick", QmlDesigner::ModuleId qtQuickModuleId = projectStorageMock.createModule("QtQuick",

View File

@@ -184,7 +184,7 @@ public:
protected: protected:
NiceMock<SourcePathCacheMockWithPaths> pathCacheMock{"/path/foo.qml"}; NiceMock<SourcePathCacheMockWithPaths> pathCacheMock{"/path/foo.qml"};
NiceMock<ProjectStorageMockWithQtQtuick> projectStorageMock{pathCacheMock.sourceId}; NiceMock<ProjectStorageMockWithQtQtuick> projectStorageMock{pathCacheMock.sourceId, "/path"};
NiceMock<MockFunction<ModelNode(const ModelNode &)>> goIntoComponentMock; NiceMock<MockFunction<ModelNode(const ModelNode &)>> goIntoComponentMock;
QmlDesigner::ModelPointer designerModel{ QmlDesigner::ModelPointer designerModel{
QmlDesigner::Model::create(QmlDesigner::ProjectStorageDependencies{projectStorageMock, QmlDesigner::Model::create(QmlDesigner::ProjectStorageDependencies{projectStorageMock,

View File

@@ -100,7 +100,7 @@ protected:
protected: protected:
NiceMock<SourcePathCacheMockWithPaths> pathCache{"/path/foo.qml"}; NiceMock<SourcePathCacheMockWithPaths> pathCache{"/path/foo.qml"};
NiceMock<ProjectStorageMockWithQtQtuick> projectStorageMock{pathCache.sourceId}; NiceMock<ProjectStorageMockWithQtQtuick> projectStorageMock{pathCache.sourceId, "/path"};
QmlDesigner::Model model{{projectStorageMock, pathCache}, QmlDesigner::Model model{{projectStorageMock, pathCache},
"Item", "Item",
{QmlDesigner::Import::createLibraryImport("QML"), {QmlDesigner::Import::createLibraryImport("QML"),

View File

@@ -42,7 +42,7 @@ protected:
protected: protected:
NiceMock<SourcePathCacheMockWithPaths> pathCache{"/path/foo.qml"}; NiceMock<SourcePathCacheMockWithPaths> pathCache{"/path/foo.qml"};
NiceMock<ProjectStorageMockWithQtQtuick> projectStorageMock{pathCache.sourceId}; NiceMock<ProjectStorageMockWithQtQtuick> projectStorageMock{pathCache.sourceId, "/path"};
QmlDesigner::Model model{{projectStorageMock, pathCache}, QmlDesigner::Model model{{projectStorageMock, pathCache},
"Item", "Item",
{QmlDesigner::Import::createLibraryImport("QML"), {QmlDesigner::Import::createLibraryImport("QML"),

View File

@@ -41,7 +41,7 @@ protected:
inline static std::unique_ptr<StaticData> staticData; inline static std::unique_ptr<StaticData> staticData;
Sqlite::Database &database = staticData->database; Sqlite::Database &database = staticData->database;
NiceMock<SourcePathCacheMockWithPaths> pathCacheMock{"/path/foo.qml"}; NiceMock<SourcePathCacheMockWithPaths> pathCacheMock{"/path/foo.qml"};
NiceMock<ProjectStorageMockWithQtQtuick> projectStorageMock{pathCacheMock.sourceId}; NiceMock<ProjectStorageMockWithQtQtuick> projectStorageMock{pathCacheMock.sourceId, "/path"};
NiceMock<ModelResourceManagementMock> resourceManagementMock; NiceMock<ModelResourceManagementMock> resourceManagementMock;
QmlDesigner::Imports imports = {QmlDesigner::Import::createLibraryImport("QtQuick")}; QmlDesigner::Imports imports = {QmlDesigner::Import::createLibraryImport("QtQuick")};
QmlDesigner::Model model{{projectStorageMock, pathCacheMock}, QmlDesigner::Model model{{projectStorageMock, pathCacheMock},

View File

@@ -117,7 +117,7 @@ protected:
protected: protected:
NiceMock<SourcePathCacheMockWithPaths> pathCacheMock{"/path/foo.qml"}; NiceMock<SourcePathCacheMockWithPaths> pathCacheMock{"/path/foo.qml"};
NiceMock<ProjectStorageMockWithQtQtuick> projectStorageMock{pathCacheMock.sourceId}; NiceMock<ProjectStorageMockWithQtQtuick> projectStorageMock{pathCacheMock.sourceId, "/path"};
NiceMock<ModelResourceManagementMock> resourceManagementMock; NiceMock<ModelResourceManagementMock> resourceManagementMock;
QmlDesigner::Imports imports = {QmlDesigner::Import::createLibraryImport("QtQuick")}; QmlDesigner::Imports imports = {QmlDesigner::Import::createLibraryImport("QtQuick")};
QmlDesigner::Model model{{projectStorageMock, pathCacheMock}, QmlDesigner::Model model{{projectStorageMock, pathCacheMock},
@@ -764,6 +764,7 @@ TEST_F(Model, change_imports_is_synchronizing_imports_with_project_storage)
ON_CALL(pathCacheMock, sourceId(Eq("/path/foo/."))).WillByDefault(Return(directoryPathId)); ON_CALL(pathCacheMock, sourceId(Eq("/path/foo/."))).WillByDefault(Return(directoryPathId));
auto qtQuickModuleId = projectStorageMock.moduleId("QtQuick", ModuleKind::QmlLibrary); auto qtQuickModuleId = projectStorageMock.moduleId("QtQuick", ModuleKind::QmlLibrary);
auto qtQmlModelsModuleId = projectStorageMock.moduleId("QtQml.Models", ModuleKind::QmlLibrary); auto qtQmlModelsModuleId = projectStorageMock.moduleId("QtQml.Models", ModuleKind::QmlLibrary);
auto localPathModuleId = projectStorageMock.moduleId("/path", ModuleKind::PathLibrary);
auto qtQuickImport = QmlDesigner::Import::createLibraryImport("QtQuick", "2.1"); auto qtQuickImport = QmlDesigner::Import::createLibraryImport("QtQuick", "2.1");
auto qtQmlModelsImport = QmlDesigner::Import::createLibraryImport("QtQml.Models"); auto qtQmlModelsImport = QmlDesigner::Import::createLibraryImport("QtQml.Models");
auto directoryImport = QmlDesigner::Import::createFileImport("foo"); auto directoryImport = QmlDesigner::Import::createFileImport("foo");
@@ -771,7 +772,8 @@ TEST_F(Model, change_imports_is_synchronizing_imports_with_project_storage)
EXPECT_CALL(projectStorageMock, EXPECT_CALL(projectStorageMock,
synchronizeDocumentImports( synchronizeDocumentImports(
UnorderedElementsAre(IsImport(qtQuickModuleId, filePathId, 2, 1), UnorderedElementsAre(IsImport(qtQuickModuleId, filePathId, 2, 1),
IsImport(qtQmlModelsModuleId, filePathId, -1, -1)), IsImport(qtQmlModelsModuleId, filePathId, -1, -1),
IsImport(localPathModuleId, filePathId, -1, -1)),
filePathId)); filePathId));
model.changeImports({qtQuickImport, qtQmlModelsImport}, {}); model.changeImports({qtQuickImport, qtQmlModelsImport}, {});
@@ -798,6 +800,7 @@ TEST_F(Model, change_imports_is_adding_import_in_project_storage)
ON_CALL(pathCacheMock, sourceId(Eq("/path/foo/."))).WillByDefault(Return(directoryPathId)); ON_CALL(pathCacheMock, sourceId(Eq("/path/foo/."))).WillByDefault(Return(directoryPathId));
auto qtQuickModuleId = projectStorageMock.moduleId("QtQuick", ModuleKind::QmlLibrary); auto qtQuickModuleId = projectStorageMock.moduleId("QtQuick", ModuleKind::QmlLibrary);
auto qtQmlModelsModuleId = projectStorageMock.moduleId("QtQml.Models", ModuleKind::QmlLibrary); auto qtQmlModelsModuleId = projectStorageMock.moduleId("QtQml.Models", ModuleKind::QmlLibrary);
auto localPathModuleId = projectStorageMock.moduleId("/path", ModuleKind::PathLibrary);
auto qtQuickImport = QmlDesigner::Import::createLibraryImport("QtQuick", "2.1"); auto qtQuickImport = QmlDesigner::Import::createLibraryImport("QtQuick", "2.1");
auto qtQmlModelsImport = QmlDesigner::Import::createLibraryImport("QtQml.Models"); auto qtQmlModelsImport = QmlDesigner::Import::createLibraryImport("QtQml.Models");
auto directoryImport = QmlDesigner::Import::createFileImport("foo"); auto directoryImport = QmlDesigner::Import::createFileImport("foo");
@@ -806,7 +809,8 @@ TEST_F(Model, change_imports_is_adding_import_in_project_storage)
EXPECT_CALL(projectStorageMock, EXPECT_CALL(projectStorageMock,
synchronizeDocumentImports( synchronizeDocumentImports(
UnorderedElementsAre(IsImport(qtQuickModuleId, filePathId, 2, 1), UnorderedElementsAre(IsImport(qtQuickModuleId, filePathId, 2, 1),
IsImport(qtQmlModelsModuleId, filePathId, -1, -1)), IsImport(qtQmlModelsModuleId, filePathId, -1, -1),
IsImport(localPathModuleId, filePathId, -1, -1)),
filePathId)); filePathId));
model.changeImports({qtQuickImport}, {}); model.changeImports({qtQuickImport}, {});
@@ -817,14 +821,16 @@ TEST_F(Model, change_imports_is_removing_import_in_project_storage)
QmlDesigner::SourceId directoryPathId = QmlDesigner::SourceId::create(2); QmlDesigner::SourceId directoryPathId = QmlDesigner::SourceId::create(2);
ON_CALL(pathCacheMock, sourceId(Eq("/path/foo/."))).WillByDefault(Return(directoryPathId)); ON_CALL(pathCacheMock, sourceId(Eq("/path/foo/."))).WillByDefault(Return(directoryPathId));
auto qtQmlModelsModuleId = projectStorageMock.moduleId("QtQml.Models", ModuleKind::QmlLibrary); auto qtQmlModelsModuleId = projectStorageMock.moduleId("QtQml.Models", ModuleKind::QmlLibrary);
auto localPathModuleId = projectStorageMock.moduleId("/path", ModuleKind::PathLibrary);
auto qtQuickImport = QmlDesigner::Import::createLibraryImport("QtQuick", "2.1"); auto qtQuickImport = QmlDesigner::Import::createLibraryImport("QtQuick", "2.1");
auto qtQmlModelsImport = QmlDesigner::Import::createLibraryImport("QtQml.Models"); auto qtQmlModelsImport = QmlDesigner::Import::createLibraryImport("QtQml.Models");
auto directoryImport = QmlDesigner::Import::createFileImport("foo"); auto directoryImport = QmlDesigner::Import::createFileImport("foo");
model.changeImports({qtQuickImport, qtQmlModelsImport}, {}); model.changeImports({qtQuickImport, qtQmlModelsImport}, {});
EXPECT_CALL(projectStorageMock, EXPECT_CALL(projectStorageMock,
synchronizeDocumentImports(UnorderedElementsAre( synchronizeDocumentImports(
IsImport(qtQmlModelsModuleId, filePathId, -1, -1)), UnorderedElementsAre(IsImport(qtQmlModelsModuleId, filePathId, -1, -1),
IsImport(localPathModuleId, filePathId, -1, -1)),
filePathId)); filePathId));
model.changeImports({}, {qtQuickImport}); model.changeImports({}, {qtQuickImport});
@@ -851,6 +857,7 @@ TEST_F(Model, change_imports_is_changing_import_version_with_project_storage)
ON_CALL(pathCacheMock, sourceId(Eq("/path/foo/."))).WillByDefault(Return(directoryPathId)); ON_CALL(pathCacheMock, sourceId(Eq("/path/foo/."))).WillByDefault(Return(directoryPathId));
auto qtQuickModuleId = projectStorageMock.moduleId("QtQuick", ModuleKind::QmlLibrary); auto qtQuickModuleId = projectStorageMock.moduleId("QtQuick", ModuleKind::QmlLibrary);
auto qtQmlModelsModuleId = projectStorageMock.moduleId("QtQml.Models", ModuleKind::QmlLibrary); auto qtQmlModelsModuleId = projectStorageMock.moduleId("QtQml.Models", ModuleKind::QmlLibrary);
auto localPathModuleId = projectStorageMock.moduleId("/path", ModuleKind::PathLibrary);
auto qtQuickImport = QmlDesigner::Import::createLibraryImport("QtQuick", "2.1"); auto qtQuickImport = QmlDesigner::Import::createLibraryImport("QtQuick", "2.1");
auto qtQmlModelsImport = QmlDesigner::Import::createLibraryImport("QtQml.Models"); auto qtQmlModelsImport = QmlDesigner::Import::createLibraryImport("QtQml.Models");
auto directoryImport = QmlDesigner::Import::createFileImport("foo"); auto directoryImport = QmlDesigner::Import::createFileImport("foo");
@@ -860,7 +867,8 @@ TEST_F(Model, change_imports_is_changing_import_version_with_project_storage)
EXPECT_CALL(projectStorageMock, EXPECT_CALL(projectStorageMock,
synchronizeDocumentImports( synchronizeDocumentImports(
UnorderedElementsAre(IsImport(qtQuickModuleId, filePathId, 3, 1), UnorderedElementsAre(IsImport(qtQuickModuleId, filePathId, 3, 1),
IsImport(qtQmlModelsModuleId, filePathId, -1, -1)), IsImport(qtQmlModelsModuleId, filePathId, -1, -1),
IsImport(localPathModuleId, filePathId, -1, -1)),
filePathId)); filePathId));
model.changeImports({qtQuickImport}, {}); model.changeImports({qtQuickImport}, {});

View File

@@ -16,7 +16,7 @@ class ModelNode : public testing::Test
{ {
protected: protected:
NiceMock<SourcePathCacheMockWithPaths> pathCache{"/path/foo.qml"}; NiceMock<SourcePathCacheMockWithPaths> pathCache{"/path/foo.qml"};
NiceMock<ProjectStorageMockWithQtQtuick> projectStorageMock{pathCache.sourceId}; NiceMock<ProjectStorageMockWithQtQtuick> projectStorageMock{pathCache.sourceId, "/path"};
QmlDesigner::Model model{{projectStorageMock, pathCache}, "Item"}; QmlDesigner::Model model{{projectStorageMock, pathCache}, "Item"};
QmlDesigner::ModelNode rootNode = model.rootModelNode(); QmlDesigner::ModelNode rootNode = model.rootModelNode();
}; };

View File

@@ -72,7 +72,7 @@ protected:
protected: protected:
NiceMock<AbstractViewMock> viewMock; NiceMock<AbstractViewMock> viewMock;
NiceMock<SourcePathCacheMockWithPaths> pathCacheMock{"/path/foo.qml"}; NiceMock<SourcePathCacheMockWithPaths> pathCacheMock{"/path/foo.qml"};
NiceMock<ProjectStorageMockWithQtQtuick> projectStorageMock{pathCacheMock.sourceId}; NiceMock<ProjectStorageMockWithQtQtuick> projectStorageMock{pathCacheMock.sourceId, "/path"};
QmlDesigner::ModelResourceManagement management; QmlDesigner::ModelResourceManagement management;
QmlDesigner::Model model{{projectStorageMock, pathCacheMock}, QmlDesigner::Model model{{projectStorageMock, pathCacheMock},
"Item", "Item",

View File

@@ -20,7 +20,7 @@ class ModelUtils : public ::testing::Test
protected: protected:
NiceMock<SourcePathCacheMockWithPaths> pathCacheMock{"/path/model.qml"}; NiceMock<SourcePathCacheMockWithPaths> pathCacheMock{"/path/model.qml"};
QmlDesigner::SourceId sourceId = pathCacheMock.createSourceId("/path/foo.qml"); QmlDesigner::SourceId sourceId = pathCacheMock.createSourceId("/path/foo.qml");
NiceMock<ProjectStorageMockWithQtQtuick> projectStorageMock{pathCacheMock.sourceId}; NiceMock<ProjectStorageMockWithQtQtuick> projectStorageMock{pathCacheMock.sourceId, "/path"};
QmlDesigner::ModuleId moduleId = projectStorageMock.moduleId("QtQuick", ModuleKind::QmlLibrary); QmlDesigner::ModuleId moduleId = projectStorageMock.moduleId("QtQuick", ModuleKind::QmlLibrary);
QmlDesigner::Model model{{projectStorageMock, pathCacheMock}, QmlDesigner::Model model{{projectStorageMock, pathCacheMock},
"Item", "Item",

View File

@@ -74,7 +74,7 @@ protected:
protected: protected:
NiceMock<SourcePathCacheMockWithPaths> pathCache{"/path/foo.qml"}; NiceMock<SourcePathCacheMockWithPaths> pathCache{"/path/foo.qml"};
NiceMock<ProjectStorageMockWithQtQtuick> projectStorageMock{pathCache.sourceId}; NiceMock<ProjectStorageMockWithQtQtuick> projectStorageMock{pathCache.sourceId, "/path"};
QmlDesigner::ModelPointer model{ QmlDesigner::ModelPointer model{
QmlDesigner::Model::create(QmlDesigner::ProjectStorageDependencies{projectStorageMock, QmlDesigner::Model::create(QmlDesigner::ProjectStorageDependencies{projectStorageMock,
pathCache}, pathCache},