code: def test_add_tile_tilesource():
      mapnik = xyz.OpenStreetMap.Mapnik
      tilesource = WMTSTileSource(
          url=mapnik.build_url(),
          attribution=mapnik.html_attribution,
          min_zoom=mapnik.get("min_zoom", 0),
          max_zoom=mapnik.get("max_zoom", 30),
      )
      plot = figure(
          x_range=(-2000000, 6000000),
          y_range=(-1000000, 7000000),
          x_axis_type="mercator",
          y_axis_type="mercator",
      )
      plot.add_tile(tilesource)
      tile_source = plot.renderers[0].tile_source
  
      assert tile_source.url == mapnik.build_url()
      assert tile_source.attribution == mapnik.html_attribution
  
imports: from __future__ import annotations
  import pytest
  from math import isnan
  from unittest import mock
  from unittest.mock import MagicMock, patch
  import xyzservices.providers
  from bokeh.core.validation import check_integrity, process_validation_issues
  from bokeh.models import CategoricalScale, CustomJS, DataRange1d, FactorRange, GlyphRenderer, Label, LinearAxis, LinearScale, LogScale, PanTool, Plot, Range1d, ResetTool, Title, WMTSTileSource, ZoomInTool, ZoomOutTool
  from bokeh.plotting import figure
  import bokeh.models.plots
label_desc: Use image node_id 15 for calling a global function with example usage: test_add_tile_tilesource() without return types