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)}