@@ -89,6 +89,87 @@ def test_create_archive_request_composed_output_mode_with_transcription_error():
8989 )
9090
9191
92+ def test_create_archive_request_valid_quantization_parameter ():
93+ """Test that quantization_parameter is accepted for composed archives with valid
94+ values."""
95+ request = CreateArchiveRequest (
96+ session_id = "1_MX40NTY3NjYzMn5-MTQ4MTY3NjYzMn5" ,
97+ has_audio = True ,
98+ has_video = True ,
99+ output_mode = OutputMode .COMPOSED ,
100+ quantization_parameter = 25 ,
101+ )
102+ assert request .quantization_parameter == 25
103+
104+
105+ def test_create_archive_request_quantization_parameter_boundary_values ():
106+ """Test that quantization_parameter accepts boundary values (15 and 40)."""
107+ # Test minimum value
108+ request_min = CreateArchiveRequest (
109+ session_id = "1_MX40NTY3NjYzMn5-MTQ4MTY3NjYzMn5" ,
110+ has_audio = True ,
111+ quantization_parameter = 15 ,
112+ )
113+ assert request_min .quantization_parameter == 15
114+
115+ # Test maximum value
116+ request_max = CreateArchiveRequest (
117+ session_id = "1_MX40NTY3NjYzMn5-MTQ4MTY3NjYzMn5" ,
118+ has_audio = True ,
119+ quantization_parameter = 40 ,
120+ )
121+ assert request_max .quantization_parameter == 40
122+
123+
124+ def test_create_archive_request_quantization_parameter_invalid_low ():
125+ """Test that quantization_parameter rejects values below 15."""
126+ with raises (ValueError ):
127+ CreateArchiveRequest (
128+ session_id = "1_MX40NTY3NjYzMn5-MTQ4MTY3NjYzMn5" ,
129+ has_audio = True ,
130+ quantization_parameter = 14 ,
131+ )
132+
133+
134+ def test_create_archive_request_quantization_parameter_invalid_high ():
135+ """Test that quantization_parameter rejects values above 40."""
136+ with raises (ValueError ):
137+ CreateArchiveRequest (
138+ session_id = "1_MX40NTY3NjYzMn5-MTQ4MTY3NjYzMn5" ,
139+ has_audio = True ,
140+ quantization_parameter = 41 ,
141+ )
142+
143+
144+ def test_create_archive_request_individual_output_mode_with_quantization_parameter ():
145+ """Test that quantization_parameter is rejected for individual archives."""
146+ with raises (IndividualArchivePropertyError ):
147+ CreateArchiveRequest (
148+ session_id = "1_MX40NTY3NjYzMn5-MTQ4MTY3NjYzMn5" ,
149+ has_audio = True ,
150+ output_mode = OutputMode .INDIVIDUAL ,
151+ quantization_parameter = 25 ,
152+ )
153+
154+
155+ def test_create_archive_request_serialization_with_quantization_parameter ():
156+ """Test that quantization_parameter is properly serialized with the correct alias."""
157+ request = CreateArchiveRequest (
158+ session_id = "1_MX40NTY3NjYzMn5-MTQ4MTY3NjYzMn5" ,
159+ has_audio = True ,
160+ has_video = True ,
161+ output_mode = OutputMode .COMPOSED ,
162+ quantization_parameter = 30 ,
163+ )
164+
165+ serialized = request .model_dump (by_alias = True , exclude_unset = True )
166+ assert 'quantizationParameter' in serialized
167+ assert serialized ['quantizationParameter' ] == 30
168+ assert (
169+ 'quantization_parameter' not in serialized
170+ ) # Ensure Python field name is not used
171+
172+
92173def test_layout_custom_without_stylesheet ():
93174 with raises (LayoutStylesheetError ):
94175 ComposedLayout (type = LayoutType .CUSTOM )
@@ -194,6 +275,7 @@ def test_start_archive():
194275 assert archive .name == 'first archive test'
195276 assert archive .resolution == '1280x720'
196277 assert archive .max_bitrate == 2_000_000
278+ assert archive .quantization_parameter == 25
197279
198280
199281@responses .activate
@@ -215,6 +297,7 @@ def test_get_archive():
215297 assert archive .status == 'started'
216298 assert archive .name == 'first archive test'
217299 assert archive .resolution == '1280x720'
300+ assert archive .quantization_parameter == 25
218301
219302
220303@responses .activate
0 commit comments