forked from qt-creator/qt-creator
UnitTests: Add fixture for global type annotations
Improves the clarity, readability, and overall understanding of the tests, making them easier to maintain and work with. Change-Id: Ia25862c4134afa964db603720c0709c0ed27a015 Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
This commit is contained in:
@@ -415,8 +415,7 @@ public:
|
|||||||
secondSourceId,
|
secondSourceId,
|
||||||
thirdSourceId,
|
thirdSourceId,
|
||||||
qmltypes1SourceId,
|
qmltypes1SourceId,
|
||||||
qmltypes2SourceId,
|
qmltypes2SourceId});
|
||||||
itemLibraryPathSourceId});
|
|
||||||
setFilesNotExistsUnchanged({createDirectorySourceId("/path/designer"),
|
setFilesNotExistsUnchanged({createDirectorySourceId("/path/designer"),
|
||||||
createDirectorySourceId("/root/designer"),
|
createDirectorySourceId("/root/designer"),
|
||||||
createDirectorySourceId("/path/one/designer"),
|
createDirectorySourceId("/path/one/designer"),
|
||||||
@@ -484,15 +483,7 @@ protected:
|
|||||||
SourceId qmlDocumentSourceId1 = sourcePathCache.sourceId("/path/First.qml");
|
SourceId qmlDocumentSourceId1 = sourcePathCache.sourceId("/path/First.qml");
|
||||||
SourceId qmlDocumentSourceId2 = sourcePathCache.sourceId("/path/First2.qml");
|
SourceId qmlDocumentSourceId2 = sourcePathCache.sourceId("/path/First2.qml");
|
||||||
SourceId qmlDocumentSourceId3 = sourcePathCache.sourceId("/path/Second.qml");
|
SourceId qmlDocumentSourceId3 = sourcePathCache.sourceId("/path/Second.qml");
|
||||||
const QString itemLibraryPath = QDir::cleanPath(
|
|
||||||
UNITTEST_DIR "/../../../../share/qtcreator/qmldesigner/itemLibrary/");
|
|
||||||
DirectoryPathId itemLibraryPathDirectoryPathId = sourcePathCache.directoryPathId(
|
|
||||||
Utils::PathString{itemLibraryPath});
|
|
||||||
SourceId itemLibraryPathSourceId = SourceId::create(itemLibraryPathDirectoryPathId, FileNameId{});
|
|
||||||
const QString qmlImportsPath = QDir::cleanPath(UNITTEST_DIR "/projectstorage/data/qml");
|
|
||||||
DirectoryPathId qmlImportsPathDirectoryPathId = sourcePathCache.directoryPathId(
|
|
||||||
Utils::PathString{itemLibraryPath});
|
|
||||||
SourceId qmlImportsPathSourceId = SourceId::create(qmlImportsPathDirectoryPathId, FileNameId{});
|
|
||||||
ModuleId qmlModuleId{storage.moduleId("Qml", ModuleKind::QmlLibrary)};
|
ModuleId qmlModuleId{storage.moduleId("Qml", ModuleKind::QmlLibrary)};
|
||||||
ModuleId qmlCppNativeModuleId{storage.moduleId("Qml", ModuleKind::CppLibrary)};
|
ModuleId qmlCppNativeModuleId{storage.moduleId("Qml", ModuleKind::CppLibrary)};
|
||||||
ModuleId exampleModuleId{storage.moduleId("Example", ModuleKind::QmlLibrary)};
|
ModuleId exampleModuleId{storage.moduleId("Example", ModuleKind::QmlLibrary)};
|
||||||
@@ -4593,17 +4584,52 @@ TEST_F(ProjectStorageUpdater_property_editor_panes, is_empty_if_directory_has_no
|
|||||||
updater.update(update);
|
updater.update(update);
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(ProjectStorageUpdater, update_type_annotations)
|
class ProjectStorageUpdater_global_type_annotations : public BaseProjectStorageUpdater
|
||||||
{
|
{
|
||||||
auto qtQuickSourceId = sourcePathCache.sourceId(
|
public:
|
||||||
|
ProjectStorageUpdater_global_type_annotations()
|
||||||
|
{
|
||||||
|
ON_CALL(fileSystemMock, fileStatus(_)).WillByDefault([](SourceId sourceId) {
|
||||||
|
return FileStatus{sourceId, 1, 21};
|
||||||
|
});
|
||||||
|
ON_CALL(projectStorageMock, fetchFileStatus(_)).WillByDefault([](SourceId sourceId) {
|
||||||
|
return FileStatus{sourceId, 1, 21};
|
||||||
|
});
|
||||||
|
|
||||||
|
ON_CALL(projectStorageMock, typeAnnotationDirectoryIds())
|
||||||
|
.WillByDefault(Return(QmlDesigner::SmallDirectoryPathIds<64>{
|
||||||
|
itemLibraryPathDirectoryPathId,
|
||||||
|
}));
|
||||||
|
ON_CALL(projectStorageMock, typeAnnotationSourceIds(itemLibraryPathDirectoryPathId))
|
||||||
|
.WillByDefault(
|
||||||
|
Return(QmlDesigner::SmallSourceIds<4>{qtQuickSourceId, qtQuickControlSourceId}));
|
||||||
|
|
||||||
|
itemTraits.canBeContainer = QmlDesigner::FlagIs::True;
|
||||||
|
}
|
||||||
|
|
||||||
|
public:
|
||||||
|
const QString itemLibraryPath = QDir::cleanPath(
|
||||||
|
UNITTEST_DIR "/../../../../share/qtcreator/qmldesigner/itemLibrary/");
|
||||||
|
DirectoryPathId itemLibraryPathDirectoryPathId = sourcePathCache.directoryPathId(
|
||||||
|
Utils::PathString{itemLibraryPath});
|
||||||
|
SourceId itemLibraryPathSourceId = SourceId::create(itemLibraryPathDirectoryPathId, FileNameId{});
|
||||||
|
const QString qmlImportsPath = QDir::cleanPath(UNITTEST_DIR "/projectstorage/data/qml");
|
||||||
|
DirectoryPathId qmlImportsPathDirectoryPathId = sourcePathCache.directoryPathId(
|
||||||
|
Utils::PathString{itemLibraryPath});
|
||||||
|
SourceId qmlImportsPathSourceId = SourceId::create(qmlImportsPathDirectoryPathId, FileNameId{});
|
||||||
|
SourceId qtQuickSourceId = sourcePathCache.sourceId(
|
||||||
QmlDesigner::SourcePath{itemLibraryPath + "/quick.metainfo"});
|
QmlDesigner::SourcePath{itemLibraryPath + "/quick.metainfo"});
|
||||||
auto qtQuickControlSourceId = sourcePathCache.sourceId(
|
SourceId qtQuickControlSourceId = sourcePathCache.sourceId(
|
||||||
QmlDesigner::SourcePath{itemLibraryPath + "/qtquickcontrols2.metainfo"});
|
QmlDesigner::SourcePath{itemLibraryPath + "/qtquickcontrols2.metainfo"});
|
||||||
setFilesAdded({itemLibraryPathSourceId, qtQuickSourceId, qtQuickControlSourceId});
|
ModuleId qtQuickModuleId = moduleId("QtQuick", ModuleKind::QmlLibrary);
|
||||||
auto qtQuickModuleId = moduleId("QtQuick", ModuleKind::QmlLibrary);
|
ModuleId qtQuickControlsModuleId = moduleId("QtQuick.Controls.Basic", ModuleKind::QmlLibrary);
|
||||||
auto qtQuickControlsModuleId = moduleId("QtQuick.Controls.Basic", ModuleKind::QmlLibrary);
|
|
||||||
QmlDesigner::Storage::TypeTraits itemTraits;
|
QmlDesigner::Storage::TypeTraits itemTraits;
|
||||||
itemTraits.canBeContainer = QmlDesigner::FlagIs::True;
|
Update update = {.typeAnnotationPaths = {itemLibraryPath}};
|
||||||
|
};
|
||||||
|
|
||||||
|
TEST_F(ProjectStorageUpdater_global_type_annotations, update)
|
||||||
|
{
|
||||||
|
setFilesAdded({itemLibraryPathSourceId, qtQuickSourceId, qtQuickControlSourceId});
|
||||||
|
|
||||||
EXPECT_CALL(projectStorageMock,
|
EXPECT_CALL(projectStorageMock,
|
||||||
synchronize(AllOf(Field("SynchronizationPackage::typeAnnotations",
|
synchronize(AllOf(Field("SynchronizationPackage::typeAnnotations",
|
||||||
@@ -4628,21 +4654,13 @@ TEST_F(ProjectStorageUpdater, update_type_annotations)
|
|||||||
&SynchronizationPackage::updatedTypeAnnotationSourceIds,
|
&SynchronizationPackage::updatedTypeAnnotationSourceIds,
|
||||||
IsSupersetOf({qtQuickSourceId, qtQuickControlSourceId})))));
|
IsSupersetOf({qtQuickSourceId, qtQuickControlSourceId})))));
|
||||||
|
|
||||||
updater.update({.typeAnnotationPaths = {itemLibraryPath}});
|
updater.update(update);
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(ProjectStorageUpdater, update_added_type_annotation)
|
TEST_F(ProjectStorageUpdater_global_type_annotations, add)
|
||||||
{
|
{
|
||||||
auto qtQuickSourceId = sourcePathCache.sourceId(
|
|
||||||
QmlDesigner::SourcePath{itemLibraryPath + "/quick.metainfo"});
|
|
||||||
auto qtQuickControlSourceId = sourcePathCache.sourceId(
|
|
||||||
QmlDesigner::SourcePath{itemLibraryPath + "/qtquickcontrols2.metainfo"});
|
|
||||||
setFilesUnchanged({itemLibraryPathSourceId});
|
setFilesUnchanged({itemLibraryPathSourceId});
|
||||||
setFilesAdded({qtQuickSourceId, qtQuickControlSourceId});
|
setFilesAdded({qtQuickSourceId, qtQuickControlSourceId});
|
||||||
auto qtQuickModuleId = moduleId("QtQuick", ModuleKind::QmlLibrary);
|
|
||||||
auto qtQuickControlsModuleId = moduleId("QtQuick.Controls.Basic", ModuleKind::QmlLibrary);
|
|
||||||
QmlDesigner::Storage::TypeTraits itemTraits;
|
|
||||||
itemTraits.canBeContainer = QmlDesigner::FlagIs::True;
|
|
||||||
|
|
||||||
EXPECT_CALL(projectStorageMock,
|
EXPECT_CALL(projectStorageMock,
|
||||||
synchronize(AllOf(Field("SynchronizationPackage::typeAnnotations",
|
synchronize(AllOf(Field("SynchronizationPackage::typeAnnotations",
|
||||||
@@ -4667,21 +4685,13 @@ TEST_F(ProjectStorageUpdater, update_added_type_annotation)
|
|||||||
&SynchronizationPackage::updatedTypeAnnotationSourceIds,
|
&SynchronizationPackage::updatedTypeAnnotationSourceIds,
|
||||||
IsSupersetOf({qtQuickSourceId, qtQuickControlSourceId})))));
|
IsSupersetOf({qtQuickSourceId, qtQuickControlSourceId})))));
|
||||||
|
|
||||||
updater.update({.typeAnnotationPaths = {itemLibraryPath}});
|
updater.update(update);
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(ProjectStorageUpdater, update_changed_type_annotation)
|
TEST_F(ProjectStorageUpdater_global_type_annotations, changed)
|
||||||
{
|
{
|
||||||
auto qtQuickSourceId = sourcePathCache.sourceId(
|
|
||||||
QmlDesigner::SourcePath{itemLibraryPath + "/quick.metainfo"});
|
|
||||||
auto qtQuickControlSourceId = sourcePathCache.sourceId(
|
|
||||||
QmlDesigner::SourcePath{itemLibraryPath + "/qtquickcontrols2.metainfo"});
|
|
||||||
setFilesUnchanged({itemLibraryPathSourceId});
|
setFilesUnchanged({itemLibraryPathSourceId});
|
||||||
setFilesChanged({qtQuickSourceId, qtQuickControlSourceId});
|
setFilesChanged({qtQuickSourceId, qtQuickControlSourceId});
|
||||||
auto qtQuickModuleId = moduleId("QtQuick", ModuleKind::QmlLibrary);
|
|
||||||
auto qtQuickControlsModuleId = moduleId("QtQuick.Controls.Basic", ModuleKind::QmlLibrary);
|
|
||||||
QmlDesigner::Storage::TypeTraits itemTraits;
|
|
||||||
itemTraits.canBeContainer = QmlDesigner::FlagIs::True;
|
|
||||||
|
|
||||||
EXPECT_CALL(projectStorageMock,
|
EXPECT_CALL(projectStorageMock,
|
||||||
synchronize(AllOf(Field("SynchronizationPackage::typeAnnotations",
|
synchronize(AllOf(Field("SynchronizationPackage::typeAnnotations",
|
||||||
@@ -4706,15 +4716,11 @@ TEST_F(ProjectStorageUpdater, update_changed_type_annotation)
|
|||||||
&SynchronizationPackage::updatedTypeAnnotationSourceIds,
|
&SynchronizationPackage::updatedTypeAnnotationSourceIds,
|
||||||
IsSupersetOf({qtQuickSourceId, qtQuickControlSourceId})))));
|
IsSupersetOf({qtQuickSourceId, qtQuickControlSourceId})))));
|
||||||
|
|
||||||
updater.update({.typeAnnotationPaths = {itemLibraryPath}});
|
updater.update(update);
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(ProjectStorageUpdater, update_removed_type_annotations)
|
TEST_F(ProjectStorageUpdater_global_type_annotations, remove)
|
||||||
{
|
{
|
||||||
auto qtQuickSourceId = sourcePathCache.sourceId(
|
|
||||||
QmlDesigner::SourcePath{itemLibraryPath + "/quick.metainfo"});
|
|
||||||
auto qtQuickControlSourceId = sourcePathCache.sourceId(
|
|
||||||
QmlDesigner::SourcePath{itemLibraryPath + "/qtquickcontrols2.metainfo"});
|
|
||||||
setFilesRemoved({itemLibraryPathSourceId, qtQuickSourceId, qtQuickControlSourceId});
|
setFilesRemoved({itemLibraryPathSourceId, qtQuickSourceId, qtQuickControlSourceId});
|
||||||
|
|
||||||
EXPECT_CALL(projectStorageMock,
|
EXPECT_CALL(projectStorageMock,
|
||||||
@@ -4725,25 +4731,11 @@ TEST_F(ProjectStorageUpdater, update_removed_type_annotations)
|
|||||||
&SynchronizationPackage::updatedTypeAnnotationSourceIds,
|
&SynchronizationPackage::updatedTypeAnnotationSourceIds,
|
||||||
IsSupersetOf({qtQuickSourceId, qtQuickControlSourceId})))));
|
IsSupersetOf({qtQuickSourceId, qtQuickControlSourceId})))));
|
||||||
|
|
||||||
updater.update({.typeAnnotationPaths = {itemLibraryPath}});
|
updater.update(update);
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(ProjectStorageUpdater, update_type_annotations_removed_meta_info_file)
|
TEST_F(ProjectStorageUpdater_global_type_annotations, removed_meta_info_file)
|
||||||
{
|
{
|
||||||
ON_CALL(fileSystemMock, fileStatus(_)).WillByDefault([](SourceId sourceId) {
|
|
||||||
return FileStatus{sourceId, 1, 21};
|
|
||||||
});
|
|
||||||
ON_CALL(projectStorageMock, fetchFileStatus(_)).WillByDefault([](SourceId sourceId) {
|
|
||||||
return FileStatus{sourceId, 1, 21};
|
|
||||||
});
|
|
||||||
auto qtQuickSourceId = sourcePathCache.sourceId(
|
|
||||||
QmlDesigner::SourcePath{itemLibraryPath + "/quick.metainfo"});
|
|
||||||
auto qtQuickControlSourceId = sourcePathCache.sourceId(
|
|
||||||
QmlDesigner::SourcePath{itemLibraryPath + "/qtquickcontrols2.metainfo"});
|
|
||||||
ON_CALL(projectStorageMock, typeAnnotationDirectoryIds())
|
|
||||||
.WillByDefault(Return(QmlDesigner::SmallDirectoryPathIds<64>{itemLibraryPathDirectoryPathId}));
|
|
||||||
ON_CALL(projectStorageMock, typeAnnotationSourceIds(itemLibraryPathDirectoryPathId))
|
|
||||||
.WillByDefault(Return(QmlDesigner::SmallSourceIds<4>{qtQuickSourceId, qtQuickControlSourceId}));
|
|
||||||
setFilesChanged({itemLibraryPathSourceId});
|
setFilesChanged({itemLibraryPathSourceId});
|
||||||
setFilesRemoved({qtQuickSourceId});
|
setFilesRemoved({qtQuickSourceId});
|
||||||
setFilesUnchanged({qtQuickControlSourceId});
|
setFilesUnchanged({qtQuickControlSourceId});
|
||||||
@@ -4757,27 +4749,11 @@ TEST_F(ProjectStorageUpdater, update_type_annotations_removed_meta_info_file)
|
|||||||
AllOf(IsSupersetOf({qtQuickSourceId}),
|
AllOf(IsSupersetOf({qtQuickSourceId}),
|
||||||
Not(Contains(qtQuickControlSourceId)))))));
|
Not(Contains(qtQuickControlSourceId)))))));
|
||||||
|
|
||||||
updater.update({.typeAnnotationPaths = {itemLibraryPath}});
|
updater.update(update);
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(ProjectStorageUpdater, update_type_annotations_removed_directory)
|
TEST_F(ProjectStorageUpdater_global_type_annotations, removed_directory)
|
||||||
{
|
{
|
||||||
ON_CALL(fileSystemMock, fileStatus(_)).WillByDefault([](SourceId sourceId) {
|
|
||||||
return FileStatus{sourceId, 1, 21};
|
|
||||||
});
|
|
||||||
ON_CALL(projectStorageMock, fetchFileStatus(_)).WillByDefault([](SourceId sourceId) {
|
|
||||||
return FileStatus{sourceId, 1, 21};
|
|
||||||
});
|
|
||||||
auto qtQuickSourceId = sourcePathCache.sourceId(
|
|
||||||
QmlDesigner::SourcePath{itemLibraryPath + "/quick.metainfo"});
|
|
||||||
auto qtQuickControlSourceId = sourcePathCache.sourceId(
|
|
||||||
QmlDesigner::SourcePath{itemLibraryPath + "/qtquickcontrols2.metainfo"});
|
|
||||||
ON_CALL(projectStorageMock, typeAnnotationDirectoryIds())
|
|
||||||
.WillByDefault(Return(QmlDesigner::SmallDirectoryPathIds<64>{
|
|
||||||
itemLibraryPathDirectoryPathId,
|
|
||||||
}));
|
|
||||||
ON_CALL(projectStorageMock, typeAnnotationSourceIds(itemLibraryPathDirectoryPathId))
|
|
||||||
.WillByDefault(Return(QmlDesigner::SmallSourceIds<4>{qtQuickSourceId, qtQuickControlSourceId}));
|
|
||||||
setFilesRemoved({itemLibraryPathSourceId, qtQuickSourceId, qtQuickControlSourceId});
|
setFilesRemoved({itemLibraryPathSourceId, qtQuickSourceId, qtQuickControlSourceId});
|
||||||
|
|
||||||
EXPECT_CALL(projectStorageMock,
|
EXPECT_CALL(projectStorageMock,
|
||||||
|
Reference in New Issue
Block a user