diff --git a/graphene_sqlalchemy/converter.py b/graphene_sqlalchemy/converter.py index 2b463f4c..15ed761b 100644 --- a/graphene_sqlalchemy/converter.py +++ b/graphene_sqlalchemy/converter.py @@ -87,7 +87,8 @@ def convert_sqlalchemy_type(type, column, registry=None): @convert_sqlalchemy_type.register(postgresql.ENUM) @convert_sqlalchemy_type.register(postgresql.UUID) def convert_column_to_string(type, column, registry=None): - return String(description=column.doc, required=not(column.nullable)) + return String(description=getattr(column, 'doc', None), + required=not(getattr(column, 'nullable', True))) @convert_sqlalchemy_type.register(types.SmallInteger) diff --git a/graphene_sqlalchemy/tests/test_converter.py b/graphene_sqlalchemy/tests/test_converter.py index 67f3ecd6..4eb26b4e 100644 --- a/graphene_sqlalchemy/tests/test_converter.py +++ b/graphene_sqlalchemy/tests/test_converter.py @@ -1,8 +1,9 @@ from py.test import raises -from sqlalchemy import Column, Table, types +from sqlalchemy import Column, Table, case, types from sqlalchemy.dialects import postgresql from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import composite +from sqlalchemy.sql.elements import Label from sqlalchemy_utils import ChoiceType, ScalarListType import graphene @@ -106,6 +107,12 @@ def test_should_numeric_convert_float(): assert_column_conversion(types.Numeric(), graphene.Float) +def test_should_label_convert_string(): + label = Label('label_test', case([], else_="foo"), type_=types.Unicode()) + graphene_type = convert_sqlalchemy_column(label) + assert isinstance(graphene_type, graphene.String) + + def test_should_choice_convert_enum(): TYPES = [ (u'es', u'Spanish'),