Skip to content

Commit

Permalink
Add test for #44
Browse files Browse the repository at this point in the history
  • Loading branch information
tsudoko committed Jan 4, 2020
1 parent c07fe0e commit c4730b1
Show file tree
Hide file tree
Showing 2 changed files with 49 additions and 1 deletion.
7 changes: 6 additions & 1 deletion tests/helpers/monkey_patches.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,8 @@
"findChanges": None,
"mediaChangesZip": None,
"addFilesFromZip": None,
"syncDelete": None
"syncDelete": None,
"_logChanges": None,
}

db_orig_funcs = {
Expand All @@ -28,6 +29,7 @@ def make_cwd_safe(original_func):
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()
Expand All @@ -43,6 +45,7 @@ def wrapper(instance, *args):
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():
Expand All @@ -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():
Expand Down
43 changes: 43 additions & 0 deletions tests/test_web_media.py
Original file line number Diff line number Diff line change
Expand Up @@ -355,3 +355,46 @@ def test_sync_compare_database_to_expected(self):
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'], [])

0 comments on commit c4730b1

Please sign in to comment.