From 1a300d0d5699ddaa4f812f81fedb8f0c3e3892f2 Mon Sep 17 00:00:00 2001 From: alex-z Date: Thu, 17 Feb 2022 18:18:35 +0200 Subject: [PATCH] Unit tests for new files restore logic when the parent folder is removed on the server. Signed-off-by: alex-z --- test/testsyncengine.cpp | 48 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/test/testsyncengine.cpp b/test/testsyncengine.cpp index 9ad3c66a6..8c53de89a 100644 --- a/test/testsyncengine.cpp +++ b/test/testsyncengine.cpp @@ -152,6 +152,54 @@ private slots: QCOMPARE(fakeFolder.currentLocalState(), fakeFolder.currentRemoteState()); } + void testLocalDeleteWithReuploadForNewLocalFiles() + { + FakeFolder fakeFolder{FileInfo{}}; + + // create folders hierarchy with some nested dirs and files + fakeFolder.localModifier().mkdir("A"); + fakeFolder.localModifier().insert("A/existingfile_A.txt", 100); + fakeFolder.localModifier().mkdir("A/B"); + fakeFolder.localModifier().insert("A/B/existingfile_B.data", 100); + fakeFolder.localModifier().mkdir("A/B/C"); + fakeFolder.localModifier().mkdir("A/B/C/c1"); + fakeFolder.localModifier().mkdir("A/B/C/c1/c2"); + fakeFolder.localModifier().insert("A/B/C/c1/c2/existingfile_C2.md", 100); + + QVERIFY(fakeFolder.syncOnce()); + + // make sure everything is uploaded + QVERIFY(fakeFolder.currentRemoteState().find("A/B/C/c1/c2")); + QVERIFY(fakeFolder.currentRemoteState().find("A/existingfile_A.txt")); + QVERIFY(fakeFolder.currentRemoteState().find("A/B/existingfile_B.data")); + QVERIFY(fakeFolder.currentRemoteState().find("A/B/C/c1/c2/existingfile_C2.md")); + QCOMPARE(fakeFolder.currentLocalState(), fakeFolder.currentRemoteState()); + + // remove a folder "A" on the server + fakeFolder.remoteModifier().remove("A"); + + // put new files and folders into a local folder "A" + fakeFolder.localModifier().mkdir("A/B/C/c1/c2"); + fakeFolder.localModifier().insert("A/B/C/c1/c2/newfile.txt", 100); + fakeFolder.localModifier().insert("A/B/C/c1/c2/Readme.data", 100); + fakeFolder.localModifier().mkdir("A/B/C/c1/c2/newfiles"); + fakeFolder.localModifier().insert("A/B/C/c1/c2/newfiles/newfile.txt", 100); + fakeFolder.localModifier().insert("A/B/C/c1/c2/newfiles/Readme.data", 100); + + QVERIFY(fakeFolder.syncOnce()); + // make sure new files and folders are uploaded (restored) + QVERIFY(fakeFolder.currentLocalState().find("A/B/C/c1/c2")); + QVERIFY(fakeFolder.currentLocalState().find("A/B/C/c1/c2/Readme.data")); + QVERIFY(fakeFolder.currentLocalState().find("A/B/C/c1/c2/newfiles/newfile.txt")); + QVERIFY(fakeFolder.currentLocalState().find("A/B/C/c1/c2/newfiles/Readme.data")); + // and the old files are removed + QVERIFY(!fakeFolder.currentLocalState().find("A/existingfile_A.txt")); + QVERIFY(!fakeFolder.currentLocalState().find("A/B/existingfile_B.data")); + QVERIFY(!fakeFolder.currentLocalState().find("A/B/C/c1/c2/existingfile_C2.md")); + + QCOMPARE(fakeFolder.currentLocalState(), fakeFolder.currentRemoteState()); + } + void testEmlLocalChecksum() { FakeFolder fakeFolder{FileInfo{}}; fakeFolder.localModifier().insert("a1.eml", 64, 'A'); -- 2.30.2