From 7e0061b4d99e8a23734bdd6d9a83942eb73c5793 Mon Sep 17 00:00:00 2001 From: Elena ``of Valhalla'' Grandi Date: Mon, 5 Oct 2020 08:15:18 +0200 Subject: Start testing lesana derivatives --- .../items/48d73d796c0b47af964722e154fe879c.yaml | 2 ++ tests/data/derivative/settings.yaml | 9 +++++ tests/test_derivatives.py | 40 ++++++++++++++++++++++ tests/test_types.py | 32 ++++++++++------- 4 files changed, 70 insertions(+), 13 deletions(-) create mode 100644 tests/data/derivative/items/48d73d796c0b47af964722e154fe879c.yaml create mode 100644 tests/data/derivative/settings.yaml create mode 100644 tests/test_derivatives.py (limited to 'tests') diff --git a/tests/data/derivative/items/48d73d796c0b47af964722e154fe879c.yaml b/tests/data/derivative/items/48d73d796c0b47af964722e154fe879c.yaml new file mode 100644 index 0000000..9da6b21 --- /dev/null +++ b/tests/data/derivative/items/48d73d796c0b47af964722e154fe879c.yaml @@ -0,0 +1,2 @@ +name: 'An item' +unknown: 'future' diff --git a/tests/data/derivative/settings.yaml b/tests/data/derivative/settings.yaml new file mode 100644 index 0000000..5f3f826 --- /dev/null +++ b/tests/data/derivative/settings.yaml @@ -0,0 +1,9 @@ +name: "Derivative lesana collection" +lang: 'english' +fields: + - name: name + type: string + index: free + - name: unknown + type: derived + index: free diff --git a/tests/test_derivatives.py b/tests/test_derivatives.py new file mode 100644 index 0000000..f79123c --- /dev/null +++ b/tests/test_derivatives.py @@ -0,0 +1,40 @@ +import shutil +import tempfile +import unittest + +import lesana +from lesana import types + + +class DerivedType(types.LesanaString): + """ + A custom type + """ + name = 'derived' + + +class Derivative(lesana.Collection): + """ + A class serived from lesana.Collection + """ + + +class testDerivatives(unittest.TestCase): + def setUp(self): + self.tmpdir = tempfile.mkdtemp() + shutil.copytree( + 'tests/data/derivative', + self.tmpdir, + dirs_exist_ok=True + ) + self.collection = Derivative(self.tmpdir) + + def tearDown(self): + shutil.rmtree(self.tmpdir) + + def test_load_subclasses(self): + self.assertIsInstance(self.collection.fields['unknown'], DerivedType) + + +if __name__ == '__main__': + unittest.main() diff --git a/tests/test_types.py b/tests/test_types.py index f27089d..363d9a4 100644 --- a/tests/test_types.py +++ b/tests/test_types.py @@ -12,8 +12,14 @@ class testTypes(unittest.TestCase): def tearDown(self): pass + def _get_field_def(self, type_name): + return { + 'type': type_name, + 'name': 'test_field', + } + def test_base(self): - checker = types.LesanaType() + checker = types.LesanaType(self._get_field_def('base')) # The base class does not implement empty nor load with self.assertRaises(NotImplementedError): @@ -23,7 +29,7 @@ class testTypes(unittest.TestCase): checker.load("") def test_string(self): - checker = types.LesanaString() + checker = types.LesanaString(self._get_field_def('string')) s = checker.empty() self.assertEqual(s, "") @@ -35,7 +41,7 @@ class testTypes(unittest.TestCase): self.assertEqual(s, None) def test_text(self): - checker = types.LesanaText() + checker = types.LesanaText(self._get_field_def('text')) s = checker.empty() self.assertEqual(s, "") @@ -47,7 +53,7 @@ class testTypes(unittest.TestCase): self.assertEqual(s, None) def test_int(self): - checker = types.LesanaInt() + checker = types.LesanaInt(self._get_field_def('integer')) v = checker.empty() self.assertEqual(v, 0) @@ -66,7 +72,7 @@ class testTypes(unittest.TestCase): self.assertEqual(v, None) def test_float(self): - checker = types.LesanaFloat() + checker = types.LesanaFloat(self._get_field_def('float')) v = checker.empty() self.assertEqual(v, 0.0) @@ -88,7 +94,7 @@ class testTypes(unittest.TestCase): self.assertEqual(v, None) def test_decimal(self): - checker = types.LesanaDecimal() + checker = types.LesanaDecimal(self._get_field_def('decimal')) v = checker.empty() self.assertEqual(v, decimal.Decimal(0)) @@ -110,7 +116,7 @@ class testTypes(unittest.TestCase): self.assertEqual(v, None) def test_timestamp(self): - checker = types.LesanaTimestamp() + checker = types.LesanaTimestamp(self._get_field_def('timestamp')) v = checker.empty() self.assertEqual(v, None) @@ -136,7 +142,7 @@ class testTypes(unittest.TestCase): self.assertEqual(v, None) def test_datetime(self): - checker = types.LesanaDatetime() + checker = types.LesanaDatetime(self._get_field_def('datetime')) v = checker.empty() self.assertEqual(v, None) @@ -165,7 +171,7 @@ class testTypes(unittest.TestCase): self.assertEqual(v, None) def test_date(self): - checker = types.LesanaDate() + checker = types.LesanaDate(self._get_field_def('date')) v = checker.empty() self.assertEqual(v, None) @@ -194,7 +200,7 @@ class testTypes(unittest.TestCase): self.assertEqual(v, None) def test_boolean(self): - checker = types.LesanaBoolean() + checker = types.LesanaBoolean(self._get_field_def('boolean')) v = checker.empty() self.assertEqual(v, None) @@ -210,7 +216,7 @@ class testTypes(unittest.TestCase): self.assertEqual(v, None) def test_file(self): - checker = types.LesanaFile() + checker = types.LesanaFile(self._get_field_def('file')) v = checker.empty() self.assertEqual(v, "") @@ -224,7 +230,7 @@ class testTypes(unittest.TestCase): # TODO: check for invalid file paths def test_url(self): - checker = types.LesanaURL() + checker = types.LesanaURL(self._get_field_def('url')) v = checker.empty() self.assertEqual(v, "") @@ -238,7 +244,7 @@ class testTypes(unittest.TestCase): # TODO: check for invalid URLs def test_yaml(self): - checker = types.LesanaYAML() + checker = types.LesanaYAML(self._get_field_def('yaml')) v = checker.empty() self.assertEqual(v, None) -- cgit v1.2.3