def test_date_validation(fixture): """A DateField can validate its input based on a min or max value and expects fuzzy but sensible input.""" field = DateField() obj = fixture.model_object field.bind('date_value', obj) # Case invalid with expected(DateConstraint): field.set_user_input('sdfdf') # Case valid with expected(NoException): field.set_user_input('13 Dec') limit_date = datetime.date(2012, 11, 13) before_limit = '12 Nov 2012' after_limit = '14 Nov 2012' # Case Max field = DateField(max_value=limit_date) with expected(MaxValueConstraint): field.set_user_input(after_limit) # Case Min field = DateField(min_value=limit_date) with expected(MinValueConstraint): field.set_user_input(before_limit)
def test_date_marshalling(fixture): """A DateField marshalls human readable date representation to a datetime.date object. (It tolerates non-precise input.) """ field = DateField() obj = fixture.model_object field.bind('date_value', obj) # From input for input_string in ['10 November 2012', '10/11/2012']: field.from_input(input_string) assert obj.date_value == datetime.date(2012, 11, 10) # As input obj.date_value = datetime.date(2010, 11, 10) actual_output = field.as_input() assert actual_output == '10 Nov 2010'