mirror of
https://github.com/nextcloud/desktop.git
synced 2024-10-23 04:45:43 +03:00
add extra tests for lock files to better capture desired behavior
Signed-off-by: Matthieu Gallien <matthieu.gallien@nextcloud.com>
This commit is contained in:
parent
d371855e56
commit
a378c4d80a
1 changed files with 61 additions and 0 deletions
|
@ -570,6 +570,67 @@ private slots:
|
|||
QVERIFY(fakeFolder.syncJournal().getFileRecord(QStringLiteral("A/a1"), &fileRecordUnlocked));
|
||||
QVERIFY(fileRecordUnlocked._lockstate._locked);
|
||||
}
|
||||
|
||||
void testSyncLockedFiles()
|
||||
{
|
||||
FakeFolder fakeFolder{ FileInfo::A12_B12_C12_S12() };
|
||||
QCOMPARE(fakeFolder.currentLocalState(), fakeFolder.currentRemoteState());
|
||||
|
||||
int nGET = 0, nPUT = 0;
|
||||
QObject parent;
|
||||
fakeFolder.setServerOverride([&](QNetworkAccessManager::Operation op, const QNetworkRequest &request, QIODevice *outgoingData) -> QNetworkReply * {
|
||||
Q_UNUSED(outgoingData)
|
||||
Q_UNUSED(request)
|
||||
|
||||
if (op == QNetworkAccessManager::PutOperation) {
|
||||
++nPUT;
|
||||
} else if (op == QNetworkAccessManager::GetOperation) {
|
||||
++nGET;
|
||||
}
|
||||
|
||||
return nullptr;
|
||||
});
|
||||
|
||||
ItemCompletedSpy completeSpy(fakeFolder);
|
||||
|
||||
completeSpy.clear();
|
||||
QVERIFY(fakeFolder.syncOnce());
|
||||
QCOMPARE(nGET, 0);
|
||||
QCOMPARE(nPUT, 0);
|
||||
|
||||
QCOMPARE(completeSpy.findItem(QStringLiteral("A/a1"))->_locked, OCC::SyncFileItem::LockStatus::UnlockedItem);
|
||||
OCC::SyncJournalFileRecord fileRecordBefore;
|
||||
QVERIFY(fakeFolder.syncJournal().getFileRecord(QStringLiteral("A/a1"), &fileRecordBefore));
|
||||
QVERIFY(!fileRecordBefore._lockstate._locked);
|
||||
|
||||
fakeFolder.remoteModifier().modifyLockState(QStringLiteral("A/a1"), FileModifier::LockState::FileLocked, 1, QStringLiteral("Nextcloud Office"), {}, QStringLiteral("richdocuments"), QDateTime::currentDateTime().toSecsSinceEpoch(), 1226);
|
||||
fakeFolder.remoteModifier().setModTimeKeepEtag(QStringLiteral("A/a1"), QDateTime::currentDateTime());
|
||||
fakeFolder.remoteModifier().appendByte(QStringLiteral("A/a1"));
|
||||
|
||||
completeSpy.clear();
|
||||
QVERIFY(fakeFolder.syncOnce());
|
||||
|
||||
QCOMPARE(nGET, 1);
|
||||
QCOMPARE(nPUT, 0);
|
||||
|
||||
QCOMPARE(completeSpy.findItem(QStringLiteral("A/a1"))->_locked, OCC::SyncFileItem::LockStatus::LockedItem);
|
||||
OCC::SyncJournalFileRecord fileRecordLocked;
|
||||
QVERIFY(fakeFolder.syncJournal().getFileRecord(QStringLiteral("A/a1"), &fileRecordLocked));
|
||||
QVERIFY(fileRecordLocked._lockstate._locked);
|
||||
|
||||
completeSpy.clear();
|
||||
QVERIFY(fakeFolder.syncOnce());
|
||||
|
||||
QCOMPARE(nGET, 1);
|
||||
QCOMPARE(nPUT, 0);
|
||||
|
||||
OCC::SyncJournalFileRecord fileRecordAfter;
|
||||
QVERIFY(fakeFolder.syncJournal().getFileRecord(QStringLiteral("A/a1"), &fileRecordAfter));
|
||||
QVERIFY(fileRecordAfter._lockstate._locked);
|
||||
|
||||
auto expectedState = fakeFolder.currentLocalState();
|
||||
QCOMPARE(fakeFolder.currentRemoteState(), expectedState);
|
||||
}
|
||||
};
|
||||
|
||||
QTEST_GUILESS_MAIN(TestLockFile)
|
||||
|
|
Loading…
Reference in a new issue