anki-sync-server/tests/collection_test_base.py

58 lines
1.6 KiB
Python
Raw Normal View History

# -*- coding: utf-8 -*-
import unittest
import tempfile
import os
2017-11-04 09:15:40 +08:00
from unittest.mock import MagicMock
import shutil
import anki
import anki.storage
from ankisyncd.collection import CollectionManager
class CollectionTestBase(unittest.TestCase):
"""Parent class for tests that need a collection set up and torn down."""
def setUp(self):
self.temp_dir = tempfile.mkdtemp()
2022-10-15 03:07:21 +08:00
self.collection_path = os.path.join(self.temp_dir, "collection.anki2")
cm = CollectionManager({})
collectionWrapper = cm.get_collection(self.collection_path)
self.collection = collectionWrapper._get_collection()
self.mock_app = MagicMock()
def tearDown(self):
self.collection.close()
self.collection = None
shutil.rmtree(self.temp_dir)
self.mock_app.reset_mock()
# TODO: refactor into some kind of utility
def add_note(self, data):
from anki.notes import Note
2022-10-15 03:07:21 +08:00
model = self.collection.models.byName(data["model"])
note = Note(self.collection, model)
2022-10-15 03:07:21 +08:00
for name, value in data["fields"].items():
note[name] = value
2022-10-15 03:07:21 +08:00
if "tags" in data:
note.setTagsFromStr(data["tags"])
self.collection.addNote(note)
# TODO: refactor into a parent class
def add_default_note(self, count=1):
data = {
2022-10-15 03:07:21 +08:00
"model": "Basic",
"fields": {
"Front": "The front",
"Back": "The back",
},
2022-10-15 03:07:21 +08:00
"tags": "Tag1 Tag2",
}
for idx in range(0, count):
self.add_note(data)