Skip to content

Commit

Permalink
co: Add role-level test registry modules
Browse files Browse the repository at this point in the history
  • Loading branch information
attakei committed Feb 24, 2024
1 parent 77fb7cf commit 20a7ad4
Show file tree
Hide file tree
Showing 5 changed files with 92 additions and 0 deletions.
1 change: 1 addition & 0 deletions tests/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
# noqa
27 changes: 27 additions & 0 deletions tests/conftest.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
import copy

import pytest
from docutils import nodes
from docutils.frontend import get_default_settings
from docutils.parsers.rst import Parser, roles
from docutils.utils import new_document


@pytest.fixture
def mocked_roles(monkeypatch):
_role_registry = copy.deepcopy(roles._role_registry)
monkeypatch.setattr(roles, "_role_registry", _role_registry)
yield


@pytest.fixture
def parse_text():
def _parse_text(source) -> nodes.document:
parser = Parser()
settings = get_default_settings(Parser)
settings.warning_stream = ""
document = new_document("test data", settings.copy())
parser.parse(source, document)
return document

return _parse_text
1 change: 1 addition & 0 deletions tests/test_registry/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
# noqa
31 changes: 31 additions & 0 deletions tests/test_registry/test_npm.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
import pytest
from docutils import nodes
from rst_package_refs.registry import npm


@pytest.fixture
def setup(mocked_roles):
npm.setup()
yield


@pytest.mark.parametrize(
"source,expected_url",
[
(":npm:`react`", "https://www.npmjs.com/package/react"),
],
)
def test_parse_ok(setup, parse_text, source, expected_url):
document = parse_text(source)
refs = list(document.findall(nodes.reference))
assert len(refs) == 1
assert refs[0]["refuri"] == expected_url
assert len(list(document.findall(nodes.problematic))) == 0


@pytest.mark.parametrize("source", [(":np:`react`")])
def test_parse_ng(setup, parse_text, source):
document = parse_text(source)
refs = list(document.findall(nodes.reference))
assert len(refs) == 0
assert len(list(document.findall(nodes.problematic))) > 0
32 changes: 32 additions & 0 deletions tests/test_registry/test_pypi.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
import pytest
from docutils import nodes
from rst_package_refs.registry import pypi


@pytest.fixture
def setup(mocked_roles):
pypi.setup()
yield


@pytest.mark.parametrize(
"source,expected_url",
[
(":pypi:`pip`", "https://pypi.org/project/pip"),
(":pypi:`rst-package-refs`", "https://pypi.org/project/rst-package-refs"),
],
)
def test_parse_ok(setup, parse_text, source, expected_url):
document = parse_text(source)
refs = list(document.findall(nodes.reference))
assert len(refs) == 1
assert refs[0]["refuri"] == expected_url
assert len(list(document.findall(nodes.problematic))) == 0


@pytest.mark.parametrize("source", [(":pyp:`rst-package-refs`")])
def test_parse_ng(setup, parse_text, source):
document = parse_text(source)
refs = list(document.findall(nodes.reference))
assert len(refs) == 0
assert len(list(document.findall(nodes.problematic))) > 0

0 comments on commit 20a7ad4

Please sign in to comment.