text: """Tests API-level functions in manubot.cite. Both functions are found in citekey.py"""
  
  import pytest
  
  from manubot.cite import citekey_to_csl_item, standardize_citekey
  
  
  @pytest.mark.parametrize(
      "citekey,expected",
      [
          ("doi:10.5061/DRYAD.q447c/1", "doi:10.5061/dryad.q447c/1"),
          ("doi:10.5061/dryad.q447c/1", "doi:10.5061/dryad.q447c/1"),
          ("doi:10/b6vnmd", "doi:10.1016/s0933-3657(96)00367-3"),
          ("doi:10/B6VNMD", "doi:10.1016/s0933-3657(96)00367-3"),
          (
              "doi:10/xxxxxxxxxxxxxYY",
              "doi:10/xxxxxxxxxxxxxyy",
          ),  # passthrough non-existent shortDOI
          ("pmid:24159271", "pmid:24159271"),
          ("isbn:1339919885", "isbn:9781339919881"),
          ("isbn:1-339-91988-5", "isbn:9781339919881"),
          ("isbn:978-0-387-95069-3", "isbn:9780387950693"),
          ("isbn:9780387950938", "isbn:9780387950938"),
          ("isbn:1-55860-510-X", "isbn:9781558605107"),
          ("isbn:1-55860-510-x", "isbn:9781558605107"),
      ],
  )
  def test_standardize_citekey(citekey, expected):
      """
      Standardize identifiers based on their source
      """
      output = standardize_citekey(citekey)
      assert output == expected
  
  
  @pytest.mark.xfail(reason="https://twitter.com/dhimmel/status/950443969313419264")
  def test_citekey_to_csl_item_doi_datacite():
      citekey = "doi:10.7287/peerj.preprints.3100v1"
      csl_item = citekey_to_csl_item(citekey)
      assert csl_item["id"] == "11cb5HXoY"
      assert csl_item["URL"] == "https://doi.org/10.7287/peerj.preprints.3100v1"
      assert csl_item["DOI"] == "10.7287/peerj.preprints.3100v1"
      assert csl_item["type"] == "report"
      assert (
          csl_item["title"]
          == "Sci-Hub provides access to nearly all scholarly literature"
      )
      authors = csl_item["author"]
      assert authors[0]["family"] == "Himmelstein"
      assert authors[-1]["family"] == "Greene"
  
  
  def test_citekey_to_csl_item_arxiv():
      citekey = "arxiv:cond-mat/0703470v2"
      csl_item = citekey_to_csl_item(citekey)
      assert csl_item["id"] == "ES92tcdg"
      assert csl_item["URL"] == "https://arxiv.org/abs/cond-mat/0703470v2"
      assert csl_item["number"] == "cond-mat/0703470v2"
      assert csl_item["version"] == "v2"
      assert csl_item["type"] == "report"
      assert csl_item["container-title"] == "arXiv"
      assert csl_item["title"] == "Portraits of Complex Networks"
      authors = csl_item["author"]
      assert authors[0]["literal"] == "J. P. Bagrow"
      assert csl_item["DOI"] == "10.1209/0295-5075/81/68004"
  
  
  def test_citekey_to_csl_item_pmc():
      """
      https://api.ncbi.nlm.nih.gov/lit/ctxp/v1/pmc/?format=csl&id=3041534
      """
      citekey = f"pmcid:PMC3041534"
      csl_item = citekey_to_csl_item(citekey)
      assert csl_item["id"] == "RoOhUFKU"
      assert csl_item["URL"] == "https://www.ncbi.nlm.nih.gov/pmc/articles/PMC3041534/"
      assert csl_item["container-title-short"] == "Summit Transl Bioinform"
      assert (
          csl_item["title"]
          == "Secondary Use of EHR: Data Quality Issues and Informatics Opportunities"
      )
      authors = csl_item["author"]
      assert authors[0]["family"] == "Botsis"
      assert csl_item["PMID"] == "21347133"
      assert csl_item["PMCID"] == "PMC3041534"
      assert "generated by Manubot" in csl_item["note"]
      assert "standard_id: pmcid:PMC3041534" in csl_item["note"]
  
  
  def test_citekey_to_csl_item_pubmed_1():
      """
      Generated from XML returned by
      https://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi?db=pubmed&id=21347133&rettype=full
      """
      citekey = "pmid:21347133"
      csl_item = citekey_to_csl_item(citekey)
      assert csl_item["id"] == "y9ONtSZ9"
      assert csl_item["type"] == "article-journal"
      assert csl_item["URL"] == "https://www.ncbi.nlm.nih.gov/pubmed/21347133"
      assert csl_item["container-title"] == "Summit on translational bioinformatics"
      assert (
          csl_item["title"]
          == "Secondary Use of EHR: Data Quality Issues and Informatics Opportunities."
      )
      assert csl_item["issued"]["date-parts"] == [[2010, 3, 1]]
      authors = csl_item["author"]
      assert authors[0]["given"] == "Taxiarchis"
      assert authors[0]["family"] == "Botsis"
      assert csl_item["PMID"] == "21347133"
      assert csl_item["PMCID"] == "PMC3041534"
  
  
  def test_citekey_to_csl_item_pubmed_2():
      """
      Generated from XML returned by
      https://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi?db=pubmed&id=27094199&rettype=full
      """
      citekey = "pmid:27094199"
      csl_item = citekey_to_csl_item(citekey)
      print(csl_item)
      assert csl_item["id"] == "alaFV9OY"
      assert csl_item["type"] == "article-journal"
      assert csl_item["URL"] == "https://www.ncbi.nlm.nih.gov/pubmed/27094199"
      assert csl_item["container-title"] == "Circulation. Cardiovascular genetics"
      assert csl_item["container-title-short"] == "Circ Cardiovasc Genet"
      assert csl_item["page"] == "179-84"
      assert (
          csl_item["title"]
          == "Genetic Association-Guided Analysis of Gene Networks for the Study of Complex Traits."
      )
      assert csl_item["issued"]["date-parts"] == [[2016, 4]]
      authors = csl_item["author"]
      assert authors[0]["given"] == "Casey S"
      assert authors[0]["family"] == "Greene"
      assert csl_item["PMID"] == "27094199"
      assert csl_item["DOI"] == "10.1161/circgenetics.115.001181"
  
  
  def test_citekey_to_csl_item_pubmed_with_numeric_month():
      """
      Generated from XML returned by
      https://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi?db=pubmed&id=29028984&rettype=full
  
      See https://github.com/manubot/manubot/issues/69
      """
      citekey = "pmid:29028984"
      csl_item = citekey_to_csl_item(citekey)
      print(csl_item)
      assert csl_item["issued"]["date-parts"] == [[2018, 3, 15]]
  
  
  def test_citekey_to_csl_item_pubmed_book():
      """
      Extracting CSL metadata from books in PubMed is not supported.
      Logic not implemented to parse XML returned by
      https://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi?db=pubmed&id=29227604&rettype=full
      """
      with pytest.raises(NotImplementedError):
          citekey_to_csl_item("pmid:29227604")
  
  
  def test_citekey_to_csl_item_isbn():
      csl_item = citekey_to_csl_item("isbn:9780387950693")
      assert csl_item["type"] == "book"
      assert csl_item["title"] == "Complex analysis"
  