mirror of
				https://github.com/graphql-python/graphene.git
				synced 2025-11-01 00:17:26 +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