mirror of
https://github.com/graphql-python/graphene.git
synced 2024-11-25 11:03:58 +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
|
@staticmethod
|
||||||
def parse_value(value):
|
def parse_value(value):
|
||||||
|
try:
|
||||||
return iso8601.parse_date(value).date()
|
return iso8601.parse_date(value).date()
|
||||||
|
except iso8601.ParseError:
|
||||||
|
return None
|
||||||
|
|
||||||
|
|
||||||
class DateTime(Scalar):
|
class DateTime(Scalar):
|
||||||
|
@ -62,7 +65,10 @@ class DateTime(Scalar):
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def parse_value(value):
|
def parse_value(value):
|
||||||
|
try:
|
||||||
return iso8601.parse_date(value)
|
return iso8601.parse_date(value)
|
||||||
|
except iso8601.ParseError:
|
||||||
|
return None
|
||||||
|
|
||||||
|
|
||||||
class Time(Scalar):
|
class Time(Scalar):
|
||||||
|
@ -87,5 +93,8 @@ class Time(Scalar):
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def parse_value(cls, value):
|
def parse_value(cls, value):
|
||||||
|
try:
|
||||||
dt = iso8601.parse_date('{}T{}'.format(cls.epoch_date, value))
|
dt = iso8601.parse_date('{}T{}'.format(cls.epoch_date, value))
|
||||||
return datetime.time(dt.hour, dt.minute, dt.second, dt.microsecond, dt.tzinfo)
|
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
|
import pytz
|
||||||
|
|
||||||
|
from graphql import GraphQLError
|
||||||
|
|
||||||
from ..datetime import DateTime, Date, Time
|
from ..datetime import DateTime, Date, Time
|
||||||
from ..objecttype import ObjectType
|
from ..objecttype import ObjectType
|
||||||
from ..schema import Schema
|
from ..schema import Schema
|
||||||
|
@ -34,7 +36,7 @@ def test_datetime_query():
|
||||||
assert result.data == {'datetime': isoformat}
|
assert result.data == {'datetime': isoformat}
|
||||||
|
|
||||||
|
|
||||||
def test_datetime_query():
|
def test_date_query():
|
||||||
now = datetime.datetime.now().replace(tzinfo=pytz.utc).date()
|
now = datetime.datetime.now().replace(tzinfo=pytz.utc).date()
|
||||||
isoformat = now.isoformat()
|
isoformat = now.isoformat()
|
||||||
|
|
||||||
|
@ -53,6 +55,32 @@ def test_time_query():
|
||||||
assert not result.errors
|
assert not result.errors
|
||||||
assert result.data == {'time': isoformat}
|
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():
|
def test_datetime_query_variable():
|
||||||
now = datetime.datetime.now().replace(tzinfo=pytz.utc)
|
now = datetime.datetime.now().replace(tzinfo=pytz.utc)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user