import os import aqt import pytest from conftest import ac, anki_connect_config_loaded, \ set_up_test_deck_and_test_model_and_two_notes, \ current_decks_and_models_etc_preserved, wait # version is retrieved from config def test_version(session_with_profile_loaded): with anki_connect_config_loaded( session=session_with_profile_loaded, web_bind_port=0, ): assert ac.version() == 6 def test_reloadCollection(setup): ac.reloadCollection() def test_apiReflect(setup): result = ac.apiReflect( scopes=["actions", "invalidType"], actions=["apiReflect", "invalidMethod"] ) assert result == { "scopes": ["actions"], "actions": ["apiReflect"] } class TestProfiles: def test_getProfiles(self, session_with_profile_loaded): result = ac.getProfiles() assert result == ["test_user"] # waiting a little while gets rid of the cryptic warning: # Qt warning: QXcbConnection: XCB error: 8 (BadMatch), sequence: 658, # resource id: 2097216, major code: 42 (SetInputFocus), minor code: 0 def test_loadProfile(self, session_with_profile_loaded): aqt.mw.unloadProfileAndShowProfileManager() wait(0.1) ac.loadProfile(name="test_user") class TestExportImport: # since Anki 2.1.50, exporting media for some wild reason # will change the current working directory, which then gets removed. # see `exporting.py`, ctrl-f `os.chdir(self.mediaDir)` @pytest.fixture(autouse=True) def current_working_directory_preserved(self): cwd = os.getcwd() yield try: os.getcwd() except FileNotFoundError: os.chdir(cwd) def test_exportPackage(self, session_with_profile_loaded, setup): filename = session_with_profile_loaded.base + "/export.apkg" ac.exportPackage(deck="test_deck", path=filename) def test_importPackage(self, session_with_profile_loaded): filename = session_with_profile_loaded.base + "/export.apkg" with current_decks_and_models_etc_preserved(): set_up_test_deck_and_test_model_and_two_notes() ac.exportPackage(deck="test_deck", path=filename) with current_decks_and_models_etc_preserved(): assert "test_deck" not in ac.deckNames() ac.importPackage(path=filename) assert "test_deck" in ac.deckNames()