Add tests to remove all files when sycing with or without nextcloudcmd.
authorCamila Ayres <hello@camilasan.com>
Tue, 25 Jun 2024 20:12:14 +0000 (22:12 +0200)
committerMatthieu Gallien <matthieu_gallien@yahoo.fr>
Fri, 28 Jun 2024 16:33:39 +0000 (18:33 +0200)
Signed-off-by: Camila Ayres <hello@camilasan.com>
test/testsyncengine.cpp

index 0d2038e5f364f8ea09e109e6e2f254fdc1200d2a..e3c5f499af8b4c8a8c291cf27acb6ceb5a94b2e8 100644 (file)
@@ -1906,6 +1906,75 @@ private slots:
         QVERIFY(fakeFolder.syncOnce());
         QCOMPARE(fakeFolder.currentLocalState(), fakeFolder.currentRemoteState());
     }
+
+    void testRemoveAllFilesWithNextcloudCmd()
+    {
+        FakeFolder fakeFolder{FileInfo{}};
+        auto nextcloudCmdSyncOptions = fakeFolder.syncEngine().syncOptions();
+        nextcloudCmdSyncOptions.setIsCmd(true);
+        fakeFolder.syncEngine().setSyncOptions(nextcloudCmdSyncOptions);
+        ConfigFile().setPromptDeleteFiles(true);
+        QSignalSpy displayDialogSignal(&fakeFolder.syncEngine(), &SyncEngine::aboutToRemoveAllFiles);
+
+        fakeFolder.remoteModifier().mkdir("folder");
+        fakeFolder.remoteModifier().insert("folder/file1");
+        fakeFolder.remoteModifier().insert("folder/file2");
+        fakeFolder.remoteModifier().insert("folder/file3");
+        fakeFolder.remoteModifier().mkdir("folder2");
+        fakeFolder.remoteModifier().insert("file1");
+        fakeFolder.remoteModifier().insert("file2");
+        fakeFolder.remoteModifier().insert("file3");
+
+        QVERIFY(fakeFolder.syncOnce());
+
+        fakeFolder.remoteModifier().remove("folder");
+        fakeFolder.remoteModifier().remove("folder2");
+        fakeFolder.remoteModifier().remove("file1");
+        fakeFolder.remoteModifier().remove("file2");
+        fakeFolder.remoteModifier().remove("file3");
+
+        QVERIFY(fakeFolder.syncOnce());
+        // the signal to display the dialog should not be emitted
+        QCOMPARE(displayDialogSignal.count(), 0);
+        QCOMPARE(fakeFolder.remoteModifier().find("folder"), nullptr);
+        QCOMPARE(fakeFolder.remoteModifier().find("folder2"), nullptr);
+        QCOMPARE(fakeFolder.remoteModifier().find("file1"), nullptr);
+    }
+
+    void testRemoveAllFilesWithoutNextcloudCmd()
+    {
+        FakeFolder fakeFolder{FileInfo{}};
+        auto nextcloudCmdSyncOptions = fakeFolder.syncEngine().syncOptions();
+        nextcloudCmdSyncOptions.setIsCmd(false);
+        fakeFolder.syncEngine().setSyncOptions(nextcloudCmdSyncOptions);
+        ConfigFile().setPromptDeleteFiles(true);
+        QSignalSpy displayDialogSignal(&fakeFolder.syncEngine(), &SyncEngine::aboutToRemoveAllFiles);
+
+        fakeFolder.remoteModifier().mkdir("folder");
+        fakeFolder.remoteModifier().insert("folder/file1");
+        fakeFolder.remoteModifier().insert("folder/file2");
+        fakeFolder.remoteModifier().insert("folder/file3");
+        fakeFolder.remoteModifier().mkdir("folder2");
+        fakeFolder.remoteModifier().insert("file1");
+        fakeFolder.remoteModifier().insert("file2");
+        fakeFolder.remoteModifier().insert("file3");
+
+        QVERIFY(fakeFolder.syncOnce());
+        QCOMPARE(fakeFolder.currentLocalState(), fakeFolder.currentRemoteState());
+
+        fakeFolder.remoteModifier().remove("folder");
+        fakeFolder.remoteModifier().remove("folder2");
+        fakeFolder.remoteModifier().remove("file1");
+        fakeFolder.remoteModifier().remove("file2");
+        fakeFolder.remoteModifier().remove("file3");
+
+        QVERIFY(fakeFolder.syncOnce());
+        // the signal to show the dialog should be emitted
+        QCOMPARE(displayDialogSignal.count(), 1);
+        QCOMPARE(fakeFolder.remoteModifier().find("folder"), nullptr);
+        QCOMPARE(fakeFolder.remoteModifier().find("folder2"), nullptr);
+        QCOMPARE(fakeFolder.remoteModifier().find("file1"), nullptr);
+    }
 };
 
 QTEST_GUILESS_MAIN(TestSyncEngine)