code: def test_nav_bad_links(self):
      nav_cfg = [
          {"Home": "index.md"},
          {"Missing": "missing.html"},
          {"Bad External": "example.com"},
      ]
      expected = dedent(
          """
              Page(title='Home', url='/')
              Link(title='Missing', url='missing.html')
              Link(title='Bad External', url='example.com')
              """
      )
      cfg = load_config(nav=nav_cfg, site_url="http://example.com/")
      fs = [
          File(
              "index.md",
              cfg.docs_dir,
              cfg.site_dir,
              cfg.use_directory_urls,
          )
      ]
      files = Files(fs)
      with self.assertLogs("mkdocs") as cm:
          site_navigation = get_navigation(files, cfg)
      self.assertEqual(
          cm.output,
          [
              "WARNING:mkdocs.structure.nav:A reference to 'missing.html' is included in the 'nav' configuration, which is not found in the documentation files.",
              "WARNING:mkdocs.structure.nav:A reference to 'example.com' is included in the 'nav' configuration, which is not found in the documentation files.",
          ],
      )
      self.assertEqual(str(site_navigation).strip(), expected)
      self.assertEqual(len(site_navigation.items), 3)
      self.assertEqual(len(site_navigation.pages), 1)
  
imports: import sys
  import unittest
  from mkdocs.structure.files import File, Files, set_exclusions
  from mkdocs.structure.nav import Section, _get_by_type, get_navigation
  from mkdocs.structure.pages import Page
  from mkdocs.tests.base import dedent, load_config
label_desc: Use image node_id 7 for calling the SiteNavigationTests obj's underlying member method code with example usage: obj.test_nav_bad_links() without return types