@@ -365,7 +365,8 @@ def test_formattedtime(
365365 ["23:00:00" , "%H:%M:%S" , "require" ,],
366366 ["23:00:00Z" , "%I:%M:%S" , "forbid" ,],
367367 [dt .datetime (2025 , 12 , 1 , 13 , 0 , 5 , tzinfo = UTC ), "%H:%M:%S" , "forbid" ,],
368- [dt .time (13 , 0 , 5 , tzinfo = UTC ), "%H:%M:%S" , "forbid" ,]
368+ [dt .time (13 , 0 , 5 , tzinfo = UTC ), "%H:%M:%S" , "forbid" ,],
369+ ["12:00" , "%H:%M:%S" , "forbid" ,],
369370 ]
370371)
371372def test_formattedtime_raises (
@@ -378,3 +379,24 @@ def test_formattedtime_raises(
378379 time_type = hct .formattedtime (time_format , timezone_treatment )
379380 with pytest .raises (ValueError ):
380381 time_type .validate (time_to_validate ) # pylint: disable=W0106
382+
383+
384+ class StrictTimeModel (BaseModel ):
385+ time_val : hct .formattedtime (time_format = "%H:%M:%S" , timezone_treatment = "forbid" )
386+
387+
388+ @pytest .mark .parametrize (
389+ ["time_to_validate" , "expected_to_error" ],
390+ [
391+ ("12:00:00" , False ),
392+ ("120000" , True ),
393+ ("12:00" , True ),
394+ ("12" , True ),
395+ ]
396+ )
397+ def test_formattedtime_against_model (time_to_validate : str , expected_to_error : bool ):
398+ if expected_to_error :
399+ with pytest .raises (ValueError ):
400+ StrictTimeModel (time_val = time_to_validate )
401+ else :
402+ StrictTimeModel (time_val = time_to_validate )
0 commit comments