"""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):
"""Test publication differences — flesh out description…"""
assert publications_differences(
filedata, dbdata, pubmed2pubidmap) == expected