aboutsummaryrefslogtreecommitdiffstats
path: root/python/tests/api_releases.py
blob: 247ad2c20952735a6f2ad956bc27f08a8d530ba1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116

import json
import pytest
import datetime
from copy import copy

from fatcat_client import *
from fatcat_client.rest import ApiException
from fixtures import *


def test_release(api):

    eg = quick_eg(api)

    # all the fields!
    r1 = ReleaseEntity(
        title="some title",
        original_title="оригинальное название",
        release_type="post-weblog",
        release_status="pre-print",
        release_date=datetime.datetime.utcnow().date(),
        release_year=2015,
        doi="10.5555/12345678",
        pmid="12345",
        pmcid="PMC4321",
        wikidata_qid="Q1234",
        isbn13="978-3-16-148410-0",
        core_id="187348",
        arxiv_id="aslkdjfh",
        jstor_id="8328424",
        volume="84",
        issue="XII",
        pages="4-99",
        publisher="some publisher",
        language="en",
        license_slug="CC-0",
        extra=dict(a=1, b=2),
        contribs=[],
        refs=[],
        abstracts=[
            ReleaseEntityAbstracts(
                content="this is some abstract",
                mimetype="text/plain",
                lang="en"),
            ReleaseEntityAbstracts(
                content="this is some other abstract",
                mimetype="text/plain",
                lang="de"),
        ],
    )

    r1edit = api.create_release(r1, editgroup_id=eg.editgroup_id)
    api.accept_editgroup(eg.editgroup_id)
    r2 = api.get_release(r1edit.ident)

    # check that fields match
    assert r1.title == r2.title
    assert r1.original_title == r2.original_title
    assert r1.release_type == r2.release_type
    assert r1.release_date == r2.release_date
    assert r1.release_year == r2.release_year
    assert r1.doi == r2.doi
    assert r1.pmid == r2.pmid
    assert r1.pmcid == r2.pmcid
    assert r1.wikidata_qid == r2.wikidata_qid
    assert r1.isbn13 == r2.isbn13
    assert r1.core_id == r2.core_id
    assert r1.arxiv_id == r2.arxiv_id
    assert r1.jstor_id == r2.jstor_id
    assert r1.volume == r2.volume
    assert r1.issue == r2.issue
    assert r1.pages == r2.pages
    assert r1.publisher == r2.publisher
    assert r1.language == r2.language
    assert r1.license_slug == r2.license_slug
    assert r1.extra == r2.extra

    for i in range(len(r1.abstracts)):
        r1.abstracts[i].content == r2.abstracts[i].content
        r1.abstracts[i].mimetype == r2.abstracts[i].mimetype
        r1.abstracts[i].lang == r2.abstracts[i].lang
    for i in range(len(r1.contribs)):
        r1.contribs[i] == r2.contribs[i]
    for i in range(len(r1.refs)):
        r1.refs[i] == r2.refs[i]

    # expansion
    # TODO: via work
    # lookup
    # TODO: via all; but need to generate random identifiers

def test_release_examples(api):

    api.lookup_release(pmid='54321')
    api.lookup_release(isbn13='978-3-16-148410-0')

    r1 = api.get_release('aaaaaaaaaaaaarceaaaaaaaaai')
    assert r1.title == "bigger example"
    assert len(r1.refs) == 5
    assert r1.contribs[0].role == "editor"
    assert r1.abstracts[0].mimetype == "application/xml+jats"

def test_empty_fields(api):

    eg = quick_eg(api)

    r1 = ReleaseEntity(title="something", contribs=[ReleaseContrib(raw_name="somebody")])
    r1edit = api.create_release(r1, editgroup_id=eg.editgroup_id)

    with pytest.raises(fatcat_client.rest.ApiException):
        r2 = ReleaseEntity(title="")
        api.create_release(r2, editgroup_id=eg.editgroup_id)
    with pytest.raises(fatcat_client.rest.ApiException):
        r2 = ReleaseEntity(title="something", contribs=[ReleaseContrib(raw_name="")])
        api.create_release(r2, editgroup_id=eg.editgroup_id)