From 637945ca5cca0acb2e1c6280aa9405f6e08b80b8 Mon Sep 17 00:00:00 2001 From: Shyam D Date: Thu, 11 Mar 2021 09:20:13 -0800 Subject: [PATCH] test for provenance from SNLs --- tests/emmet-core/test_provenance.py | 52 +++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 tests/emmet-core/test_provenance.py diff --git a/tests/emmet-core/test_provenance.py b/tests/emmet-core/test_provenance.py new file mode 100644 index 0000000000..0db465eab3 --- /dev/null +++ b/tests/emmet-core/test_provenance.py @@ -0,0 +1,52 @@ +from datetime import datetime + +import pytest +from pymatgen import Element, Lattice +from pymatgen.core import Structure +from pymatgen.util.provenance import Author, HistoryNode, StructureNL + +from emmet.core.provenance import Database, ProvenanceDoc + + +@pytest.fixture +def structure(): + test_latt = Lattice.cubic(3.0) + test_struc = Structure(lattice=test_latt, species=["Fe"], coords=[[0, 0, 0]]) + return test_struc + + +@pytest.fixture +def snls(structure): + + docs = [ + StructureNL( + structure, + authors=[Author("test{i}", "test@test.com").as_dict()], + history=[HistoryNode("nothing", "url.com", {})], + created_at=datetime.utcnow(), + ).as_dict() + for i in range(3) + ] + docs[0]["snl_id"] = "icsd-2" + docs[1]["snl_id"] = "user-1" + docs[2]["snl_id"] = "pf-3" + + return docs + + +def test_from_snls(snls): + + doc = ProvenanceDoc.from_SNLs(material_id="mp-3", snls=snls) + + assert isinstance(doc, ProvenanceDoc) + assert doc.property_name == "provenance" + assert doc.material_id == "mp-3" + assert doc.theoretical is True + assert doc.database_IDs == { + Database.ICSD: ["icsd-2"], + Database.Pauling_Files: ["pf-3"], + } + + # Test experimental detection + snls[0]["about"]["history"][0]["experimental"] = True + assert ProvenanceDoc.from_SNLs(material_id="mp-3", snls=snls).theoretical is False