71 lines
2.3 KiB
Python
71 lines
2.3 KiB
Python
import os.path
|
|
import unittest
|
|
from unittest.mock import MagicMock
|
|
|
|
import ankisyncd.media
|
|
import helpers.collection_utils
|
|
|
|
|
|
class ServerMediaManagerTest(unittest.TestCase):
|
|
@classmethod
|
|
def setUpClass(cls):
|
|
cls.colutils = helpers.collection_utils.CollectionUtils()
|
|
|
|
@classmethod
|
|
def tearDownClass(cls):
|
|
cls.colutils.clean_up()
|
|
cls.colutils = None
|
|
|
|
# This test is currently expected to fail because the _logChanges
|
|
# method of the media manager does not exist anymore.
|
|
@unittest.expectedFailure
|
|
def test_upgrade(self):
|
|
col = self.colutils.create_empty_col()
|
|
cm = col.media
|
|
|
|
fpath = os.path.join(cm.dir(), "file")
|
|
with open(fpath + "A", "w") as f:
|
|
f.write("some contents")
|
|
with open(fpath + "B", "w") as f:
|
|
f.write("other contents")
|
|
cm._logChanges()
|
|
|
|
self.assertEqual(
|
|
set(cm.db.execute("SELECT fname, csum FROM media")),
|
|
{
|
|
("fileA", "53059abba1a72c7aff34a3eaf7fef10ed65541ce"),
|
|
("fileB", "a5ae546046d09559399c80fa7076fb10f1ce4bcd"),
|
|
},
|
|
)
|
|
cm.setLastUsn(161)
|
|
|
|
sm = ankisyncd.media.ServerMediaManager(col)
|
|
self.assertEqual(
|
|
list(sm.db.execute("SELECT fname, csum FROM media")),
|
|
list(cm.db.execute("SELECT fname, csum FROM media")),
|
|
)
|
|
self.assertEqual(cm.lastUsn(), sm.lastUsn())
|
|
self.assertEqual(
|
|
list(sm.db.execute("SELECT usn FROM media")),
|
|
[(161,), (161,)]
|
|
)
|
|
|
|
def test_mediaChanges_lastUsn_order(self):
|
|
col = self.colutils.create_empty_col()
|
|
col.media = ankisyncd.media.ServerMediaManager(col)
|
|
session = MagicMock()
|
|
session.name = 'test'
|
|
mh = ankisyncd.sync_app.SyncMediaHandler(col, session)
|
|
mh.col.media.addMedia(
|
|
(
|
|
('fileA', 101, '53059abba1a72c7aff34a3eaf7fef10ed65541ce'),
|
|
('fileB', 100, 'a5ae546046d09559399c80fa7076fb10f1ce4bcd'),
|
|
)
|
|
)
|
|
# anki assumes mh.col.media.lastUsn() == mh.mediaChanges()['data'][-1][1]
|
|
# ref: anki/sync.py:720 (commit cca3fcb2418880d0430a5c5c2e6b81ba260065b7)
|
|
self.assertEqual(
|
|
mh.mediaChanges(lastUsn=99)['data'][-1][1],
|
|
mh.col.media.lastUsn()
|
|
)
|