Add test to detect file renames in external storage.

Signed-off-by: Camila Ayres <hello@camilasan.com>
This commit is contained in:
Camila Ayres 2024-06-05 20:31:41 +02:00
parent 591808f25e
commit 4afc033ee0
No known key found for this signature in database
GPG Key ID: 7A4A6121E88E2AD4

View File

@ -320,6 +320,49 @@ private slots:
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");