2018-12-18 13:59:37 +03:00
|
|
|
/*
|
|
|
|
* This software is in the public domain, furnished "as is", without technical
|
|
|
|
* support, and with no warranty, express or implied, as to its usefulness for
|
|
|
|
* any purpose.
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
|
|
|
|
#include <QtTest>
|
|
|
|
#include "syncenginetestutils.h"
|
|
|
|
#include <syncengine.h>
|
|
|
|
|
|
|
|
using namespace OCC;
|
|
|
|
|
|
|
|
class TestSyncDelete : public QObject
|
|
|
|
{
|
|
|
|
Q_OBJECT
|
|
|
|
|
|
|
|
private slots:
|
|
|
|
|
|
|
|
void testDeleteDirectoryWithNewFile()
|
|
|
|
{
|
|
|
|
FakeFolder fakeFolder{ FileInfo::A12_B12_C12_S12() };
|
|
|
|
|
|
|
|
// Remove a directory on the server with new files on the client
|
|
|
|
fakeFolder.remoteModifier().remove("A");
|
|
|
|
fakeFolder.localModifier().insert("A/hello.txt");
|
|
|
|
|
2023-06-02 14:55:08 +03:00
|
|
|
// Symmetry
|
2018-12-18 13:59:37 +03:00
|
|
|
fakeFolder.localModifier().remove("B");
|
|
|
|
fakeFolder.remoteModifier().insert("B/hello.txt");
|
|
|
|
|
|
|
|
QVERIFY(fakeFolder.syncOnce());
|
|
|
|
|
|
|
|
// A/a1 must be gone because the directory was removed on the server, but hello.txt must be there
|
|
|
|
QVERIFY(!fakeFolder.currentRemoteState().find("A/a1"));
|
|
|
|
QVERIFY(fakeFolder.currentRemoteState().find("A/hello.txt"));
|
|
|
|
|
2023-06-02 14:55:08 +03:00
|
|
|
// Symmetry
|
2018-12-18 13:59:37 +03:00
|
|
|
QVERIFY(!fakeFolder.currentRemoteState().find("B/b1"));
|
|
|
|
QVERIFY(fakeFolder.currentRemoteState().find("B/hello.txt"));
|
|
|
|
|
|
|
|
QCOMPARE(fakeFolder.currentLocalState(), fakeFolder.currentRemoteState());
|
|
|
|
}
|
2018-12-18 14:08:34 +03:00
|
|
|
|
|
|
|
void issue1329()
|
|
|
|
{
|
|
|
|
FakeFolder fakeFolder{ FileInfo::A12_B12_C12_S12() };
|
|
|
|
|
|
|
|
fakeFolder.localModifier().remove("B");
|
|
|
|
QVERIFY(fakeFolder.syncOnce());
|
|
|
|
QCOMPARE(fakeFolder.currentLocalState(), fakeFolder.currentRemoteState());
|
|
|
|
|
|
|
|
// Add a directory that was just removed in the previous sync:
|
|
|
|
fakeFolder.localModifier().mkdir("B");
|
|
|
|
fakeFolder.localModifier().insert("B/b1");
|
|
|
|
QVERIFY(fakeFolder.syncOnce());
|
|
|
|
QVERIFY(fakeFolder.currentRemoteState().find("B/b1"));
|
|
|
|
QCOMPARE(fakeFolder.currentLocalState(), fakeFolder.currentRemoteState());
|
|
|
|
}
|
2018-12-18 13:59:37 +03:00
|
|
|
};
|
|
|
|
|
|
|
|
QTEST_GUILESS_MAIN(TestSyncDelete)
|
|
|
|
#include "testsyncdelete.moc"
|