# -*- coding: utf-8 -*- import unittest import tempfile import os 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() 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 model = self.collection.models.byName(data["model"]) note = Note(self.collection, model) for name, value in data["fields"].items(): note[name] = value 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 = { "model": "Basic", "fields": { "Front": "The front", "Back": "The back", }, "tags": "Tag1 Tag2", } for idx in range(0, count): self.add_note(data)