58 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			58 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
# -*- 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)
 |