def test_constraints_maximum_valid_value_equals(self):
        value = '1978-05-29T12:30:20Z'
        field = self._make_default_field(
            type='datetime', constraints={'maximum': '1978-05-29T12:30:20Z'})
        _type = types.DateTimeType(field)

        self.assertEqual(
            _type.cast(value),
            datetime.datetime.strptime(value, '%Y-%m-%dT%H:%M:%SZ'))
    def test_constraints_maximum_invalid_value(self):
        value = '1978-05-29T12:30:20Z'
        field = self._make_default_field(
            type='datetime', constraints={'maximum': '1978-05-28T12:30:20Z'})
        _type = types.DateTimeType(field)

        with pytest.raises(exceptions.ConstraintError) as e:
            _type.cast(value)
        self.assertEqual(
            e.value.msg, "The field 'Name' must not be more than "
            "1978-05-28 12:30:20")
 def test_datetime_type_with_already_cast_value(self):
     for value in [datetime(2015, 1, 1, 12, 0, 0)]:
         for format in ['default', 'any', 'fmt:any']:
             self.field['format'] = format
             _type = types.DateTimeType(self.field)
             self.assertEqual(_type.cast(value), value)
 def test_invalid_date_format(self):
     value = '21/11/06 16:30'
     self.field['format'] = 'fmt:notavalidformat'
     _type = types.DateTimeType(self.field)
     self.assertRaises(exceptions.InvalidDateTimeType, _type.cast, value)
 def test_unparsable_date_raises_exception(self):
     value = 'the land before time'
     self.field['format'] = 'any'
     _type = types.DateTimeType(self.field)
     self.assertRaises(exceptions.InvalidDateTimeType, _type.cast, value)
 def test_non_iso_datetime_fails_for_default(self):
     value = 'Mon 1st Jan 2014 9 am'
     _type = types.DateTimeType(self.field)
     self.assertRaises(exceptions.InvalidDateTimeType, _type.cast, value)
 def test_specified_format(self):
     value = '21/11/06 16:30'
     self.field['format'] = 'fmt:%d/%m/%y %H:%M'
     _type = types.DateTimeType(self.field)
     self.assertEquals(_type.cast(value), datetime(2006, 11, 21, 16, 30))
 def test_any_parser_guessing(self):
     value = '10th Jan 1969 9 am'
     self.field['format'] = 'any'
     _type = types.DateTimeType(self.field)
     self.assertEquals(_type.cast(value), datetime(1969, 1, 10, 9))
 def test_valid_iso_datetime(self):
     value = '2014-01-01T06:00:00Z'
     _type = types.DateTimeType(self.field)
     self.assertEquals(_type.cast(value), datetime(2014, 1, 1, 6))