summaryrefslogtreecommitdiffstats
path: root/python/tests/api_containers.py
blob: d6fd421a62c5899597ccc04cf4fa945836d091d9 (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
import pytest
from fatcat_openapi_client import *
from fixtures import *


def test_container(api):
    eg = quick_eg(api)

    # all the fields!
    c1 = ContainerEntity(
        name="some container name",
        container_type="journal",
        publisher="some container publisher",
        issnl="1234-567X",
        issne="1230-0000",
        issnp="1234-0001",
        wikidata_qid="Q954248",
        extra=dict(a=1, b=2),
        edit_extra=dict(test_key="containers rule"),
    )

    c1edit = api.create_container(eg.editgroup_id, c1)
    assert c1edit.extra == c1.edit_extra
    api.accept_editgroup(eg.editgroup_id)
    c2 = api.get_container(c1edit.ident)

    # check that fields match
    assert c1.name == c2.name
    assert c1.container_type == c2.container_type
    assert c1.publisher == c2.publisher
    assert c1.issnl == c2.issnl
    assert c1.wikidata_qid == c2.wikidata_qid
    assert c1.extra == c2.extra

    # get revision
    c2_rev = api.get_container_revision(c1edit.revision)
    assert c1edit.revision == c2_rev.revision
    assert c2.revision == c2_rev.revision
    assert c2.name == c2_rev.name

    # lookups
    tmp = api.lookup_container(issnl=c1.issnl)
    assert tmp.revision == c2.revision
    tmp = api.lookup_container(issne=c1.issne)
    assert tmp.revision == c2.revision
    tmp = api.lookup_container(issnp=c1.issnp)
    assert tmp.revision == c2.revision
    tmp = api.lookup_container(issn=c1.issnp)
    assert tmp.revision == c2.revision
    with pytest.raises(fatcat_openapi_client.rest.ApiException):
        api.lookup_container(issne=c1.issnp)
    with pytest.raises(fatcat_openapi_client.rest.ApiException):
        api.lookup_container(issnp=c1.issne)

    # get redirects (none)
    assert api.get_container_redirects(c2.ident) == []

    # delete
    eg = quick_eg(api)
    api.delete_container(eg.editgroup_id, c2.ident)
    api.accept_editgroup(eg.editgroup_id)
    c2 = api.get_container(c2.ident)
    assert c2.state == "deleted"


def test_container_bad_idents(api):

    # all the fields!
    c1 = ContainerEntity(
        name="some container name",
        container_type="journal",
        publisher="some container publisher",
        wikidata_qid="Q954248",
        extra=dict(a=1, b=2),
        edit_extra=dict(test_key="containers rule"),
    )

    with pytest.raises(ValueError):
        c1.issnl = "1234-123 "

    with pytest.raises(ValueError):
        c1.issne = "asdf-hhhh"


def test_container_examples(api):

    c1 = api.get_container("aaaaaaaaaaaaaeiraaaaaaaaam")
    assert c1.name == "PLOS Medicine"
    assert c1.issnl == "1549-1277"
    assert c1.issne == "1549-1676"
    assert c1.issnp == "1549-1277"
    assert c1.publication_status == "active"

    c2 = api.lookup_container(issnl=c1.issnl)
    assert c1.ident == c2.ident

    c3 = api.lookup_container(issnp=c1.issnp)
    assert c1.ident == c3.ident

    c4 = api.lookup_container(issn=c1.issnp)
    assert c1.ident == c4.ident