Skip to content

Commit 072f446

Browse files
committed
Update test coverage and error handlings
1 parent 6a3d0dd commit 072f446

File tree

5 files changed

+36
-8
lines changed

5 files changed

+36
-8
lines changed

src/sqlalchemyseed/class_registry.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,13 +26,14 @@
2626
from sqlalchemy.exc import NoInspectionAvailable
2727
from inspect import isclass
2828
from sqlalchemy import inspect
29+
from . import errors
2930

3031

3132
def parse_class_path(class_path: str):
3233
try:
3334
module_name, class_name = class_path.rsplit('.', 1)
3435
except ValueError:
35-
raise ValueError('Invalid module or class input format.')
36+
raise errors.ParseError('Invalid module or class input format.')
3637

3738
# if class_name not in classes:
3839
class_ = getattr(importlib.import_module(module_name), class_name)
@@ -67,7 +68,7 @@ def __getitem__(self, class_path: str):
6768

6869
@property
6970
def classes(self):
70-
return self._classes
71+
return tuple(self._classes)
7172

7273
def clear(self):
7374
self._classes.clear()

src/sqlalchemyseed/errors.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,3 +26,7 @@ class EmptyDataError(Exception):
2626
class InvalidKeyError(Exception):
2727
"""Raised when an invalid key is invoked"""
2828
pass
29+
30+
class ParseError(Exception):
31+
"""Raised when parsing string fails"""
32+
pass

src/sqlalchemyseed/loader.py

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,3 @@ def load_entities_from_csv(csv_filepath: str, model) -> dict:
8383
validator.SchemaValidator.validate(entities)
8484

8585
return entities
86-
87-
88-
if __name__ == '__main__':
89-
load_entities_from_yaml('tests/res/data.yaml')

tests/test_class_registry.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import unittest
2+
from src.sqlalchemyseed import errors
23

34
from src.sqlalchemyseed.class_registry import ClassRegistry
45

@@ -13,3 +14,15 @@ def test_register_class(self):
1314
class_registry.register_class('tests.models.Company')
1415
from tests.models import Company
1516
self.assertIs(class_registry['tests.models.Company'], Company)
17+
18+
def test_get_classes(self):
19+
class_registry = ClassRegistry()
20+
class_registry.register_class('tests.models.Company')
21+
self.assertIsNotNone(class_registry.classes)
22+
23+
def test_register_invalid_string_format(self):
24+
class_registry = ClassRegistry()
25+
self.assertRaises(
26+
errors.ParseError,
27+
lambda: class_registry.register_class('RandomString')
28+
)

tests/test_loader.py

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,24 @@ def test_load_entities_from_json(self):
1010
entities = load_entities_from_json('tests/res/data.json')
1111
self.assertEqual(len(entities), 6)
1212

13+
def test_load_entities_from_json_file_not_found(self):
14+
self.assertRaises(FileNotFoundError,
15+
lambda: load_entities_from_json('tests/res/non-existent-file'))
16+
1317
def test_load_entities_from_yaml(self):
1418
entities = load_entities_from_yaml('tests/res/data.yml')
1519
self.assertEqual(len(entities), 2)
1620

17-
def test_load_entities_from_csv(self):
18-
entities = load_entities_from_csv('tests/res/companies.csv', 'tests.models.Company')
21+
def test_load_entities_from_yaml_file_not_found(self):
22+
self.assertRaises(FileNotFoundError,
23+
lambda: load_entities_from_yaml('tests/res/non-existent-file'))
24+
25+
def test_load_entities_from_csv_input_class(self):
26+
from tests.models import Company
27+
entities = load_entities_from_csv(
28+
'tests/res/companies.csv', Company)
1929
self.assertEqual(len(entities['data']), 3)
30+
31+
def test_load_entities_from_csv_input_model_string(self):
32+
self.assertIsNotNone(load_entities_from_csv(
33+
'tests/res/companies.csv', "tests.models.Company"))

0 commit comments

Comments
 (0)