8f1a2cc5fd
Previously, tests were run against Anki launched by user. Now, * most tests run against isolated Anki in current process; * tests in `test_server.py` launch another Anki in a separate process and run a few commands to test the server; * nearly all tests were preserved in the sense that what was being tested is tested still. A few tests in `test_graphical.py` are skipped due to a problem with the method tests, see the comments; * tests can be run: * In a single profile, using --no-tear-down-profile-after-each-test; * In a single app instance, but with the profile being torn down after each test--default; * In separate processes, using --forked.
74 lines
2.1 KiB
Python
Executable File
74 lines
2.1 KiB
Python
Executable File
import pytest
|
|
|
|
from conftest import ac
|
|
|
|
|
|
def test_deckNames(session_with_profile_loaded):
|
|
result = ac.deckNames()
|
|
assert result == ["Default"]
|
|
|
|
|
|
def test_deckNamesAndIds(session_with_profile_loaded):
|
|
result = ac.deckNamesAndIds()
|
|
assert result == {"Default": 1}
|
|
|
|
|
|
def test_createDeck(session_with_profile_loaded):
|
|
ac.createDeck("foo")
|
|
assert {*ac.deckNames()} == {"Default", "foo"}
|
|
|
|
|
|
def test_changeDeck(setup):
|
|
ac.changeDeck(cards=setup.card_ids, deck="bar")
|
|
assert "bar" in ac.deckNames()
|
|
|
|
|
|
def test_deleteDeck(setup):
|
|
before = ac.deckNames()
|
|
ac.deleteDecks(decks=["test_deck"], cardsToo=True)
|
|
after = ac.deckNames()
|
|
assert {*before} - {*after} == {"test_deck"}
|
|
|
|
|
|
@pytest.mark.skipif(
|
|
condition=ac._anki21_version < 28,
|
|
reason=f"Not applicable to Anki < 2.1.28"
|
|
)
|
|
def test_deleteDeck_must_be_called_with_cardsToo_set_to_True_on_later_api(setup):
|
|
with pytest.raises(Exception):
|
|
ac.deleteDecks(decks=["test_deck"])
|
|
with pytest.raises(Exception):
|
|
ac.deleteDecks(decks=["test_deck"], cardsToo=False)
|
|
|
|
|
|
def test_getDeckConfig(session_with_profile_loaded):
|
|
result = ac.getDeckConfig(deck="Default")
|
|
assert result["name"] == "Default"
|
|
|
|
|
|
def test_saveDeckConfig(session_with_profile_loaded):
|
|
config = ac.getDeckConfig(deck="Default")
|
|
result = ac.saveDeckConfig(config=config)
|
|
assert result is True
|
|
|
|
|
|
def test_setDeckConfigId(session_with_profile_loaded):
|
|
result = ac.setDeckConfigId(decks=["Default"], configId=1)
|
|
assert result is True
|
|
|
|
|
|
def test_cloneDeckConfigId(session_with_profile_loaded):
|
|
result = ac.cloneDeckConfigId(cloneFrom=1, name="test")
|
|
assert isinstance(result, int)
|
|
|
|
|
|
def test_removedDeckConfigId(session_with_profile_loaded):
|
|
new_config_id = ac.cloneDeckConfigId(cloneFrom=1, name="test")
|
|
assert ac.removeDeckConfigId(configId=new_config_id) is True
|
|
|
|
|
|
def test_removedDeckConfigId_fails_with_invalid_id(session_with_profile_loaded):
|
|
new_config_id = ac.cloneDeckConfigId(cloneFrom=1, name="test")
|
|
assert ac.removeDeckConfigId(configId=new_config_id) is True
|
|
assert ac.removeDeckConfigId(configId=new_config_id) is False
|