@@ -495,111 +495,65 @@ class TestDateTimeFieldHTMLFormRender(TestCase):
495495 Default TIME_ZONE is 'America/Chicago'.
496496 """
497497
498- def test_datetime_field_rendering_milliseconds (self ):
498+ def _assert_datetime_rendering (self , appointment , expected , datetimefield_kwargs = None ):
499+ datetimefield_kwargs = datetimefield_kwargs or {}
500+
499501 class TestSerializer (serializers .Serializer ):
500- appointment = serializers .DateTimeField ()
502+ appointment = serializers .DateTimeField (** datetimefield_kwargs )
501503
502- appointment = datetime (2024 , 12 , 24 , 0 , 55 , 30 , 345678 )
503504 serializer = TestSerializer (data = {"appointment" : appointment })
504505 serializer .is_valid ()
505506 renderer = HTMLFormRenderer ()
506507 field = serializer ['appointment' ]
507508 rendered = renderer .render_field (field , {})
508- self . assertInHTML (
509- '<input name="appointment" class="form-control" type="datetime-local" value="2024-12-24T00:55:30.345">' ,
510- rendered
509+ expected_html = (
510+ f '<input name="appointment" class="form-control" '
511+ f'type="datetime-local" value=" { expected } ">'
511512 )
512513
513- def test_datetime_field_rendering_no_milliseconds (self ):
514- class TestSerializer (serializers .Serializer ):
515- appointment = serializers .DateTimeField ()
514+ self .assertInHTML (expected_html , rendered )
516515
517- appointment = datetime (2024 , 12 , 24 , 0 , 55 , 30 , 0 )
518- serializer = TestSerializer (data = {"appointment" : appointment })
519- serializer .is_valid ()
520- renderer = HTMLFormRenderer ()
521- field = serializer ['appointment' ]
522- rendered = renderer .render_field (field , {})
523- self .assertInHTML (
524- '<input name="appointment" class="form-control" type="datetime-local" value="2024-12-24T00:55:30.000">' ,
525- rendered
516+ def test_datetime_field_rendering_milliseconds (self ):
517+ self ._assert_datetime_rendering (
518+ datetime (2024 , 12 , 24 , 0 , 55 , 30 , 345678 ), "2024-12-24T00:55:30.345"
526519 )
527520
528- def test_datetime_field_rendering_no_seconds_and_no_milliseconds (self ):
529- class TestSerializer (serializers .Serializer ):
530- appointment = serializers .DateTimeField ()
521+ def test_datetime_field_rendering_no_milliseconds (self ):
522+ self ._assert_datetime_rendering (
523+ datetime (2024 , 12 , 24 , 0 , 55 , 30 , 0 ), "2024-12-24T00:55:30.000"
524+ )
531525
532- appointment = datetime (2024 , 12 , 24 , 0 , 55 , 0 , 0 )
533- serializer = TestSerializer (data = {"appointment" : appointment })
534- serializer .is_valid ()
535- renderer = HTMLFormRenderer ()
536- field = serializer ['appointment' ]
537- rendered = renderer .render_field (field , {})
538- self .assertInHTML (
539- '<input name="appointment" class="form-control" type="datetime-local" value="2024-12-24T00:55:00.000">' ,
540- rendered
526+ def test_datetime_field_rendering_no_seconds_and_no_milliseconds (self ):
527+ self ._assert_datetime_rendering (
528+ datetime (2024 , 12 , 24 , 0 , 55 , 0 , 0 ), "2024-12-24T00:55:00.000"
541529 )
542530
543531 def test_datetime_field_rendering_with_format_as_none (self ):
544- class TestSerializer (serializers .Serializer ):
545- appointment = serializers .DateTimeField (format = None )
546-
547- appointment = datetime (2024 , 12 , 24 , 0 , 55 , 30 , 345678 )
548- serializer = TestSerializer (data = {"appointment" : appointment })
549- serializer .is_valid ()
550- renderer = HTMLFormRenderer ()
551- field = serializer ['appointment' ]
552- rendered = renderer .render_field (field , {})
553- self .assertInHTML (
554- '<input name="appointment" class="form-control" type="datetime-local" value="2024-12-24T00:55:30.345">' ,
555- rendered
532+ self ._assert_datetime_rendering (
533+ datetime (2024 , 12 , 24 , 0 , 55 , 30 , 345678 ),
534+ "2024-12-24T00:55:30.345" ,
535+ {"format" : None }
556536 )
557537
558538 def test_datetime_field_rendering_with_format (self ):
559- class TestSerializer (serializers .Serializer ):
560- appointment = serializers .DateTimeField (format = '%a %d %b %Y, %I:%M%p' )
561-
562- appointment = datetime (2024 , 12 , 24 , 0 , 55 , 30 , 345678 )
563- serializer = TestSerializer (data = {"appointment" : appointment })
564- serializer .is_valid ()
565- renderer = HTMLFormRenderer ()
566- field = serializer ['appointment' ]
567- rendered = renderer .render_field (field , {})
568- self .assertInHTML (
569- '<input name="appointment" class="form-control" type="datetime-local" value="2024-12-24T00:55:00.000">' ,
570- rendered
539+ self ._assert_datetime_rendering (
540+ datetime (2024 , 12 , 24 , 0 , 55 , 30 , 345678 ),
541+ "2024-12-24T00:55:00.000" ,
542+ {"format" : "%a %d %b %Y, %I:%M%p" }
571543 )
572544
573545 @override_settings (TIME_ZONE = 'UTC' , USE_TZ = True )
574546 def test_datetime_field_rendering_utc (self ):
575- class TestSerializer (serializers .Serializer ):
576- appointment = serializers .DateTimeField ()
577-
578- appointment = datetime (2024 , 12 , 24 , 0 , 55 , 30 , 345678 )
579- serializer = TestSerializer (data = {"appointment" : appointment })
580- serializer .is_valid ()
581- renderer = HTMLFormRenderer ()
582- field = serializer ['appointment' ]
583- rendered = renderer .render_field (field , {})
584- self .assertInHTML (
585- '<input name="appointment" class="form-control" type="datetime-local" value="2024-12-24T00:55:30.345">' ,
586- rendered
547+ self ._assert_datetime_rendering (
548+ datetime (2024 , 12 , 24 , 0 , 55 , 30 , 345678 ),
549+ "2024-12-24T00:55:30.345"
587550 )
588551
589552 @override_settings (REST_FRAMEWORK = {'DATETIME_FORMAT' : '%a %d %b %Y, %I:%M%p' })
590553 def test_datetime_field_rendering_with_custom_datetime_format (self ):
591- class TestSerializer (serializers .Serializer ):
592- appointment = serializers .DateTimeField ()
593-
594- appointment = datetime (2024 , 12 , 24 , 0 , 55 , 30 , 345678 )
595- serializer = TestSerializer (data = {"appointment" : appointment })
596- serializer .is_valid ()
597- renderer = HTMLFormRenderer ()
598- field = serializer ['appointment' ]
599- rendered = renderer .render_field (field , {})
600- self .assertInHTML (
601- '<input name="appointment" class="form-control" type="datetime-local" value="2024-12-24T00:55:00.000">' ,
602- rendered
554+ self ._assert_datetime_rendering (
555+ datetime (2024 , 12 , 24 , 0 , 55 , 30 , 345678 ),
556+ "2024-12-24T00:55:00.000"
603557 )
604558
605559
0 commit comments