QCOMPARE(printDbData(fakeFolder.dbState()), printDbData(remoteInfo));
}
+ void testLocalExternalStorageRenameDetection()
+ {
+ FakeFolder fakeFolder { FileInfo { QString(), { FileInfo { QStringLiteral("external") } } }};
+
+ int nPUT = 0;
+ int nDELETE = 0;
+ fakeFolder.setServerOverride([&](QNetworkAccessManager::Operation op, const QNetworkRequest &, QIODevice *) {
+ if (op == QNetworkAccessManager::PutOperation) {
+ ++nPUT;
+ }
+
+ if (op == QNetworkAccessManager::DeleteOperation) {
+ ++nDELETE;
+ }
+ return nullptr;
+ });
+
+ fakeFolder.remoteModifier().permissions.setPermission(OCC::RemotePermissions::IsMounted);
+ fakeFolder.remoteModifier().permissions.setPermission(OCC::RemotePermissions::CanMove);
+ fakeFolder.remoteModifier().permissions.setPermission(OCC::RemotePermissions::CanWrite);
+ QVERIFY(fakeFolder.syncOnce());
+ QCOMPARE(fakeFolder.currentLocalState(), fakeFolder.remoteModifier());
+
+ fakeFolder.localModifier().insert("external/file", 100);
+ QVERIFY(fakeFolder.syncOnce());
+ QCOMPARE(fakeFolder.currentLocalState(), fakeFolder.currentRemoteState());
+ QCOMPARE(printDbData(fakeFolder.dbState()), printDbData(fakeFolder.remoteModifier()));
+ QCOMPARE(nPUT, 1);
+
+ fakeFolder.localModifier().rename("external/file", "external/file2");
+ fakeFolder.localModifier().rename("external/file2", "external/file3");
+ QVERIFY(fakeFolder.syncOnce());
+ QCOMPARE(fakeFolder.currentLocalState(), fakeFolder.currentRemoteState());
+ QCOMPARE(printDbData(fakeFolder.dbState()), printDbData(fakeFolder.remoteModifier()));
+ QCOMPARE(fakeFolder.remoteModifier().children.size(), 1);
+
+ QCOMPARE(fakeFolder.remoteModifier().children.size(), 1);
+ QCOMPARE(fakeFolder.remoteModifier().children.value("external").children.size(), 1);
+ QCOMPARE(fakeFolder.remoteModifier().children.value("external").children.value("file3").name, QStringLiteral("file3"));
+ QCOMPARE(nPUT, 1);
+ QCOMPARE(nDELETE, 0);
+ }
+
void testDuplicateFileId_data()
{
QTest::addColumn<QString>("prefix");