• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

iplweb / bpp / 3c407b5b-8434-4f25-9e12-005b14d23a79

07 Sep 2025 02:53PM UTC coverage: 33.615% (-8.7%) from 42.328%
3c407b5b-8434-4f25-9e12-005b14d23a79

push

circleci

mpasternak
Merge branch 'release/v202509.1221'

1 of 45 new or added lines in 2 files covered. (2.22%)

3993 existing lines in 129 files now uncovered.

16522 of 49150 relevant lines covered (33.62%)

0.34 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

0.0
src/bpp/tests/test_views/test_api.py
UNCOV
1
import json
×
2

UNCOV
3
import pytest
×
UNCOV
4
from django.urls import reverse
×
5

UNCOV
6
from fixtures import pbn_publication_json
×
7

UNCOV
8
from bpp.models import Autor_Dyscyplina, Uczelnia
×
UNCOV
9
from bpp.views.api import OstatniaJednostkaIDyscyplinaView, const
×
UNCOV
10
from bpp.views.api.pbn_get_by_parameter import GetPBNPublicationsByISBN
×
UNCOV
11
from bpp.views.api.pubmed import GetPubmedIDView, get_data_from_ncbi
×
12

13

UNCOV
14
def test_get_data_from_ncbi(mocker):
×
15
    query = mocker.patch("pymed.PubMed.query")
×
16
    query.return_value = "123"
×
17

18
    res = get_data_from_ncbi("foobar")
×
19
    assert res == ["1", "2", "3"]
×
20

21

UNCOV
22
def test_GetPubmedIDView_post_nie_ma_tytulu(rf):
×
23
    v = GetPubmedIDView()
×
24

25
    req = rf.get("/", data={"t": ""})
×
26
    res = json.loads(v.post(req).content)
×
27
    assert res == dict(error=const.PUBMED_BRAK_PARAMETRU)
×
28

29
    req = rf.get("/", data={"t": "    "})
×
30
    res = json.loads(v.post(req).content)
×
31
    assert res == dict(error=const.PUBMED_BRAK_PARAMETRU)
×
32

33

UNCOV
34
def test_GetPubmedIDView_post_brak_rezultaut(rf, mocker):
×
35

36
    query = mocker.patch("pymed.PubMed.query")
×
37
    query.return_value = []
×
38

39
    v = GetPubmedIDView()
×
40

41
    req = rf.post("/", data={"t": "razd dwa trzy test"})
×
42
    res = json.loads(v.post(req).content)
×
43
    assert res == dict(error=const.PUBMED_PO_TYTULE_BRAK)
×
44

45

UNCOV
46
def test_GetPubmedIDView_post_wiele_rezultatow(rf, mocker):
×
47

48
    query = mocker.patch("pymed.PubMed.query")
×
49
    query.return_value = ["1", "2", "3"]
×
50

51
    v = GetPubmedIDView()
×
52

53
    req = rf.post("/", data={"t": "razd dwa trzy test"})
×
54
    res = json.loads(v.post(req).content)
×
55
    assert res == dict(error=const.PUBMED_PO_TYTULE_WIELE)
×
56

57

UNCOV
58
def test_GetPubmedIDView_post_jeden_rezultat(rf, mocker):
×
59
    class FakePraca:
×
60
        pubmed_id = "lel"
×
61
        doi = "lol"
×
62
        pmc_id = "pmc_id"
×
63
        title = "none"
×
64

65
    query = mocker.patch("pymed.PubMed.query")
×
66
    query.return_value = [FakePraca()]
×
67

68
    v = GetPubmedIDView()
×
69

70
    req = rf.post("/", data={"t": "razd dwa trzy test"})
×
71
    res = json.loads(v.post(req).content)
×
72
    assert res["doi"] == "lol"
×
73

74

UNCOV
75
@pytest.mark.django_db
×
UNCOV
76
def test_GetPBNPublicationsByISBN_jedna_praca(
×
77
    rf, pbn_uczelnia, pbn_client, admin_user, wydawnictwo_nadrzedne
78
):
79
    ROK = 123
×
80
    ISBN = "123"
×
81
    UID_REKORDU = "foobar"
×
82
    TYTUL_REKORDU = "Jakis tytul"
×
83

84
    orig = Uczelnia.objects.get_default
×
85

86
    pub1 = pbn_publication_json(
×
87
        mongoId=UID_REKORDU, year=ROK, isbn=ISBN, title=TYTUL_REKORDU
88
    )
89

90
    wydawnictwo_nadrzedne.isbn = ISBN
×
91
    wydawnictwo_nadrzedne.rok = ROK
×
92
    wydawnictwo_nadrzedne.tytul_oryginalny = TYTUL_REKORDU
×
93
    wydawnictwo_nadrzedne.save()
×
94

95
    req = rf.post("/", data=dict(t=ISBN, rok="2021"))
×
96
    req.user = admin_user
×
97

98
    pbn_client.transport.return_values["/api/v1/search/publications?size=10"] = [pub1]
×
99
    pbn_client.transport.return_values[f"/api/v1/publications/id/{UID_REKORDU}"] = pub1
×
100
    try:
×
101
        Uczelnia.objects.get_default = lambda *args, **kw: pbn_uczelnia
×
102

103
        res = GetPBNPublicationsByISBN(request=req).post(req)
×
104
    finally:
105
        Uczelnia.objects.get_default = orig
×
106

107
    assert json.loads(res.content)["id"] == UID_REKORDU
×
108

109

UNCOV
110
@pytest.mark.django_db
×
UNCOV
111
def test_GetPBNPublicationsByISBN_wiele_isbn(
×
112
    rf, pbn_uczelnia, pbn_client, admin_user, wydawnictwo_nadrzedne
113
):
114
    ROK = 123
×
115
    ISBN = "123"
×
116
    UID_REKORDU = "foobar"
×
117
    TYTUL_REKORDU = "Jakis tytul"
×
118

119
    orig = Uczelnia.objects.get_default
×
120

121
    pub1 = pbn_publication_json(
×
122
        mongoId=UID_REKORDU, year=ROK, isbn=ISBN, title=TYTUL_REKORDU
123
    )
124
    pub2 = pbn_publication_json(
×
125
        mongoId=UID_REKORDU + "2", year=ROK, isbn=ISBN, title=TYTUL_REKORDU
126
    )
127

128
    wydawnictwo_nadrzedne.isbn = ISBN
×
129
    wydawnictwo_nadrzedne.rok = ROK
×
130
    wydawnictwo_nadrzedne.tytul_oryginalny = TYTUL_REKORDU
×
131
    wydawnictwo_nadrzedne.save()
×
132

133
    req = rf.post("/", data=dict(t=ISBN, rok="2021"))
×
134
    req.user = admin_user
×
135

136
    pbn_client.transport.return_values["/api/v1/search/publications?size=10"] = [
×
137
        pub1,
138
        pub2,
139
    ]
140
    pbn_client.transport.return_values[f"/api/v1/publications/id/{UID_REKORDU}"] = pub1
×
141
    pbn_client.transport.return_values[f"/api/v1/publications/id/{UID_REKORDU}2"] = pub2
×
142

143
    try:
×
144
        Uczelnia.objects.get_default = lambda *args, **kw: pbn_uczelnia
×
145

146
        res = GetPBNPublicationsByISBN(request=req).post(req)
×
147
    finally:
148
        Uczelnia.objects.get_default = orig
×
149

150
    assert json.loads(res.content)["id"] == UID_REKORDU
×
151

152

UNCOV
153
@pytest.fixture
×
UNCOV
154
def ojv():
×
155
    return OstatniaJednostkaIDyscyplinaView()
×
156

157

UNCOV
158
def test_ostatnia_jednostka_view(autor, jednostka, rf, ojv, dyscyplina1):
×
159
    jednostka.dodaj_autora(autor)
×
160

161
    Autor_Dyscyplina.objects.create(
×
162
        rok=2000, autor=autor, dyscyplina_naukowa=dyscyplina1
163
    )
164

165
    fr = rf.post("/", data=dict(autor_id=autor.pk, rok=2000))
×
166
    res = ojv.post(fr)
×
167
    res = json.loads(res.content)
×
168
    assert "jednostka_id" in res
×
169
    assert "dyscyplina_id" in res
×
170

171

UNCOV
172
def test_ostatnia_jednostka_view_dwie_dysc(
×
173
    autor, jednostka, rf, ojv, dyscyplina1, dyscyplina2
174
):
175
    jednostka.dodaj_autora(autor)
×
176

177
    Autor_Dyscyplina.objects.create(
×
178
        rok=2000,
179
        autor=autor,
180
        dyscyplina_naukowa=dyscyplina1,
181
        subdyscyplina_naukowa=dyscyplina2,
182
    )
183

184
    fr = rf.post("/", data=dict(autor_id=autor.pk, rok=2000))
×
185
    res = ojv.post(fr)
×
186
    res = json.loads(res.content)
×
187
    assert "jednostka_id" in res
×
188
    assert "dyscyplina_id" not in res
×
189

190

UNCOV
191
def test_ostatnia_jednostka_view_rok_empty(autor, jednostka, rf, ojv):
×
192
    jednostka.dodaj_autora(autor)
×
193

194
    fr = rf.post("/", data=dict(autor_id=autor.pk, rok=""))
×
195
    res = ojv.post(fr)
×
196
    res = json.loads(res.content)
×
197
    assert "jednostka_id" in res
×
198
    assert "dyscyplina_id" not in res
×
199

200

UNCOV
201
def test_ostatnia_jednostka_errors_autor_null(rf, ojv):
×
202
    fr = rf.post("/", data=dict(autor_id=""))
×
203
    res = ojv.post(fr)
×
204
    assert json.loads(res.content)["status"] == "error"
×
205

206

UNCOV
207
@pytest.mark.django_db
×
UNCOV
208
def test_ostatnia_jednostka_errors_autor_404(rf, ojv):
×
209
    fr = rf.post("/", data=dict(autor_id=10))
×
210
    res = ojv.post(fr)
×
211
    assert json.loads(res.content)["status"] == "error"
×
212

213

UNCOV
214
@pytest.mark.django_db
×
UNCOV
215
def test_ostatnia_jednostka_errors_autor_404_2(rf, ojv):
×
216
    fr = rf.post("/", data=dict(autor_id="heyyy"))
×
217
    res = ojv.post(fr)
×
218
    assert json.loads(res.content)["status"] == "error"
×
219

220

UNCOV
221
def test_ostatnia_jednostka_errors_autor_bez_dysc(rf, ojv, autor):
×
222
    fr = rf.post("/", data=dict(autor_id=autor.pk))
×
223
    res = ojv.post(fr)
×
224

225
    res = json.loads(res.content)
×
226
    assert res["jednostka_id"] is None
×
227
    assert res["nazwa"] is None
×
228
    assert res["status"] == "ok"
×
229

230

UNCOV
231
def test_ustaw_orcid_autora(csrf_exempt_django_admin_app, autor_jan_kowalski):
×
232
    ORCID = "1" * 19
×
233

234
    assert autor_jan_kowalski.orcid != ORCID
×
235
    csrf_exempt_django_admin_app.post(
×
236
        reverse("bpp:api_ustaw_orcid"),
237
        params={"autor": autor_jan_kowalski.pk, "orcid": ORCID},
238
    )
239

240
    autor_jan_kowalski.refresh_from_db()
×
241
    assert autor_jan_kowalski.orcid == ORCID
×
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc