def test_pd_field(): db = SqliteDatabase(":memory:") class TestModel(Model): pf = PartialDateField(null=True) class Meta: database = db TestModel.create_table() TestModel(pf=PartialDate()).save() TestModel(pf=None).save() res = [r[0] for r in db.execute_sql("SELECT pf FROM testmodel").fetchall()] assert res[0] is None and res[1] is None TestModel(pf=PartialDate(1997)).save() TestModel(pf=PartialDate(1996, 4)).save() TestModel(pf=PartialDate(1995, 5, 13)).save() res = [r[0] for r in db.execute_sql("SELECT pf FROM testmodel").fetchall()] assert '1995-05-13' in res assert '1996-04-**' in res assert '1997-**-**' in res res = [r.pf for r in TestModel.select().order_by(TestModel.pf)] assert res[0] is None assert res[1] is None assert res[2] == PartialDate(1995, 5, 13) assert res[3] == PartialDate(1996, 4) assert res[4] == PartialDate(1997)
def test_partial_date(): pd = PartialDate.create({"year": {"value": "2003"}}) with pytest.raises(TypeError): pd.as_datetime() assert pd.as_orcid_dict() == { 'year': { 'value': '2003' }, 'month': None, 'day': None } assert pd.year == 2003 pd = PartialDate.create({ "year": { "value": "2003" }, "month": { "value": '07' }, "day": { "value": '31' } }) assert pd.as_orcid_dict() == { 'year': { 'value': '2003' }, 'month': { "value": '07' }, 'day': { "value": '31' } } assert pd.year == 2003 and pd.month == 7 and pd.day == 31 assert PartialDate().as_orcid_dict() is None assert PartialDate.create(None) is None assert PartialDate.create({}) is None assert PartialDate.create("1997") == PartialDate(year=1997, month=None, day=None) assert PartialDate.create("1997-12") == PartialDate(year=1997, month=12, day=None) assert PartialDate.create("1997-12-31") == PartialDate(year=1997, month=12, day=31) assert PartialDate.create("1997/12") == PartialDate(year=1997, month=12, day=None) assert PartialDate.create("1997/12/31") == PartialDate(year=1997, month=12, day=31) assert PartialDate.create("12/1997") == PartialDate(year=1997, month=12, day=None) assert PartialDate.create("31/12/1997") == PartialDate(year=1997, month=12, day=31) assert PartialDate.create("1997.12") == PartialDate(year=1997, month=12, day=None) assert PartialDate.create("1997.12.31") == PartialDate(year=1997, month=12, day=31) assert PartialDate.create("12.1997") == PartialDate(year=1997, month=12, day=None) assert PartialDate.create("31.12.1997") == PartialDate(year=1997, month=12, day=31) assert PartialDate.create("5.03.2018") == PartialDate(year=2018, month=3, day=5) assert PartialDate.create("1997 12:00:00 PM") == PartialDate(year=1997, month=None, day=None) assert PartialDate.create("1997-12 12:00:00 PM") == PartialDate(year=1997, month=12, day=None) assert PartialDate.create("1997-12-31 12:00:00 PM") == PartialDate( year=1997, month=12, day=31) assert PartialDate.create("1997/12 12:00:00 PM") == PartialDate(year=1997, month=12, day=None) assert PartialDate.create("1997/12/31 12:00:00 PM") == PartialDate( year=1997, month=12, day=31) assert PartialDate.create("12/1997 12:00:00 PM") == PartialDate(year=1997, month=12, day=None) assert PartialDate.create("31/12/1997 12:00:00 PM") == PartialDate( year=1997, month=12, day=31) assert PartialDate.create("6/08/2017 12:00:00 PM") == PartialDate( year=2017, month=8, day=6) assert PartialDate.create("1997.12 12:00:00 PM") == PartialDate(year=1997, month=12, day=None) assert PartialDate.create("1997.12.31 12:00:00 PM") == PartialDate( year=1997, month=12, day=31) assert PartialDate.create("12.1997 12:00:00 PM") == PartialDate(year=1997, month=12, day=None) assert PartialDate.create("31.12.1997 12:00:00 PM") == PartialDate( year=1997, month=12, day=31) assert PartialDate.create("6.08.2017 12:00:00 PM") == PartialDate( year=2017, month=8, day=6) with pytest.raises(ModelException): PartialDate.create("ABC") pd = PartialDate(2003, 12, 31) assert pd.as_datetime() == datetime(2003, 12, 31) pd = PartialDate() assert str(pd) == ""
def test_create_or_update_work(app, mocker): """Test create or update work.""" mocker.patch("orcid_hub.utils.send_email", send_mail_mock) mocker.patch("orcid_api_v3.api.DevelopmentMemberAPIV30Api.create_workv3", create_or_update_fund_mock) org = app.data["org"] mocker.patch("orcid_hub.orcid_client.MemberAPIV3.get_record", return_value=get_profile(org=org)) u = User.create(email="*****@*****.**", name="TEST USER", roles=Role.RESEARCHER, orcid="12344", confirmed=True, organisation=org) UserOrg.create(user=u, org=org) t = Task.create(org=org, filename="xyz.json", created_by=u, updated_by=u, task_type=TaskType.WORK) wr = WorkRecord.create(task=t, title="Test titile", subtitle="Test titile", translated_title="Test title", translated_title_language_code="hi", journal_title="Test titile", short_description="Test desc", citation_type="bibtex", citation_value="Test", type="BOOK_CHAPTER", publication_date=PartialDate.create("2003-07-14"), url="Test org", language_code="en", country="NZ", org_name="Test_orgname", city="Test city", region="Test", is_active=True) WorkInvitee.create(record=wr, first_name="Test", email="*****@*****.**", orcid="12344", visibility="PUBLIC") WorkExternalId.create(record=wr, type="Test_type", value="Test_value", url="Test", relationship="SELF") WorkContributor.create(record=wr, contributor_sequence="first", orcid="1213", role="author", name="xyz", email="*****@*****.**") UserInvitation.create(invitee=u, inviter=u, org=org, task=t, email="*****@*****.**", token="xyztoken") OrcidToken.create(user=u, org=org, scopes="/read-limited,/activities/update", access_token="Test_token") utils.process_work_records() invitee = WorkInvitee.get(orcid="12344") assert 12399 == invitee.put_code assert "12344" == invitee.orcid
def test_create_or_update_peer_review(app, mocker): """Test create or update peer review.""" mocker.patch("orcid_hub.utils.send_email", send_mail_mock) mocker.patch( "orcid_api_v3.api.DevelopmentMemberAPIV30Api.create_peer_reviewv3", create_or_update_fund_mock) org = app.data["org"] mocker.patch("orcid_hub.orcid_client.MemberAPIV3.get_record", return_value=get_profile(org=org)) u = User.create(email="*****@*****.**", name="TEST USER", roles=Role.RESEARCHER, orcid="12344", confirmed=True, organisation=org) UserOrg.create(user=u, org=org) t = Task.create(id=12, org=org, filename="xyz.json", created_by=u, updated_by=u, task_type=TaskType.PEER_REVIEW) pr = PeerReviewRecord.create( task=t, review_group_id="issn:12131", reviewer_role="reviewer", review_url="xyz", review_type="REVIEW", subject_external_id_type="doi", subject_external_id_value="1212", subject_external_id_url="url/SELF", subject_external_id_relationship="SELF", subject_container_name="Journal title", subject_type="JOURNAL_ARTICLE", subject_name_title="name", subject_name_subtitle="subtitle", review_completion_date=PartialDate.create("2003-07-14"), subject_name_translated_title_lang_code="en", subject_name_translated_title="sdsd", subject_url="url", convening_org_name="THE ORGANISATION", convening_org_city="auckland", convening_org_region="auckland", convening_org_country="NZ", convening_org_disambiguated_identifier="123", convening_org_disambiguation_source="1212", is_active=True) PeerReviewInvitee.create(record=pr, first_name="Test", email="*****@*****.**", orcid="12344", visibility="PUBLIC") PeerReviewExternalId.create(record=pr, type="Test_type", value="122334_different", url="Test", relationship="SELF") UserInvitation.create(invitee=u, inviter=u, org=org, task=t, email="*****@*****.**", token="xyztoken") OrcidToken.create(user=u, org=org, scopes="/read-limited,/activities/update", access_token="Test_token") utils.process_peer_review_records() peer_review_invitees = PeerReviewInvitee.get(orcid=12344) assert 12399 == peer_review_invitees.put_code assert "12344" == peer_review_invitees.orcid
def test_create_or_update_funding(app, mocker): """Test create or update funding.""" mocker.patch("orcid_hub.utils.send_email", send_mail_mock) mocker.patch( "orcid_api_v3.api.DevelopmentMemberAPIV30Api.create_fundingv3", create_or_update_fund_mock) org = app.data["org"] mocker.patch("orcid_hub.orcid_client.MemberAPIV3.get_record", return_value=get_profile(org=org)) u = User.create(email="*****@*****.**", name="TEST USER", roles=Role.RESEARCHER, orcid="123", confirmed=True, organisation=org) UserOrg.create(user=u, org=org) t = Task.create(org=org, filename="xyz.json", created_by=u, updated_by=u, task_type=TaskType.FUNDING) fr = FundingRecord.create(task=t, title="Test titile", translated_title="Test title", translated_title_language_code="hi", type="GRANT", organization_defined_type="Test org", short_description="Test desc", amount="1000", currency="USD", org_name="Test_orgname", city="Test city", region="Test", url="url", start_date=PartialDate.create("2003-07-14"), end_date=PartialDate.create("2004-07-14"), country="NZ", disambiguated_id="Test_dis", disambiguation_source="Test_source", is_active=True) FundingInvitee.create(record=fr, first_name="Test", email="*****@*****.**", visibility="PUBLIC", orcid="123") ExternalId.create(record=fr, type="Test_type", value="Test_value", url="Test", relationship="SELF") FundingContributor.create(record=fr, orcid="1213", role="LEAD", name="Contributor", email="*****@*****.**") UserInvitation.create(invitee=u, inviter=u, org=org, task=t, email="*****@*****.**", token="xyztoken") OrcidToken.create(user=u, org=org, scopes="/read-limited,/activities/update", access_token="Test_token") utils.process_funding_records() funding_invitees = FundingInvitee.get(orcid="12344") assert 12399 == funding_invitees.put_code assert "12344" == funding_invitees.orcid