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
diff options
context:
space:
mode:
authorJonathan White <support@dmapps.us>2018-09-30 15:45:06 +0300
committerJonathan White <droidmonkey@users.noreply.github.com>2018-09-30 16:36:39 +0300
commitc1e9f45df9f21b7697241037643770a2862bb7ef (patch)
treebbb7a840c0199613203d2de90ece7dd47e87038e /tests/TestGroup.cpp
parentb40e5686dccfb9f60abc186120e9db17edfa81c0 (diff)
Introduce synchronize merge method
* Create history-based merging that keeps older data in history instead of discarding or deleting it * Extract merge logic into the Merger class * Allows special merge behavior * Improve handling of deletion and changes on groups * Enable basic change tracking while merging * Prevent unintended timestamp changes while merging * Handle differences in timestamp precision * Introduce comparison operators to allow for more sophisticated comparisons (ignore special properties, ...) * Introduce Clock class to handle datetime across the app Merge Strategies: * Default (use inherited/fallback method) * Duplicate (duplicate conflicting nodes, apply all deletions) * KeepLocal (use local values, but apply all deletions) * KeepRemote (use remote values, but apply all deletions) * KeepNewer (merge history only) * Synchronize (merge history, newest value stays on top, apply all deletions)
Diffstat (limited to 'tests/TestGroup.cpp')
-rw-r--r--tests/TestGroup.cpp25
1 files changed, 22 insertions, 3 deletions
diff --git a/tests/TestGroup.cpp b/tests/TestGroup.cpp
index efdff3168..e97f7ac25 100644
--- a/tests/TestGroup.cpp
+++ b/tests/TestGroup.cpp
@@ -18,6 +18,7 @@
#include "TestGroup.h"
#include "TestGlobal.h"
+#include "stub/TestClock.h"
#include <QSignalSpy>
@@ -26,6 +27,11 @@
QTEST_GUILESS_MAIN(TestGroup)
+namespace
+{
+ TestClock* m_clock = nullptr;
+}
+
void TestGroup::initTestCase()
{
qRegisterMetaType<Entry*>("Entry*");
@@ -33,6 +39,19 @@ void TestGroup::initTestCase()
QVERIFY(Crypto::init());
}
+void TestGroup::init()
+{
+ Q_ASSERT(m_clock == nullptr);
+ m_clock = new TestClock(2010, 5, 5, 10, 30, 10);
+ TestClock::setup(m_clock);
+}
+
+void TestGroup::cleanup()
+{
+ TestClock::teardown();
+ m_clock = nullptr;
+}
+
void TestGroup::testParenting()
{
Database* db = new Database();
@@ -389,7 +408,7 @@ void TestGroup::testClone()
QVERIFY(clonedGroupNewUuid->uuid() != originalGroup->uuid());
// Making sure the new modification date is not the same.
- QTest::qSleep(1);
+ m_clock->advanceSecond(1);
QScopedPointer<Group> clonedGroupResetTimeInfo(
originalGroup->clone(Entry::CloneNoFlags, Group::CloneNewUuid | Group::CloneResetTimeInfo));
@@ -474,7 +493,7 @@ void TestGroup::testFindEntry()
Entry* entry;
- entry = db->rootGroup()->findEntry(entry1->uuid().toRfc4122().toHex());
+ entry = db->rootGroup()->findEntry(entry1->uuidToHex());
QVERIFY(entry != nullptr);
QCOMPARE(entry->title(), QString("entry1"));
@@ -491,7 +510,7 @@ void TestGroup::testFindEntry()
entry = db->rootGroup()->findEntry(QString("//entry1"));
QVERIFY(entry == nullptr);
- entry = db->rootGroup()->findEntry(entry2->uuid().toRfc4122().toHex());
+ entry = db->rootGroup()->findEntry(entry2->uuidToHex());
QVERIFY(entry != nullptr);
QCOMPARE(entry->title(), QString("entry2"));