aboutsummaryrefslogtreecommitdiff
"""Tests for functions used for bulk editing."""
import pytest

from uploader.publications.misc import publications_differences


@pytest.mark.unit_test
@pytest.mark.parametrize(
    "filedata,dbdata,pubmed2pubidmap,expected",
    (((), (), {}, tuple()), # no data

     # Same Data
     (({"phenotype_id": 1, "xref_id": 10001, "PubMed_ID": 9999999999999},
       {"phenotype_id": 1, "xref_id": 10002, "PubMed_ID": 9999999999999},
       {"phenotype_id": 1, "xref_id": 10003, "PubMed_ID": 9999999999999},
       {"phenotype_id": 1, "xref_id": 10005, "PubMed_ID": 9999999999999}),
      ({"PhenotypeId": 1, "xref_id": 10001, "PublicationId": 15,
        "PubMed_ID": 9999999999999},
       {"PhenotypeId": 1, "xref_id": 10002, "PublicationId": 15,
        "PubMed_ID": 9999999999999},
       {"PhenotypeId": 1, "xref_id": 10003, "PublicationId": 15,
        "PubMed_ID": 9999999999999},
       {"PhenotypeId": 1, "xref_id": 10004, "PublicationId": 15,
        "PubMed_ID": 9999999999999}),
      {9999999999999: 15},
      tuple()),

     # Differences: no new pubmeds (all pubmeds in db)
     (({"phenotype_id": 1, "xref_id": 10001, "PubMed_ID": 9999999999999},
       {"phenotype_id": 1, "xref_id": 10002, "PubMed_ID": 9999999999998},
       {"phenotype_id": 1, "xref_id": 10003, "PubMed_ID": 9999999999999},
       {"phenotype_id": 1, "xref_id": 10004, "PubMed_ID": 9999999999997}),
      ({"PhenotypeId": 1, "xref_id": 10001, "PublicationId": 15,
        "PubMed_ID": 9999999999999},
       {"PhenotypeId": 1, "xref_id": 10002, "PublicationId": 15,
        "PubMed_ID": 9999999999999},
       {"PhenotypeId": 1, "xref_id": 10003, "PublicationId": 15,
        "PubMed_ID": 9999999999999},
       {"PhenotypeId": 1, "xref_id": 10004, "PublicationId": 15,
        "PubMed_ID": None}),
      {9999999999999: 15, 9999999999998: 18, 9999999999997: 12},
      ({"PhenotypeId": 1, "xref_id": 10002, "PublicationId": 18,
          "PubMed_ID": 9999999999998},
       {"PhenotypeId": 1, "xref_id": 10004, "PublicationId": 12,
        "PubMed_ID": 9999999999997})),

     # Differences: Deletions of pubmeds
     (({"phenotype_id": 1, "xref_id": 10001, "PubMed_ID": 9999999999999},
       {"phenotype_id": 1, "xref_id": 10002, "PubMed_ID": None},
       {"phenotype_id": 1, "xref_id": 10003, "PubMed_ID": 9999999999999},
       {"phenotype_id": 1, "xref_id": 10004, "PubMed_ID": None}),
      ({"PhenotypeId": 1, "xref_id": 10001, "PublicationId": 15,
        "PubMed_ID": 9999999999999},
       {"PhenotypeId": 1, "xref_id": 10002, "PublicationId": 15,
        "PubMed_ID": 9999999999999},
       {"PhenotypeId": 1, "xref_id": 10003, "PublicationId": 15,
        "PubMed_ID": 9999999999999},
       {"PhenotypeId": 1, "xref_id": 10004, "PublicationId": 15,
        "PubMed_ID": 9999999999999}),
      {9999999999999: 15, 9999999999998: 18, 9999999999997: 12},
      ({"PhenotypeId": 1, "xref_id": 10002, "PublicationId": None,
        "PubMed_ID": None},
       {"PhenotypeId": 1, "xref_id": 10004, "PublicationId": None,
        "PubMed_ID": None}))))
def test_publications_differences(filedata, dbdata, pubmed2pubidmap, expected):
    assert publications_differences(
        filedata, dbdata, pubmed2pubidmap) == expected