def test_01_needs_lantern(self): # Check that we can tell when an object needs to be looked up in Lantern apc = { "record" : { "rioxxterms:publication_date" : "2001-01-01", "rioxxterms:version" : "AAM", "dc:source" : { "name" : "Journal Title", "identifier" : [ {"type" : "issn", "id" : "XXXX-XXXX"} ], "oa_type" : "hybrid", "self_archiving" : { "preprint" : { "embargo" : 10, "policy" : "can" }, "postprint" : { "embargo" : 20, "policy" : "cannot" }, "publisher" : { "embargo" : 30, "policy" : "maybe" } } }, "rioxxterms:project" : [ {"funder_name" : "BBSRC"} ], "ali:license_ref" : [ { "type" : "CC BY" } ], "jm:repository" : [ {"repo_name" : "arXiv"} ] } } obj = PublicAPC(apc) needs = LanternApi._needs_lantern_data(obj) assert needs is False clone = deepcopy(apc) clone["record"]["rioxxterms:publication_date"] = "" cobj = PublicAPC(clone) needs = LanternApi._needs_lantern_data(cobj) assert needs is True clone = deepcopy(apc) clone["record"]["rioxxterms:version"] = "" cobj = PublicAPC(clone) needs = LanternApi._needs_lantern_data(cobj) assert needs is True clone = deepcopy(apc) clone["record"]["dc:source"]["name"] = "" cobj = PublicAPC(clone) needs = LanternApi._needs_lantern_data(cobj) assert needs is True clone = deepcopy(apc) clone["record"]["dc:source"]["identifier"][0]["type"] = "other" cobj = PublicAPC(clone) needs = LanternApi._needs_lantern_data(cobj) assert needs is True clone = deepcopy(apc) del clone["record"]["dc:source"]["oa_type"] cobj = PublicAPC(clone) needs = LanternApi._needs_lantern_data(cobj) assert needs is True clone = deepcopy(apc) clone["record"]["dc:source"]["self_archiving"]["preprint"]["embargo"] = None cobj = PublicAPC(clone) needs = LanternApi._needs_lantern_data(cobj) assert needs is True clone = deepcopy(apc) clone["record"]["dc:source"]["self_archiving"]["preprint"]["policy"] = None cobj = PublicAPC(clone) needs = LanternApi._needs_lantern_data(cobj) assert needs is True clone = deepcopy(apc) clone["record"]["dc:source"]["self_archiving"]["postprint"]["embargo"] = None cobj = PublicAPC(clone) needs = LanternApi._needs_lantern_data(cobj) assert needs is True clone = deepcopy(apc) clone["record"]["dc:source"]["self_archiving"]["postprint"]["policy"] = None cobj = PublicAPC(clone) needs = LanternApi._needs_lantern_data(cobj) assert needs is True clone = deepcopy(apc) clone["record"]["dc:source"]["self_archiving"]["publisher"]["embargo"] = None cobj = PublicAPC(clone) needs = LanternApi._needs_lantern_data(cobj) assert needs is True clone = deepcopy(apc) clone["record"]["dc:source"]["self_archiving"]["publisher"]["policy"] = None cobj = PublicAPC(clone) needs = LanternApi._needs_lantern_data(cobj) assert needs is True clone = deepcopy(apc) del clone["record"]["rioxxterms:project"][0]["funder_name"] cobj = PublicAPC(clone) needs = LanternApi._needs_lantern_data(cobj) assert needs is True clone = deepcopy(apc) del clone["record"]["ali:license_ref"][0]["type"] cobj = PublicAPC(clone) needs = LanternApi._needs_lantern_data(cobj) assert needs is True clone = deepcopy(apc) del clone["record"]["jm:repository"][0]["repo_name"] cobj = PublicAPC(clone) needs = LanternApi._needs_lantern_data(cobj) assert needs is True # now check that having a date cut-off works apc = { "admin" : { "lantern_lookup" : dates.now() } } obj = PublicAPC(apc) needs = LanternApi._needs_lantern_data(obj) assert needs is False apc["admin"]["lantern_lookup"] = dates.format(dates.before_now(31104000)) # a year ago obj = PublicAPC(apc) needs = LanternApi._needs_lantern_data(obj) assert needs is True