mirror of
https://github.com/graphql-python/graphene.git
synced 2024-11-28 20:43:57 +03:00
Merge pull request #679 from anisjonischkeit/patch-1
Made DateTime types return GraphQLError on fail
This commit is contained in:
commit
415b71f730
|
@ -38,7 +38,10 @@ class Date(Scalar):
|
|||
|
||||
@staticmethod
|
||||
def parse_value(value):
|
||||
try:
|
||||
return iso8601.parse_date(value).date()
|
||||
except iso8601.ParseError:
|
||||
return None
|
||||
|
||||
|
||||
class DateTime(Scalar):
|
||||
|
@ -62,7 +65,10 @@ class DateTime(Scalar):
|
|||
|
||||
@staticmethod
|
||||
def parse_value(value):
|
||||
try:
|
||||
return iso8601.parse_date(value)
|
||||
except iso8601.ParseError:
|
||||
return None
|
||||
|
||||
|
||||
class Time(Scalar):
|
||||
|
@ -87,5 +93,8 @@ class Time(Scalar):
|
|||
|
||||
@classmethod
|
||||
def parse_value(cls, value):
|
||||
try:
|
||||
dt = iso8601.parse_date('{}T{}'.format(cls.epoch_date, value))
|
||||
return datetime.time(dt.hour, dt.minute, dt.second, dt.microsecond, dt.tzinfo)
|
||||
except iso8601.ParseError:
|
||||
return None
|
||||
|
|
|
@ -2,6 +2,8 @@ import datetime
|
|||
|
||||
import pytz
|
||||
|
||||
from graphql import GraphQLError
|
||||
|
||||
from ..datetime import DateTime, Date, Time
|
||||
from ..objecttype import ObjectType
|
||||
from ..schema import Schema
|
||||
|
@ -34,7 +36,7 @@ def test_datetime_query():
|
|||
assert result.data == {'datetime': isoformat}
|
||||
|
||||
|
||||
def test_datetime_query():
|
||||
def test_date_query():
|
||||
now = datetime.datetime.now().replace(tzinfo=pytz.utc).date()
|
||||
isoformat = now.isoformat()
|
||||
|
||||
|
@ -53,6 +55,32 @@ def test_time_query():
|
|||
assert not result.errors
|
||||
assert result.data == {'time': isoformat}
|
||||
|
||||
def test_bad_datetime_query():
|
||||
not_a_date = "Some string that's not a date"
|
||||
|
||||
result = schema.execute('''{ datetime(in: "%s") }''' % not_a_date)
|
||||
|
||||
assert len(result.errors) == 1
|
||||
assert isinstance(result.errors[0], GraphQLError)
|
||||
assert result.data == None
|
||||
|
||||
def test_bad_date_query():
|
||||
not_a_date = "Some string that's not a date"
|
||||
|
||||
result = schema.execute('''{ date(in: "%s") }''' % not_a_date)
|
||||
|
||||
assert len(result.errors) == 1
|
||||
assert isinstance(result.errors[0], GraphQLError)
|
||||
assert result.data == None
|
||||
|
||||
def test_bad_time_query():
|
||||
not_a_date = "Some string that's not a date"
|
||||
|
||||
result = schema.execute('''{ time(at: "%s") }''' % not_a_date)
|
||||
|
||||
assert len(result.errors) == 1
|
||||
assert isinstance(result.errors[0], GraphQLError)
|
||||
assert result.data == None
|
||||
|
||||
def test_datetime_query_variable():
|
||||
now = datetime.datetime.now().replace(tzinfo=pytz.utc)
|
||||
|
|
Loading…
Reference in New Issue
Block a user