Skip to content

Module manubot.cite.tests.test_curie

View Source
import pytest

from ..citekey import CiteKey

from ..curie import (

    Handler_CURIE,

    curie_to_url,

    get_bioregistry,

    get_prefix_to_resource,

)

def test_bioregistry_resource_patterns():

    """

    Can find issues like https://github.com/biopragmatics/bioregistry/issues/242

    """

    registry = get_bioregistry(compile_patterns=True)

    assert isinstance(registry, list)

    reports = []

    for resource in registry:

        assert resource["prefix"]  # ensure prefix field exists

        if "example" in resource and "pattern" in resource:

            prefix = resource["prefix"]

            example = resource["example"]

            handler = Handler_CURIE(prefix)

            example_curie = CiteKey(f"{prefix}:{example}")

            report = handler.inspect(example_curie)

            if report:

                reports.append(report)

    print("\n".join(reports))

    assert not reports

def test_get_prefix_to_resource():

    prefix_to_resource = get_prefix_to_resource()

    assert isinstance(prefix_to_resource, dict)

    assert "doid" in prefix_to_resource

    resource = prefix_to_resource["doid"]

    resource["preferred_prefix"] = "DOID"

@pytest.mark.parametrize(

    "curie, expected",

    [

        ("doi:10.1038/nbt1156", "https://doi.org/10.1038/nbt1156"),

        ("DOI:10.1038/nbt1156", "https://doi.org/10.1038/nbt1156"),

        ("arXiv:0807.4956v1", "https://arxiv.org/abs/0807.4956v1"),

        (

            "taxonomy:9606",

            "http://purl.obolibrary.org/obo/NCBITaxon_9606",

        ),

        ("CHEBI:36927", "http://purl.obolibrary.org/obo/CHEBI_36927"),

        ("ChEBI:36927", "http://purl.obolibrary.org/obo/CHEBI_36927"),

        (

            "DOID:11337",

            "http://purl.obolibrary.org/obo/DOID_11337",

        ),

        (

            "doid:11337",

            "http://purl.obolibrary.org/obo/DOID_11337",

        ),

        (

            "clinicaltrials:NCT00222573",

            "https://www.clinicaltrials.gov/study/NCT00222573",

        ),

        (

            "clinicaltrials:NCT04292899",

            "https://www.clinicaltrials.gov/study/NCT04292899",

        ),

        # formerly afflicted by https://github.com/identifiers-org/identifiers-org.github.io/issues/99#issuecomment-614690283

        pytest.param(

            "gramene.growthstage:0007133",

            "http://www.bootstrep.eu/ontology/GRO#0007133",

            id="gramene.growthstage",

        ),

    ],

)

def test_curie_to_url(curie, expected):

    url = curie_to_url(curie)

    assert url == expected

def test_curie_to_url_bad_curie():

    with pytest.raises(ValueError):

        curie_to_url("this.is.not:a_curie")

Functions

test_bioregistry_resource_patterns

def test_bioregistry_resource_patterns(

)

Can find issues like https://github.com/biopragmatics/bioregistry/issues/242

View Source
def test_bioregistry_resource_patterns():

    """

    Can find issues like https://github.com/biopragmatics/bioregistry/issues/242

    """

    registry = get_bioregistry(compile_patterns=True)

    assert isinstance(registry, list)

    reports = []

    for resource in registry:

        assert resource["prefix"]  # ensure prefix field exists

        if "example" in resource and "pattern" in resource:

            prefix = resource["prefix"]

            example = resource["example"]

            handler = Handler_CURIE(prefix)

            example_curie = CiteKey(f"{prefix}:{example}")

            report = handler.inspect(example_curie)

            if report:

                reports.append(report)

    print("\n".join(reports))

    assert not reports

test_curie_to_url

def test_curie_to_url(
    curie,
    expected
)
View Source
@pytest.mark.parametrize(

    "curie, expected",

    [

        ("doi:10.1038/nbt1156", "https://doi.org/10.1038/nbt1156"),

        ("DOI:10.1038/nbt1156", "https://doi.org/10.1038/nbt1156"),

        ("arXiv:0807.4956v1", "https://arxiv.org/abs/0807.4956v1"),

        (

            "taxonomy:9606",

            "http://purl.obolibrary.org/obo/NCBITaxon_9606",

        ),

        ("CHEBI:36927", "http://purl.obolibrary.org/obo/CHEBI_36927"),

        ("ChEBI:36927", "http://purl.obolibrary.org/obo/CHEBI_36927"),

        (

            "DOID:11337",

            "http://purl.obolibrary.org/obo/DOID_11337",

        ),

        (

            "doid:11337",

            "http://purl.obolibrary.org/obo/DOID_11337",

        ),

        (

            "clinicaltrials:NCT00222573",

            "https://www.clinicaltrials.gov/study/NCT00222573",

        ),

        (

            "clinicaltrials:NCT04292899",

            "https://www.clinicaltrials.gov/study/NCT04292899",

        ),

        # formerly afflicted by https://github.com/identifiers-org/identifiers-org.github.io/issues/99#issuecomment-614690283

        pytest.param(

            "gramene.growthstage:0007133",

            "http://www.bootstrep.eu/ontology/GRO#0007133",

            id="gramene.growthstage",

        ),

    ],

)

def test_curie_to_url(curie, expected):

    url = curie_to_url(curie)

    assert url == expected

test_curie_to_url_bad_curie

def test_curie_to_url_bad_curie(

)
View Source
def test_curie_to_url_bad_curie():

    with pytest.raises(ValueError):

        curie_to_url("this.is.not:a_curie")

test_get_prefix_to_resource

def test_get_prefix_to_resource(

)
View Source
def test_get_prefix_to_resource():

    prefix_to_resource = get_prefix_to_resource()

    assert isinstance(prefix_to_resource, dict)

    assert "doid" in prefix_to_resource

    resource = prefix_to_resource["doid"]

    resource["preferred_prefix"] = "DOID"