1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
|
# 3rd party
from docutils import nodes
# this package
from sphinx_toolbox import wikipedia
from sphinx_toolbox.testing import run_setup
from tests.common import get_app_config_values
def test_make_wikipedia_link(monkeypatch):
monkeypatch.setattr(wikipedia, "_get_wikipedia_lang", lambda *args: "en")
generated_nodes, warnings = wikipedia.make_wikipedia_link(
"wikipedia",
":wikipedia:`Python (programming language)`",
"Python (programming language)",
lineno=27,
inliner=None, # type: ignore[arg-type]
)
assert isinstance(generated_nodes, list)
assert generated_nodes
assert isinstance(generated_nodes[0], nodes.reference)
assert generated_nodes[0].rawsource == ":wikipedia:`Python (programming language)`"
assert generated_nodes[0].astext() == "Python (programming language)"
assert generated_nodes[0]["refuri"] == "https://en.wikipedia.org/wiki/Python_%28programming_language%29"
assert isinstance(warnings, list)
assert not warnings
def test_make_wikipedia_link_lang(monkeypatch):
generated_nodes, warnings = wikipedia.make_wikipedia_link(
"wikipedia",
":wikipedia:`:zh:斯芬克斯`",
":zh:斯芬克斯",
lineno=27,
inliner=None, # type: ignore[arg-type]
)
assert isinstance(generated_nodes, list)
assert generated_nodes
assert isinstance(generated_nodes[0], nodes.reference)
assert generated_nodes[0].rawsource == ":wikipedia:`:zh:斯芬克斯`"
assert generated_nodes[0].astext() == "斯芬克斯"
assert generated_nodes[0]["refuri"] == "https://zh.wikipedia.org/wiki/%E6%96%AF%E8%8A%AC%E5%85%8B%E6%96%AF"
assert isinstance(warnings, list)
assert not warnings
def test_make_wikipedia_link_with_label(monkeypatch):
monkeypatch.setattr(wikipedia, "_get_wikipedia_lang", lambda *args: "en")
generated_nodes, warnings = wikipedia.make_wikipedia_link(
"wikipedia",
":wikipedia:`Python <Python (programming language)>`",
"Python <Python (programming language)>",
lineno=27,
inliner=None, # type: ignore[arg-type]
)
assert isinstance(generated_nodes, list)
assert generated_nodes
assert isinstance(generated_nodes[0], nodes.reference)
assert generated_nodes[0].rawsource == ":wikipedia:`Python <Python (programming language)>`"
assert generated_nodes[0].astext() == "Python"
assert generated_nodes[0]["refuri"] == "https://en.wikipedia.org/wiki/Python_%28programming_language%29"
assert isinstance(warnings, list)
assert not warnings
def test_setup():
setup_ret, directives, roles, additional_nodes, app = run_setup(wikipedia.setup)
assert roles == {"wikipedia": wikipedia.make_wikipedia_link}
assert get_app_config_values(app.config.values["wikipedia_lang"]) == ("en", "env", [str])
assert app.registry.source_parsers == {}
|