diff --git a/setup.cfg b/setup.cfg index 75765d7..451fa44 100644 --- a/setup.cfg +++ b/setup.cfg @@ -27,6 +27,7 @@ exclude = tests* [options.extras_require] tests = + pytest [pylint.MASTER] extension-pkg-whitelist=pydantic diff --git a/source/tests/test_transform.py b/source/tests/test_transform.py index e517485..e2d5faf 100644 --- a/source/tests/test_transform.py +++ b/source/tests/test_transform.py @@ -1,331 +1,300 @@ -import unittest +import pytest import datetime from xsbe import simple_node from xsbe import transform -class Transform(unittest.TestCase): - def test_flatten(self): - schema = """ - - - - Philip - - - - """ - document = """ - - Alan +def test_flatten(): + schema = """ + + + + Philip - """ - - parser = transform.create_transformer( - simple_node.loads(schema), - ignore_unexpected=True - ) - doc_node = simple_node.loads(document) - data = parser.transform_from_xml(doc_node) - - self.assertDictEqual( - data, - { - 'id': 21, - 'name': 'Alan' - } - ) - - def test_repeating(self): - schema = """ - - - - Philip - - - - """ - - document = """ + + + """ + + document = """ + + Alan + + """ + + parser = transform.create_transformer( + simple_node.loads(schema), + ignore_unexpected=True + ) + doc_node = simple_node.loads(document) + data = parser.transform_from_xml(doc_node) + + assert data == { + 'id': 21, + 'name': 'Alan' + } + + +def test_repeating(): + schema = """ + + - Alan - Also Alan + Philip - """ - - parser = transform.create_transformer( - simple_node.loads(schema), - ignore_unexpected=True - ) - doc_node = simple_node.loads(document) - data = parser.transform_from_xml(doc_node) - - self.assertDictEqual( - data, - {'people': ['Alan', 'Also Alan']} - ) - - def test_repeating_flatten(self): - schema = """ - - - - - Philip - - - - - """ - - document = """ + + + """ + + document = """ + + Alan + Also Alan + + """ + + parser = transform.create_transformer( + simple_node.loads(schema), + ignore_unexpected=True + ) + doc_node = simple_node.loads(document) + data = parser.transform_from_xml(doc_node) + + assert data =={'people': ['Alan', 'Also Alan']} + + +def test_repeating_flatten(): + schema = """ + + - - Alan - - - Also Alan - + + Philip + - """ - - parser = transform.create_transformer( - simple_node.loads(schema), - ignore_unexpected=True - ) - doc_node = simple_node.loads(document) - data = parser.transform_from_xml(doc_node) - - self.assertDictEqual( - data, - { - 'people': [ - { - 'name': 'Alan', - 'id': 21 - }, - { - 'name': 'Also Alan', - 'id': 22 - } - ] - } - ) - - def test_friendly_name(self): - schema = """ - - - - - - - - """ - - document = """ + + + """ + + document = """ + + + Alan + + + Also Alan + + + """ + + parser = transform.create_transformer( + simple_node.loads(schema), + ignore_unexpected=True + ) + doc_node = simple_node.loads(document) + data = parser.transform_from_xml(doc_node) + + assert data == { + 'people': [ + { + 'name': 'Alan', + 'id': 21 + }, + { + 'name': 'Also Alan', + 'id': 22 + } + ] + } + + +def test_friendly_name(): + schema = """ + + - + - """ - - parser = transform.create_transformer( - simple_node.loads(schema), - ignore_unexpected=True - ) - doc_node = simple_node.loads(document) - data = parser.transform_from_xml(doc_node) - - self.assertDictEqual( - data, - {'people': 'Alan'} - ) - - def test_friendly_name_duplicates_error(self): - schema = """ - - - - - - - - """ - - document = """ + + + """ + + document = """ + + + + """ + + parser = transform.create_transformer( + simple_node.loads(schema), + ignore_unexpected=True + ) + doc_node = simple_node.loads(document) + data = parser.transform_from_xml(doc_node) + + assert data == {'person': 'Alan'} + + +def test_friendly_name_duplicates_error(): + schema = """ + + - - + - """ - - parser = transform.create_transformer( - simple_node.loads(schema), - ignore_unexpected=True - ) - doc_node = simple_node.loads(document) - - self.assertRaises( - transform.DuplicateElement, - parser.transform_from_xml(doc_node) - ) - - -class TransformDataTypesInference(unittest.TestCase): - def test_int(self): - schema = """ - - - - 27 - - - - """ - - document = """ - - 28 + + + """ + + document = """ + + + + + """ + + parser = transform.create_transformer( + simple_node.loads(schema), + ignore_unexpected=True + ) + doc_node = simple_node.loads(document) + + with pytest.raises(transform.DuplicateElement): + parser.transform_from_xml(doc_node) + + +def test_int(): + schema = """ + + + + 27 - """ - - parser = transform.create_transformer( - simple_node.loads(schema), - ignore_unexpected=True - ) - doc_node = simple_node.loads(document) - data = parser.transform_from_xml(doc_node) - - self.assertDictEqual( - data, - { - 'value': 28, - } - ) - - def test_int_catch_error(self): - schema = """ - - - - 27 - - - - """ - - document = """ - - lorem ipsum dolor sit amet + + + """ + + document = """ + + 28 + + """ + + parser = transform.create_transformer( + simple_node.loads(schema), + ignore_unexpected=True + ) + doc_node = simple_node.loads(document) + data = parser.transform_from_xml(doc_node) + + assert data == { + 'value': 28, + } + + +def test_int_catch_error(): + schema = """ + + + + 27 - """ - - parser = transform.create_transformer( - simple_node.loads(schema), - ignore_unexpected=True - ) - doc_node = simple_node.loads(document) - - self.assertRaises( - ValueError, - parser.transform_from_xml(doc_node) - ) - - def test_float(self): - schema = """ - - - - 3.14159 - - - - """ - - document = """ - - 1.41421356237 + + + """ + + document = """ + + lorem ipsum dolor sit amet + + """ + + parser = transform.create_transformer( + simple_node.loads(schema), + ignore_unexpected=True + ) + doc_node = simple_node.loads(document) + + with pytest.raises(ValueError): + parser.transform_from_xml(doc_node) + + +def test_float(): + schema = """ + + + + 3.14159 - """ - - parser = transform.create_transformer( - simple_node.loads(schema), - ignore_unexpected=True - ) - doc_node = simple_node.loads(document) - data = parser.transform_from_xml(doc_node) - - self.assertDictEqual( - data, - { - 'value': 1.41421356237, - } - ) - - def test_string(self): - schema = """ - - - - lorem ipsum dolor sit amet - - - - """ - - document = """ - - +44012345678910 + + + """ + + document = """ + + 1.41421356237 + + """ + + parser = transform.create_transformer( + simple_node.loads(schema), + ignore_unexpected=True + ) + doc_node = simple_node.loads(document) + data = parser.transform_from_xml(doc_node) + + assert data == {'value': 1.41421356237} + + +def test_string(): + schema = """ + + + + lorem ipsum dolor sit amet - """ - - parser = transform.create_transformer( - simple_node.loads(schema), - ignore_unexpected=True - ) - doc_node = simple_node.loads(document) - data = parser.transform_from_xml(doc_node) - - self.assertDictEqual( - data, - { - 'value': '+44012345678910' - } - ) - - def test_date(self): - schema = """ - - - - 2020-12-30 - - - - """ - - document = """ - - 2020-12-31 + + + """ + + document = """ + + +44012345678910 + + """ + + parser = transform.create_transformer( + simple_node.loads(schema), + ignore_unexpected=True + ) + doc_node = simple_node.loads(document) + data = parser.transform_from_xml(doc_node) + + assert data == {'value': '+44012345678910'} + + +def test_date(): + schema = """ + + + + 2020-12-30 - """ - - parser = transform.create_transformer( - simple_node.loads(schema), - ignore_unexpected=True - ) - doc_node = simple_node.loads(document) - data = parser.transform_from_xml(doc_node) - - self.assertDictEqual( - data, - { - 'value': datetime.date(2020, 12, 31) - } - ) - - -if __name__ == '__main__': - unittest.main() + + + """ + + document = """ + + 2020-12-31 + + """ + + parser = transform.create_transformer( + simple_node.loads(schema), + ignore_unexpected=True + ) + doc_node = simple_node.loads(document) + data = parser.transform_from_xml(doc_node) + + assert data == {'value': datetime.datetime(2020, 12, 31)}