Skip to content

Commit e501cef

Browse files
committed
JsonStringSchema: add min_datetime & max_datetime
First step in addressing Issue #334.
1 parent 2b6a463 commit e501cef

File tree

2 files changed

+21
-0
lines changed

2 files changed

+21
-0
lines changed

test/util/test_jsonschema.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,10 +112,23 @@ def test_to_instance(self):
112112
max_length=10).to_instance('pieps'))
113113
self.assertEqual('pieps', JsonStringSchema(pattern='.*').to_instance('pieps'))
114114
self.assertEqual('2020-01-03', JsonStringSchema(format='date').to_instance('2020-01-03'))
115+
self.assertEqual('2020-06-03',
116+
JsonStringSchema(format='datetime',
117+
min_datetime='2020-02-01',
118+
max_datetime='2020-07-05').
119+
to_instance('2020-06-03'))
115120

116121
def test_from_instance(self):
117122
self.assertEqual('pieps', JsonStringSchema().from_instance('pieps'))
118123

124+
def test_store_date_limits(self):
125+
minimum = '1981-05-06'
126+
maximum = '1982-09-15'
127+
schema = JsonStringSchema(format='datetime', min_datetime=minimum,
128+
max_datetime=maximum)
129+
self.assertEqual(minimum, schema.min_datetime)
130+
self.assertEqual(maximum, schema.max_datetime)
131+
119132

120133
class JsonArraySchemaTest(unittest.TestCase):
121134

xcube/util/jsonschema.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -138,12 +138,16 @@ def __init__(self,
138138
pattern: str = None,
139139
min_length: int = None,
140140
max_length: int = None,
141+
min_datetime: str = None,
142+
max_datetime: str = None,
141143
**kwargs):
142144
super().__init__(type='string', **kwargs)
143145
self.format = format
144146
self.pattern = pattern
145147
self.min_length = min_length
146148
self.max_length = max_length
149+
self.min_datetime = min_datetime
150+
self.max_datetime = max_datetime
147151

148152
def to_dict(self) -> Dict[str, Any]:
149153
d = super().to_dict()
@@ -155,6 +159,10 @@ def to_dict(self) -> Dict[str, Any]:
155159
d.update(minLength=self.min_length)
156160
if self.max_length is not None:
157161
d.update(maxLength=self.max_length)
162+
if self.min_datetime is not None:
163+
d.update(minDatetime=self.min_datetime)
164+
if self.max_datetime is not None:
165+
d.update(maxDatetime=self.max_datetime)
158166
return d
159167

160168

0 commit comments

Comments
 (0)