Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/keepassxreboot/keepassxc.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorMatthias Drexler <6493860+mddrex@users.noreply.github.com>2019-06-19 17:02:07 +0300
committerJonathan White <support@dmapps.us>2019-06-19 17:02:07 +0300
commitbb8377ae6a65e5b9b2ddf2be405e70f7e51eebf3 (patch)
tree8b6f61084c35975622c9ad8c6bd45ab916c5f346 /tests
parent84eec03cb78a47f4677d189cdb00df882336147c (diff)
Allow setting group icons to children groups/entries (#3273)
* Add combo menu button to apply an icon to children - allow more options to apply icons (child groups, child entries) - extend tests in TestGroup (applying icons for groups/entries only) - prevent blue folder icon being set for entries (on entry creation only) * Do not show the combo menu button for entries
Diffstat (limited to 'tests')
-rw-r--r--tests/TestGroup.cpp100
-rw-r--r--tests/TestGroup.h1
2 files changed, 101 insertions, 0 deletions
diff --git a/tests/TestGroup.cpp b/tests/TestGroup.cpp
index 9c3e52231..f78cb96af 100644
--- a/tests/TestGroup.cpp
+++ b/tests/TestGroup.cpp
@@ -1081,3 +1081,103 @@ void TestGroup::testHierarchy()
QVERIFY(hierarchy.contains("group2"));
QVERIFY(hierarchy.contains("group3"));
}
+
+void TestGroup::testApplyGroupIconRecursively()
+{
+ // Create a database with two nested groups with one entry each
+ Database* database = new Database();
+
+ Group* subgroup = new Group();
+ subgroup->setName("Subgroup");
+ subgroup->setParent(database->rootGroup());
+ QVERIFY(subgroup);
+
+ Group* subsubgroup = new Group();
+ subsubgroup->setName("Subsubgroup");
+ subsubgroup->setParent(subgroup);
+ QVERIFY(subsubgroup);
+
+ Entry* subgroupEntry = subgroup->addEntryWithPath("Subgroup entry");
+ QVERIFY(subgroupEntry);
+ subgroup->setIcon(1);
+
+ Entry* subsubgroupEntry = subsubgroup->addEntryWithPath("Subsubgroup entry");
+ QVERIFY(subsubgroupEntry);
+ subsubgroup->setIcon(2);
+
+ // Set an icon per number to the root group and apply recursively
+ // -> all groups and entries have the same icon
+ const int rootIconNumber = 42;
+ database->rootGroup()->setIcon(rootIconNumber);
+ QVERIFY(database->rootGroup()->iconNumber() == rootIconNumber);
+ database->rootGroup()->applyGroupIconToChildGroups();
+ database->rootGroup()->applyGroupIconToChildEntries();
+ QVERIFY(subgroup->iconNumber() == rootIconNumber);
+ QVERIFY(subgroupEntry->iconNumber() == rootIconNumber);
+ QVERIFY(subsubgroup->iconNumber() == rootIconNumber);
+ QVERIFY(subsubgroupEntry->iconNumber() == rootIconNumber);
+
+ // Set an icon per number to the subsubgroup and apply recursively
+ // -> only the subsubgroup related groups and entries have updated icons
+ const int subsubgroupIconNumber = 24;
+ subsubgroup->setIcon(subsubgroupIconNumber);
+ QVERIFY(subsubgroup->iconNumber() == subsubgroupIconNumber);
+ subsubgroup->applyGroupIconToChildGroups();
+ subsubgroup->applyGroupIconToChildEntries();
+ QVERIFY(database->rootGroup()->iconNumber() == rootIconNumber);
+ QVERIFY(subgroup->iconNumber() == rootIconNumber);
+ QVERIFY(subgroupEntry->iconNumber() == rootIconNumber);
+ QVERIFY(subsubgroup->iconNumber() == subsubgroupIconNumber);
+ QVERIFY(subsubgroupEntry->iconNumber() == subsubgroupIconNumber);
+
+ // Set an icon per UUID to the subgroup and apply recursively
+ // -> all groups and entries except the root group have the same icon
+ const QUuid subgroupIconUuid = QUuid::createUuid();
+ QImage subgroupIcon(16, 16, QImage::Format_RGB32);
+ subgroupIcon.setPixel(0, 0, qRgb(255, 0, 0));
+ database->metadata()->addCustomIcon(subgroupIconUuid, subgroupIcon);
+ subgroup->setIcon(subgroupIconUuid);
+ subgroup->applyGroupIconToChildGroups();
+ subgroup->applyGroupIconToChildEntries();
+ QVERIFY(database->rootGroup()->iconNumber() == rootIconNumber);
+ QCOMPARE(subgroup->iconUuid(), subgroupIconUuid);
+ QCOMPARE(subgroup->icon(), subgroupIcon);
+ QCOMPARE(subgroupEntry->iconUuid(), subgroupIconUuid);
+ QCOMPARE(subgroupEntry->icon(), subgroupIcon);
+ QCOMPARE(subsubgroup->iconUuid(), subgroupIconUuid);
+ QCOMPARE(subsubgroup->icon(), subgroupIcon);
+ QCOMPARE(subsubgroupEntry->iconUuid(), subgroupIconUuid);
+ QCOMPARE(subsubgroupEntry->icon(), subgroupIcon);
+
+ // Reset all icons to root icon
+ database->rootGroup()->setIcon(rootIconNumber);
+ QVERIFY(database->rootGroup()->iconNumber() == rootIconNumber);
+ database->rootGroup()->applyGroupIconToChildGroups();
+ database->rootGroup()->applyGroupIconToChildEntries();
+ QVERIFY(subgroup->iconNumber() == rootIconNumber);
+ QVERIFY(subgroupEntry->iconNumber() == rootIconNumber);
+ QVERIFY(subsubgroup->iconNumber() == rootIconNumber);
+ QVERIFY(subsubgroupEntry->iconNumber() == rootIconNumber);
+
+ // Apply only for child groups
+ const int iconForGroups = 10;
+ database->rootGroup()->setIcon(iconForGroups);
+ QVERIFY(database->rootGroup()->iconNumber() == iconForGroups);
+ database->rootGroup()->applyGroupIconToChildGroups();
+ QVERIFY(database->rootGroup()->iconNumber() == iconForGroups);
+ QVERIFY(subgroup->iconNumber() == iconForGroups);
+ QVERIFY(subgroupEntry->iconNumber() == rootIconNumber);
+ QVERIFY(subsubgroup->iconNumber() == iconForGroups);
+ QVERIFY(subsubgroupEntry->iconNumber() == rootIconNumber);
+
+ // Apply only for child entries
+ const int iconForEntries = 20;
+ database->rootGroup()->setIcon(iconForEntries);
+ QVERIFY(database->rootGroup()->iconNumber() == iconForEntries);
+ database->rootGroup()->applyGroupIconToChildEntries();
+ QVERIFY(database->rootGroup()->iconNumber() == iconForEntries);
+ QVERIFY(subgroup->iconNumber() == iconForGroups);
+ QVERIFY(subgroupEntry->iconNumber() == iconForEntries);
+ QVERIFY(subsubgroup->iconNumber() == iconForGroups);
+ QVERIFY(subsubgroupEntry->iconNumber() == iconForEntries);
+}
diff --git a/tests/TestGroup.h b/tests/TestGroup.h
index 6242e4ff4..0ee735949 100644
--- a/tests/TestGroup.h
+++ b/tests/TestGroup.h
@@ -47,6 +47,7 @@ private slots:
void testEquals();
void testChildrenSort();
void testHierarchy();
+ void testApplyGroupIconRecursively();
};
#endif // KEEPASSX_TESTGROUP_H