"""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