@@ -154,15 +154,105 @@ def test_bytesio():
154154
155155def test_defaults ():
156156 """Test that image output defaults can be set using pio.defaults.*"""
157+ test_fig = go .Figure (fig )
158+ test_image_bytes = b"mock image data"
159+
160+ # Check initial defaults
161+ assert pio .defaults .default_format == "png"
162+ assert pio .defaults .default_width == 700
163+ assert pio .defaults .default_height == 500
164+ assert pio .defaults .default_scale == 1
165+ assert pio .defaults .mathjax is None
166+ assert pio .defaults .topojson is None
167+ assert pio .defaults .plotlyjs is None
168+
157169 try :
158- assert pio . defaults . default_format == "png"
170+ # Set new defaults
159171 pio .defaults .default_format = "svg"
172+ pio .defaults .default_width = 701
173+ pio .defaults .default_height = 501
174+ pio .defaults .default_scale = 2
175+ pio .defaults .mathjax = (
176+ "https://cdn.jsdelivr.net/npm/mathjax@3.1.2/es5/tex-svg.js"
177+ )
178+ pio .defaults .topojson = "path/to/topojson/files/"
179+ pio .defaults .plotlyjs = "https://cdn.plot.ly/plotly-3.0.0.js"
180+
181+ # Check that new defaults are saved
160182 assert pio .defaults .default_format == "svg"
161- result = pio .to_image (fig , format = "svg" , validate = False )
183+ assert pio .defaults .default_width == 701
184+ assert pio .defaults .default_height == 501
185+ assert pio .defaults .default_scale == 2
186+ assert (
187+ pio .defaults .mathjax
188+ == "https://cdn.jsdelivr.net/npm/mathjax@3.1.2/es5/tex-svg.js"
189+ )
190+ assert pio .defaults .topojson == "path/to/topojson/files/"
191+ assert pio .defaults .plotlyjs == "https://cdn.plot.ly/plotly-3.0.0.js"
192+
193+ if kaleido_major () > 0 :
194+ # Check that all the defaults values are passed through to the function call to calc_fig_sync
195+ with patch (
196+ "plotly.io._kaleido.kaleido.calc_fig_sync" ,
197+ return_value = test_image_bytes ,
198+ ) as mock_calc_fig :
199+ result = pio .to_image (test_fig , validate = False )
200+
201+ # Verify calc_fig_sync was called with correct args
202+ # taken from pio.defaults
203+ mock_calc_fig .assert_called_once ()
204+ args , kwargs = mock_calc_fig .call_args
205+ assert args [0 ] == test_fig .to_dict ()
206+ assert kwargs ["opts" ]["format" ] == "svg"
207+ assert kwargs ["opts" ]["width" ] == 701
208+ assert kwargs ["opts" ]["height" ] == 501
209+ assert kwargs ["opts" ]["scale" ] == 2
210+ assert kwargs ["topojson" ] == "path/to/topojson/files/"
211+ # mathjax and plotlyjs are passed through in kopts
212+ assert (
213+ kwargs ["kopts" ]["mathjax" ]
214+ == "https://cdn.jsdelivr.net/npm/mathjax@3.1.2/es5/tex-svg.js"
215+ )
216+ assert (
217+ kwargs ["kopts" ]["plotlyjs" ] == "https://cdn.plot.ly/plotly-3.0.0.js"
218+ )
219+
220+ else :
221+ # Check that all the default values have been set in pio._kaleido.scope
222+ assert pio ._kaleido .scope .default_format == "svg"
223+ assert pio ._kaleido .scope .default_width == 701
224+ assert pio ._kaleido .scope .default_height == 501
225+ assert pio ._kaleido .scope .default_scale == 2
226+ assert (
227+ pio ._kaleido .scope .mathjax
228+ == "https://cdn.jsdelivr.net/npm/mathjax@3.1.2/es5/tex-svg.js"
229+ )
230+ assert pio ._kaleido .scope .topojson == "path/to/topojson/files/"
231+ assert pio ._kaleido .scope .plotlyjs == "https://cdn.plot.ly/plotly-3.0.0.js"
232+
233+ # Set topojson default back to None
234+ # (otherwise image generation will fail)
235+ pio .defaults .topojson = None
236+ # Generate image for real and make sure it's an SVG
237+ result = test_fig .to_image (format = "svg" , validate = False )
162238 assert result .startswith (b"<svg" )
239+
163240 finally :
241+ # Reset defaults to original values and check that they are restored
164242 pio .defaults .default_format = "png"
243+ pio .defaults .default_width = 700
244+ pio .defaults .default_height = 500
245+ pio .defaults .default_scale = 1
246+ pio .defaults .mathjax = None
247+ pio .defaults .topojson = None
248+ pio .defaults .plotlyjs = None
165249 assert pio .defaults .default_format == "png"
250+ assert pio .defaults .default_width == 700
251+ assert pio .defaults .default_height == 500
252+ assert pio .defaults .default_scale == 1
253+ assert pio .defaults .mathjax is None
254+ assert pio .defaults .topojson is None
255+ assert pio .defaults .plotlyjs is None
166256
167257
168258def test_fig_write_image ():
0 commit comments