generated from jCloud/repository-template
Add tests for core.python.namespaces.PythonPackageNamespace
This commit is contained in:
@@ -0,0 +1,61 @@
|
|||||||
|
from src.jcloud_docsgen.core.python.namespaces import PythonPackageNamespace, PythonModuleNamespace
|
||||||
|
import pytest
|
||||||
|
from src.jcloud_docsgen.exceptions import NamespaceNotFoundError, InvalidNamespaceError
|
||||||
|
|
||||||
|
class StrSubclass(str): ...
|
||||||
|
|
||||||
|
@pytest.mark.parametrize('namespace,expected_name', [
|
||||||
|
(PythonPackageNamespace('', {}), ''),
|
||||||
|
(PythonPackageNamespace(' ', {}), ' '),
|
||||||
|
(PythonPackageNamespace('a', {}), 'a'),
|
||||||
|
(PythonPackageNamespace('1', {}), '1'),
|
||||||
|
(PythonPackageNamespace(StrSubclass(''), {}), StrSubclass('')),
|
||||||
|
])
|
||||||
|
def test_PythonPackageNamespace_name_attribute(namespace, expected_name):
|
||||||
|
assert namespace.name == expected_name
|
||||||
|
|
||||||
|
namespace_b = PythonModuleNamespace('b')
|
||||||
|
namespace_a = PythonPackageNamespace('a', {
|
||||||
|
'b': namespace_b
|
||||||
|
})
|
||||||
|
namespace_c = PythonModuleNamespace('c')
|
||||||
|
namespace_k = PythonModuleNamespace('k')
|
||||||
|
namespace_j = PythonPackageNamespace('j', {'k': namespace_k})
|
||||||
|
namespace_i = PythonPackageNamespace('i', {'j': namespace_j})
|
||||||
|
namespace_h = PythonPackageNamespace('h', {'i': namespace_i})
|
||||||
|
namespace_g = PythonPackageNamespace('g', {'h': namespace_h})
|
||||||
|
namespace_f = PythonPackageNamespace('f', {'g': namespace_g})
|
||||||
|
namespace_e = PythonPackageNamespace('e', {'f': namespace_f})
|
||||||
|
namespace_d = PythonPackageNamespace('d', {'e': namespace_e})
|
||||||
|
|
||||||
|
@pytest.mark.parametrize('namespace,sub_namespaces,expected', [
|
||||||
|
(PythonPackageNamespace('', {
|
||||||
|
'a': namespace_a,
|
||||||
|
'c': namespace_c
|
||||||
|
}), ['c'], namespace_c),
|
||||||
|
(PythonPackageNamespace('', {
|
||||||
|
'a': namespace_a,
|
||||||
|
'c': namespace_c
|
||||||
|
}), ['a'], namespace_a),
|
||||||
|
(PythonPackageNamespace('', {
|
||||||
|
'a': namespace_a,
|
||||||
|
'c': namespace_c
|
||||||
|
}), ['a', 'b'], namespace_b),
|
||||||
|
(namespace_d, ['e', 'f', 'g', 'h', 'i'], namespace_i),
|
||||||
|
(namespace_d, ['e', 'f', 'g', 'h', 'i', 'j'], namespace_j),
|
||||||
|
(namespace_d, ['e', 'f', 'g', 'h', 'i', 'j', 'k'], namespace_k),
|
||||||
|
])
|
||||||
|
def test_PythonPackageNamespace_namespace(namespace: PythonPackageNamespace, sub_namespaces, expected):
|
||||||
|
assert namespace.namespace(sub_namespaces) == expected
|
||||||
|
|
||||||
|
@pytest.mark.parametrize('namespace,sub_namespaces,expected_exception,expected_exception_msg', [
|
||||||
|
(namespace_a, ['c'], NamespaceNotFoundError, 'no such namespace: c'),
|
||||||
|
(namespace_h, ['i', 'k'], NamespaceNotFoundError, 'no such namespace: k'),
|
||||||
|
(namespace_a, ['b', ''], InvalidNamespaceError, 'invalid namespace'),
|
||||||
|
(namespace_a, ['', 'b'], InvalidNamespaceError, 'invalid namespace'),
|
||||||
|
(namespace_a, ['b', '', 'b'], InvalidNamespaceError, 'invalid namespace'),
|
||||||
|
])
|
||||||
|
def test_PythonPackageNamespace_namespace_exceptions(namespace, sub_namespaces, expected_exception, expected_exception_msg):
|
||||||
|
with pytest.raises(expected_exception) as exc_info:
|
||||||
|
namespace.namespace(sub_namespaces)
|
||||||
|
assert str(exc_info.value) == expected_exception_msg
|
||||||
Reference in New Issue
Block a user