diff options
author | Jonathan White <support@dmapps.us> | 2018-09-30 15:45:06 +0300 |
---|---|---|
committer | Jonathan White <droidmonkey@users.noreply.github.com> | 2018-09-30 16:36:39 +0300 |
commit | c1e9f45df9f21b7697241037643770a2862bb7ef (patch) | |
tree | bbb7a840c0199613203d2de90ece7dd47e87038e /tests/TestGroup.cpp | |
parent | b40e5686dccfb9f60abc186120e9db17edfa81c0 (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.cpp | 25 |
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")); |