Add test for #44

This commit is contained in:
flan 2019-11-14 01:17:43 +01:00
parent c07fe0e65c
commit c4730b1596
2 changed files with 49 additions and 1 deletions

View File

@ -8,7 +8,8 @@ mediamanager_orig_funcs = {
"findChanges": None,
"mediaChangesZip": None,
"addFilesFromZip": None,
"syncDelete": None
"syncDelete": None,
"_logChanges": None,
}
db_orig_funcs = {
@ -28,6 +29,7 @@ def monkeypatch_mediamanager():
mediamanager_orig_funcs["mediaChangesZip"] = MediaManager.mediaChangesZip
mediamanager_orig_funcs["addFilesFromZip"] = MediaManager.addFilesFromZip
mediamanager_orig_funcs["syncDelete"] = MediaManager.syncDelete
mediamanager_orig_funcs["_logChanges"] = MediaManager._logChanges
def wrapper(instance, *args):
old_cwd = os.getcwd()
@ -43,6 +45,7 @@ def monkeypatch_mediamanager():
MediaManager.mediaChangesZip = make_cwd_safe(MediaManager.mediaChangesZip)
MediaManager.addFilesFromZip = make_cwd_safe(MediaManager.addFilesFromZip)
MediaManager.syncDelete = make_cwd_safe(MediaManager.syncDelete)
MediaManager._logChanges = make_cwd_safe(MediaManager._logChanges)
def unpatch_mediamanager():
@ -52,11 +55,13 @@ def unpatch_mediamanager():
MediaManager.mediaChangesZip = mediamanager_orig_funcs["mediaChangesZip"]
MediaManager.addFilesFromZip = mediamanager_orig_funcs["addFilesFromZip"]
MediaManager.syncDelete = mediamanager_orig_funcs["syncDelete"]
MediaManager._logChanges = mediamanager_orig_funcs["_logChanges"]
mediamanager_orig_funcs["findChanges"] = None
mediamanager_orig_funcs["mediaChangesZip"] = None
mediamanager_orig_funcs["mediaChangesZip"] = None
mediamanager_orig_funcs["mediaChangesZip"] = None
mediamanager_orig_funcs["_logChanges"] = None
def monkeypatch_db():

View File

@ -355,3 +355,46 @@ class SyncAppFunctionalMediaTest(SyncAppFunctionalTestBase):
dbpath
))
os.unlink(dbpath)
def test_sync_mediaChanges(self):
client = self.client_syncer
client2 = self.create_client_syncer(self.colutils.create_empty_col(), self.hkey, self.server_test_app)
server = helpers.server_utils.get_syncer_for_hkey(self.server_app, self.hkey, 'media')
self.assertEqual(server.mediaChanges(lastUsn=client.col.media.lastUsn())['data'], [])
helpers.server_utils.add_files_to_mediasyncer(client, [
helpers.file_utils.create_named_file("a", "lastUsn a"),
helpers.file_utils.create_named_file("b", "lastUsn b"),
helpers.file_utils.create_named_file("c", "lastUsn c"),
], update_db=True)
self.assertEqual(client.sync(), "OK")
self.assertEqual(server.mediaChanges(lastUsn=client.col.media.lastUsn())['data'], [])
self.assertEqual(client2.sync(), "OK")
os.remove(os.path.join(client2.col.media.dir(), "c"))
client2.col.media._logChanges()
self.assertEqual(client2.sync(), "OK")
server.col.media._logChanges()
self.assertEqual(server.mediaChanges(lastUsn=client.col.media.lastUsn())['data'], [['c', 4, None]])
self.assertEqual(client.sync(), "OK")
self.assertEqual(server.mediaChanges(lastUsn=client.col.media.lastUsn())['data'], [])
helpers.server_utils.add_files_to_mediasyncer(client, [
helpers.file_utils.create_named_file("d", "lastUsn d"),
], update_db=True)
client.col.media._logChanges()
self.assertEqual(client.sync(), "OK")
self.assertEqual(server.mediaChanges(lastUsn=client2.col.media.lastUsn())['data'], [['d', 5, server.col.media._checksum(os.path.join(server.col.media.dir(), "d"))]])
self.assertEqual(client2.sync(), "OK")
self.assertEqual(server.mediaChanges(lastUsn=client2.col.media.lastUsn())['data'], [])
dpath = os.path.join(client.col.media.dir(), "d")
with open(dpath, "a") as f:
f.write("\nsome change")
# files with the same mtime and name are considered equivalent by anki.media.MediaManager._changes
os.utime(dpath, (315529200, 315529200))
client.col.media._logChanges()
self.assertEqual(client.sync(), "OK")
self.assertEqual(server.mediaChanges(lastUsn=client2.col.media.lastUsn())['data'], [['d', 6, server.col.media._checksum(os.path.join(server.col.media.dir(), "d"))]])
self.assertEqual(client2.sync(), "OK")
self.assertEqual(server.mediaChanges(lastUsn=client2.col.media.lastUsn())['data'], [])