Skip to content

Commit 76b32ff

Browse files
committed
Improve test coverage
1 parent baa454d commit 76b32ff

File tree

2 files changed

+35
-15
lines changed

2 files changed

+35
-15
lines changed

graphene_sqlalchemy/registry.py

+11-13
Original file line numberDiff line numberDiff line change
@@ -44,21 +44,19 @@ def get_type_for_enum(self, sql_type):
4444
items = [(key.upper(), value.value)
4545
for key, value in sql_type.enum_class.__members__.items()]
4646
else:
47-
name = to_type_name(sql_type.name)
48-
if not name:
47+
name = sql_type.name
48+
if name:
49+
name = to_type_name(name)
50+
else:
4951
name = 'Enum{}'.format(len(self._registry_enums) + 1)
5052
items = [(key.upper(), key) for key in sql_type.enums]
51-
if name:
52-
gql_type = self._registry_enums.get(name)
53-
if gql_type:
54-
if dict(items) != {
55-
key: value.value for key, value
56-
in gql_type._meta.enum.__members__.items()}:
57-
raise TypeError(
58-
'Different enums with the same name {}'.format(name))
59-
else:
60-
name = 'Enum{}'.format(len(self._registry_enums) + 1)
61-
gql_type = None
53+
gql_type = self._registry_enums.get(name)
54+
if gql_type:
55+
if dict(items) != {
56+
key: value.value for key, value
57+
in gql_type._meta.enum.__members__.items()}:
58+
raise TypeError(
59+
'Different enums with the same name {}'.format(name))
6260
if not gql_type:
6361
gql_type = Enum(name, items)
6462
self._registry_enums[name] = gql_type

graphene_sqlalchemy/tests/test_converter.py

+24-2
Original file line numberDiff line numberDiff line change
@@ -81,9 +81,9 @@ def test_should_unicodetext_convert_string():
8181

8282
def test_should_enum_convert_enum():
8383
field = assert_column_conversion(
84-
types.Enum(enum.Enum('TwoNumbersPyEnum', 'one two')), graphene.Field)
84+
types.Enum('one', 'two'), graphene.Field)
8585
field_type = field.type()
86-
assert field_type.__class__.__name__ == 'TwoNumbersPyEnum'
86+
assert field_type.__class__.__name__.startswith('Enum')
8787
assert isinstance(field_type, graphene.Enum)
8888
assert hasattr(field_type, 'ONE')
8989
assert not hasattr(field_type, 'one')
@@ -96,6 +96,28 @@ def test_should_enum_convert_enum():
9696
assert hasattr(field_type, 'ONE')
9797
assert not hasattr(field_type, 'one')
9898
assert hasattr(field_type, 'TWO')
99+
field = assert_column_conversion(
100+
types.Enum(enum.Enum('TwoNumbersPyEnum', 'one two')), graphene.Field)
101+
field_type = field.type()
102+
assert field_type.__class__.__name__ == 'TwoNumbersPyEnum'
103+
assert isinstance(field_type, graphene.Enum)
104+
assert hasattr(field_type, 'ONE')
105+
assert not hasattr(field_type, 'one')
106+
assert hasattr(field_type, 'TWO')
107+
108+
109+
def test_should_conflicting_enum_raise_error():
110+
some_type = types.Enum(enum.Enum('ConflictingEnum', 'cat cow'))
111+
field = assert_column_conversion(some_type, graphene.Field)
112+
field_type = field.type()
113+
assert isinstance(field_type, graphene.Enum)
114+
assert hasattr(field_type, 'COW')
115+
same_type = types.Enum(enum.Enum('ConflictingEnum', 'cat cow'))
116+
field = assert_column_conversion(same_type, graphene.Field)
117+
assert field_type == field.type()
118+
conflicting_type = types.Enum(enum.Enum('ConflictingEnum', 'cat horse'))
119+
with raises(TypeError):
120+
assert_column_conversion(conflicting_type, graphene.Field)
99121

100122

101123
def test_should_small_integer_convert_int():

0 commit comments

Comments
 (0)