test for proper renaming of folder parent of a deep hierarchy
authorMatthieu Gallien <matthieu.gallien@nextcloud.com>
Wed, 16 Nov 2022 17:00:15 +0000 (18:00 +0100)
committerMatthieu Gallien <matthieu.gallien@nextcloud.com>
Thu, 17 Nov 2022 13:47:01 +0000 (14:47 +0100)
currently broken test as we miss to rename recursively

Signed-off-by: Matthieu Gallien <matthieu.gallien@nextcloud.com>
test/testsyncmove.cpp

index c8f5ac2d68e002fad7a69b24dc145b00616aca22..5bef1cddd812902f3de0587b2f141aaa7606fa27 100644 (file)
@@ -992,6 +992,56 @@ private slots:
         QVERIFY(!fakeFolder.currentRemoteState().find(dest));
     }
 
+    void testRenameDeepHierarchy()
+    {
+        FakeFolder fakeFolder{FileInfo{}};
+
+        fakeFolder.remoteModifier().mkdir("FolA");
+        fakeFolder.remoteModifier().mkdir("FolA/FolB2");
+        fakeFolder.remoteModifier().mkdir("FolA/FolB");
+        fakeFolder.remoteModifier().mkdir("FolA/FolB/FolC");
+        fakeFolder.remoteModifier().mkdir("FolA/FolB/FolC/FolD");
+        fakeFolder.remoteModifier().mkdir("FolA/FolB/FolC/FolD/FolE");
+        fakeFolder.remoteModifier().insert("FolA/FileA.txt");
+        auto fileA = fakeFolder.remoteModifier().find("FolA/FileA.txt");
+        QVERIFY(fileA);
+        fileA->extraDavProperties = "<oc:checksums><checksum>SHA1:22596363b3de40b06f981fb85d82312e8c0ed511</checksum></oc:checksums>";
+        fakeFolder.remoteModifier().insert("FolA/FolB/FileB.txt");
+        auto fileB = fakeFolder.remoteModifier().find("FolA/FolB/FileB.txt");
+        QVERIFY(fileB);
+        fileB->extraDavProperties = "<oc:checksums><checksum>SHA1:22596363b3de40b06f981fb85d82312e8c0ed511</checksum></oc:checksums>";
+        fakeFolder.remoteModifier().insert("FolA/FolB/FolC/FileC.txt");
+        auto fileC = fakeFolder.remoteModifier().find("FolA/FolB/FolC/FileC.txt");
+        QVERIFY(fileC);
+        fileC->extraDavProperties = "<oc:checksums><checksum>SHA1:22596363b3de40b06f981fb85d82312e8c0ed511</checksum></oc:checksums>";
+        fakeFolder.remoteModifier().insert("FolA/FolB/FolC/FolD/FileD.txt");
+        auto fileD = fakeFolder.remoteModifier().find("FolA/FolB/FolC/FolD/FileD.txt");
+        QVERIFY(fileD);
+        fileD->extraDavProperties = "<oc:checksums><checksum>SHA1:22596363b3de40b06f981fb85d82312e8c0ed511</checksum></oc:checksums>";
+        fakeFolder.remoteModifier().insert("FolA/FolB/FolC/FolD/FolE/FileE.txt");
+        auto fileE = fakeFolder.remoteModifier().find("FolA/FolB/FolC/FolD/FolE/FileE.txt");
+        QVERIFY(fileE);
+        fileE->extraDavProperties = "<oc:checksums><checksum>SHA1:22596363b3de40b06f981fb85d82312e8c0ed511</checksum></oc:checksums>";
+        fakeFolder.syncEngine().setLocalDiscoveryOptions(OCC::LocalDiscoveryStyle::DatabaseAndFilesystem);
+        QVERIFY(fakeFolder.syncOnce());
+
+        fakeFolder.remoteModifier().rename("FolA/FolB", "FolA/FolB2/FolB");
+        fakeFolder.syncEngine().setLocalDiscoveryOptions(OCC::LocalDiscoveryStyle::DatabaseAndFilesystem);
+        QVERIFY(fakeFolder.syncOnce());
+
+        fakeFolder.remoteModifier().insert("FolA/FolB2/FolB/FolC/FolD/FileD2.txt");
+        auto fileD2 = fakeFolder.remoteModifier().find("FolA/FolB2/FolB/FolC/FolD/FileD2.txt");
+        QVERIFY(fileD2);
+        fileD2->extraDavProperties = "<oc:checksums><checksum>SHA1:22596363b3de40b06f981fb85d82312e8c0ed511</checksum></oc:checksums>";
+        fakeFolder.remoteModifier().appendByte("FolA/FolB2/FolB/FolC/FolD/FileD.txt");
+        auto fileDMoved = fakeFolder.remoteModifier().find("FolA/FolB2/FolB/FolC/FolD/FileD.txt");
+        QVERIFY(fileDMoved);
+        fileDMoved->extraDavProperties = "<oc:checksums><checksum>SHA1:22596363b3de40b06f981fb85d82312e8c0ed522</checksum></oc:checksums>";
+        fakeFolder.syncEngine().setLocalDiscoveryOptions(OCC::LocalDiscoveryStyle::FilesystemOnly);
+        QVERIFY(fakeFolder.syncOnce());
+
+        QCOMPARE(fakeFolder.currentLocalState(), fakeFolder.currentRemoteState());
+    }
 };
 
 QTEST_GUILESS_MAIN(TestSyncMove)