from siskin.openurl import openurl_parameters_from_intermediateschema


def test_openurl_from_intermediateschema():
    cases = (
        ("empty doc", {}, {}),
        (
            "title only",
            {"rft.atitle": "empty doc"},
            {
                "ctx_enc": "info:ofi/enc:UTF-8",
                "ctx_ver": "Z39.88-2004",
                "rfr_id": "info:sid/www.ub.uni-leipzig.de:generator",
                "rft.atitle": "empty doc",
                "url_ver": "Z39.88-2004",
            },
        ),
        (
            "title and date",
            {
                "rft.atitle": "title and date",
                "rft.date": "2018-10-10",
            },
            {
                "ctx_enc": "info:ofi/enc:UTF-8",
                "ctx_ver": "Z39.88-2004",
                "rfr_id": "info:sid/www.ub.uni-leipzig.de:generator",
                "rft.date": "2018-10-10",
                "rft.atitle": "title and date",
                "url_ver": "Z39.88-2004",
            },
        ),
        (
            "title and date, language",
            {
                "languages": ["eng", "fra"],
                "rft.atitle": "title and date, language",
                "rft.date": "2018-10-10",
            },
            {
                "ctx_enc": "info:ofi/enc:UTF-8",
                "ctx_ver": "Z39.88-2004",
                "rfr_id": "info:sid/www.ub.uni-leipzig.de:generator",
                "rft.date": "2018-10-10",
                "rft.language": "eng",
                "rft.atitle": "title and date, language",
                "url_ver": "Z39.88-2004",
            },
        ),
        (
            "title and date, language, book",
            {
                "languages": ["eng", "fra"],
                "rft.atitle": "Hello",
                "rft.date": "2018-10-10",
                "rft.genre": "book",
            },
            {
                "ctx_enc": "info:ofi/enc:UTF-8",
                "ctx_ver": "Z39.88-2004",
                "rfr_id": "info:sid/www.ub.uni-leipzig.de:generator",
                "rft.atitle": "Hello",
                "rft.btitle": "Hello",
                "rft.date": "2018-10-10",
                "rft.genre": "book",
                "rft.language": "eng",
                "rft_val_fmt": "info:ofi/fmt:kev:mtx:book",
                "url_ver": "Z39.88-2004",
            },
        ),
        (
            "crossref-1",
            {
                "finc.format": "ElectronicArticle",
                "finc.mega_collection": [
                    "Springer Science + Business Media (CrossRef)"
                ],
                "finc.id": "ai-49-aHR0cDovL2R4LmRvaS5vcmcvMTAuMTAxNi9qLm51cnguMjAwNi4wNS4wMjU",
                "finc.source_id": "49",
                "ris.type": "EJOUR",
                "rft.atitle": "An Analysis of Correlations Among 4 Outcome Scales Employed in Clinical Trials of Patients With Major Depressive Disorder",
                "rft.epage": "412",
                "rft.genre": "article",
                "rft.issn": ["1545-5343"],
                "rft.issue": "3",
                "rft.jtitle": "NeuroRX",
                "rft.tpages": "2",
                "rft.pages": "411-412",
                "rft.pub": ["Springer Science + Business Media"],
                "rft.date": "2006-07-01",
                "x.date": "2006-07-01T00:00:00Z",
                "rft.spage": "411",
                "rft.volume": "3",
                "authors": [
                    {"rft.aulast": "JIANG", "rft.aufirst": "Q"},
                    {"rft.aulast": "AHMED", "rft.aufirst": "S"},
                    {"rft.aulast": "PEDERSEN", "rft.aufirst": "R"},
                    {"rft.aulast": "MUSGNUNG", "rft.aufirst": "J"},
                    {"rft.aulast": "ENTSUAH", "rft.aufirst": "R"},
                ],
                "doi": "10.1016/j.nurx.2006.05.025",
                "languages": ["eng"],
                "url": ["http://dx.doi.org/10.1016/j.nurx.2006.05.025"],
                "version": "0.9",
                "x.subjects": ["Pharmacology (medical)"],
                "x.type": "journal-article",
            },
            {
                "ctx_enc": "info:ofi/enc:UTF-8",
                "ctx_ver": "Z39.88-2004",
                "rfr_id": "info:sid/www.ub.uni-leipzig.de:generator",
                "rft.atitle": "An Analysis of Correlations Among 4 Outcome Scales Employed in Clinical Trials of Patients With Major Depressive Disorder",
                "rft.aufirst": "Q",
                "rft.aulast": "JIANG",
                "rft.date": "2006-07-01",
                "rft.epage": "412",
                "rft.genre": "article",
                "rft.issn": "1545-5343",
                "rft.issue": "3",
                "rft.jtitle": "NeuroRX",
                "rft.language": "eng",
                "rft.pages": "411-412",
                "rft.spage": "411",
                "rft.volume": "3",
                "rft_id": "info:doi/10.1016/j.nurx.2006.05.025",
                "url_ver": "Z39.88-2004",
            },
        ),
    )

    for _, doc, want in cases:
        result = openurl_parameters_from_intermediateschema(doc)
        assert result == want
