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

iplweb / bpp / 55ddaca6-3f38-4b6a-ad10-3679ec22834c

23 Aug 2025 09:29PM UTC coverage: 46.899% (+1.1%) from 45.781%
55ddaca6-3f38-4b6a-ad10-3679ec22834c

push

circleci

mpasternak
Merge branch 'release/v202508.1202'

1 of 1 new or added line in 1 file covered. (100.0%)

433 existing lines in 31 files now uncovered.

17908 of 38184 relevant lines covered (46.9%)

1.2 hits per line

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

0.0
src/pbn_api/tests/test_bpp_admin_helpers.py
UNCOV
1
import pytest
×
UNCOV
2
from model_bakery import baker
×
3

UNCOV
4
from fixtures import MOCK_MONGO_ID, MOCK_RETURNED_INSTITUTION_PUBLICATION_V2_DATA
×
UNCOV
5
from fixtures.pbn_api import MOCK_RETURNED_MONGODB_DATA
×
UNCOV
6
from pbn_api.adapters.wydawnictwo import WydawnictwoPBNAdapter
×
UNCOV
7
from pbn_api.client import (
×
8
    PBN_GET_INSTITUTION_STATEMENTS,
9
    PBN_GET_PUBLICATION_BY_ID_URL,
10
    PBN_POST_PUBLICATIONS_URL,
11
)
UNCOV
12
from pbn_api.const import (
×
13
    PBN_GET_INSTITUTION_PUBLICATIONS_V2,
14
    PBN_POST_PUBLICATION_NO_STATEMENTS_URL,
15
)
UNCOV
16
from pbn_api.exceptions import AccessDeniedException
×
UNCOV
17
from pbn_api.models import Publication, SentData
×
UNCOV
18
from pbn_api.tests.utils import middleware
×
19

UNCOV
20
from django.contrib.messages import get_messages
×
21

UNCOV
22
from bpp.admin.helpers.pbn_api.gui import sprobuj_wyslac_do_pbn_gui
×
UNCOV
23
from bpp.models import Charakter_Formalny, Wydawnictwo_Ciagle
×
24

25

UNCOV
26
@pytest.mark.django_db
×
UNCOV
27
def test_sprobuj_wyslac_do_pbn_charakter_zly(
×
28
    rf,
29
    pbn_wydawnictwo_zwarte,
30
):
31
    req = rf.get("/")
×
32

33
    pbn_wydawnictwo_zwarte.charakter_formalny = baker.make(
×
34
        Charakter_Formalny, rodzaj_pbn=None
35
    )
36

37
    with middleware(req):
×
38
        sprobuj_wyslac_do_pbn_gui(req, pbn_wydawnictwo_zwarte)
×
39

40
    msg = get_messages(req)
×
41

42
    assert "nie będzie eksportowany do PBN" in list(msg)[0].message
×
43

44

UNCOV
45
@pytest.mark.django_db
×
UNCOV
46
def test_sprobuj_wyslac_do_pbn_uczelnia_brak_obiektu(
×
47
    rf, pbn_wydawnictwo_zwarte_z_charakterem
48
):
49
    req = rf.get("/")
×
50

51
    with middleware(req):
×
52
        sprobuj_wyslac_do_pbn_gui(req, pbn_wydawnictwo_zwarte_z_charakterem)
×
53

54
    msg = get_messages(req)
×
55

56
    assert 'w systemie brakuje obiektu "Uczelnia"' in list(msg)[0].message
×
57

58

UNCOV
59
@pytest.mark.django_db
×
UNCOV
60
def test_sprobuj_wyslac_do_pbn_uczelnia_integracja_wylaczona(
×
61
    rf, pbn_wydawnictwo_zwarte_z_charakterem, uczelnia
62
):
63
    req = rf.get("/")
×
64

65
    uczelnia.pbn_integracja = False
×
66
    uczelnia.pbn_aktualizuj_na_biezaco = False
×
67
    uczelnia.save()
×
68

69
    with middleware(req):
×
70
        sprobuj_wyslac_do_pbn_gui(req, pbn_wydawnictwo_zwarte_z_charakterem)
×
71

72
    msg = get_messages(req)
×
73
    assert len(msg) == 1
×
74

75

UNCOV
76
@pytest.mark.django_db
×
UNCOV
77
def test_sprobuj_wyslac_do_pbn_dane_juz_wyslane(
×
78
    pbn_wydawnictwo_zwarte_z_charakterem, pbn_uczelnia, pbn_client, rf
79
):
80
    SentData.objects.updated(
×
81
        pbn_wydawnictwo_zwarte_z_charakterem,
82
        WydawnictwoPBNAdapter(pbn_wydawnictwo_zwarte_z_charakterem).pbn_get_json(),
83
    )
84

85
    req = rf.get("/")
×
86

87
    with middleware(req):
×
88
        sprobuj_wyslac_do_pbn_gui(
×
89
            req, pbn_wydawnictwo_zwarte_z_charakterem, pbn_client=pbn_client
90
        )
91

92
    msg = get_messages(req)
×
93
    assert "Identyczne dane rekordu" in list(msg)[0].message
×
94

95

UNCOV
96
@pytest.mark.django_db
×
UNCOV
97
def test_sprobuj_wyslac_do_pbn_access_denied(
×
98
    pbn_wydawnictwo_zwarte_z_charakterem, pbn_client, rf, pbn_uczelnia
99
):
100
    req = rf.get("/")
×
101

102
    pbn_client.transport.return_values[PBN_POST_PUBLICATION_NO_STATEMENTS_URL] = (
×
103
        AccessDeniedException(url="foo", content="testujemy")
104
    )
105

106
    with middleware(req):
×
107
        sprobuj_wyslac_do_pbn_gui(
×
108
            req, pbn_wydawnictwo_zwarte_z_charakterem, pbn_client=pbn_client
109
        )
110

111
    msg = get_messages(req)
×
112
    assert "Brak dostępu --" in list(msg)[0].message
×
113

114

UNCOV
115
@pytest.mark.django_db
×
UNCOV
116
def test_sprobuj_wyslac_do_pbn_brak_prawidlowej_odpowiedzi(
×
117
    pbn_wydawnictwo_zwarte_z_charakterem, pbn_client, rf, pbn_uczelnia
118
):
119
    req = rf.get("/")
×
120

121
    pbn_client.transport.return_values[PBN_POST_PUBLICATION_NO_STATEMENTS_URL] = {
×
122
        "elem": "coz, jakby nie. "
123
    }
124

125
    with middleware(req):
×
126
        sprobuj_wyslac_do_pbn_gui(
×
127
            req, pbn_wydawnictwo_zwarte_z_charakterem, pbn_client=pbn_client
128
        )
129

130
    msg = get_messages(req)
×
131
    assert "zwrócił nieoczekiwaną odpowiedź" in list(msg)[0].message
×
132

133

UNCOV
134
@pytest.mark.django_db
×
UNCOV
135
def test_sprobuj_wyslac_do_pbn_inny_exception(
×
136
    pbn_wydawnictwo_zwarte_z_charakterem, pbn_client, rf, pbn_uczelnia
137
):
138
    req = rf.get("/")
×
139

140
    pbn_client.transport.return_values[PBN_POST_PUBLICATIONS_URL] = ZeroDivisionError
×
141

142
    with middleware(req):
×
143
        sprobuj_wyslac_do_pbn_gui(
×
144
            req, pbn_wydawnictwo_zwarte_z_charakterem, pbn_client=pbn_client
145
        )
146

147
    msg = get_messages(req)
×
148
    assert "Nie można zsynchronizować" in list(msg)[0].message
×
149

150

UNCOV
151
@pytest.mark.django_db
×
UNCOV
152
def test_sprobuj_wyslac_do_pbn_inny_blad(
×
153
    pbn_wydawnictwo_zwarte_z_charakterem, pbn_client, rf, pbn_uczelnia
154
):
155
    req = rf.get("/")
×
156

157
    pbn_client.transport.return_values[PBN_POST_PUBLICATIONS_URL] = Exception("test")
×
158

159
    with middleware(req):
×
160
        sprobuj_wyslac_do_pbn_gui(
×
161
            req, pbn_wydawnictwo_zwarte_z_charakterem, pbn_client=pbn_client
162
        )
163

164
    msg = get_messages(req)
×
165
    assert "Nie można zsynchronizować" in list(msg)[0].message
×
166

167

UNCOV
168
@pytest.mark.django_db
×
UNCOV
169
def test_sprobuj_wyslac_do_pbn_z_oswiadczeniami(
×
170
    pbn_wydawnictwo_zwarte_z_autorem_z_dyscyplina, pbn_client, rf, pbn_uczelnia
171
):
172
    req = rf.get("/")
×
173

174
    pbn_client.transport.return_values[PBN_POST_PUBLICATIONS_URL] = {"objectId": "123"}
×
175
    pbn_client.transport.return_values[
×
176
        PBN_GET_PUBLICATION_BY_ID_URL.format(id="123")
177
    ] = MOCK_RETURNED_MONGODB_DATA
178
    pbn_client.transport.return_values[
×
179
        PBN_GET_PUBLICATION_BY_ID_URL.format(id="456")
180
    ] = MOCK_RETURNED_MONGODB_DATA
181
    pbn_client.transport.return_values[
×
182
        PBN_GET_INSTITUTION_STATEMENTS + "?publicationId=123&size=5120"
183
    ] = []
184
    pbn_client.transport.return_values[
×
185
        PBN_GET_INSTITUTION_PUBLICATIONS_V2 + "?publicationId=123&size=10"
186
    ] = MOCK_RETURNED_INSTITUTION_PUBLICATION_V2_DATA
187

188
    with middleware(req):
×
189
        sprobuj_wyslac_do_pbn_gui(
×
190
            req, pbn_wydawnictwo_zwarte_z_autorem_z_dyscyplina, pbn_client=pbn_client
191
        )
192

193
    msg = get_messages(req)
×
194
    assert "zostały zaktualizowane" in list(msg)[0].message
×
195

196

UNCOV
197
@pytest.mark.django_db
×
UNCOV
198
def test_sprobuj_wyslac_do_pbn_bez_oswiadczen_sukces(
×
199
    pbn_wydawnictwo_zwarte_z_charakterem, pbn_client, rf, pbn_uczelnia
200
):
201
    req = rf.get("/")
×
202

203
    pbn_client.transport.return_values[PBN_POST_PUBLICATION_NO_STATEMENTS_URL] = [
×
204
        {"id": "123"}
205
    ]
206
    pbn_client.transport.return_values[
×
207
        PBN_GET_PUBLICATION_BY_ID_URL.format(id="123")
208
    ] = MOCK_RETURNED_MONGODB_DATA
209

210
    with middleware(req):
×
211
        sprobuj_wyslac_do_pbn_gui(
×
212
            req, pbn_wydawnictwo_zwarte_z_charakterem, pbn_client=pbn_client
213
        )
214

215
    msg = get_messages(req)
×
216
    assert "nie posiada oświadczeń" in list(msg)[0].message
×
217
    assert "zostały zaktualizowane" in list(msg)[1].message
×
218

219

UNCOV
220
@pytest.mark.django_db
×
UNCOV
221
def test_sprobuj_wyslac_do_pbn_ostrzezenie_brak_dyscypliny_autora(
×
222
    pbn_wydawnictwo_zwarte_z_autorem_z_dyscyplina, pbn_client, rf, pbn_uczelnia
223
):
224
    req = rf.get("/")
×
225

226
    for wza in pbn_wydawnictwo_zwarte_z_autorem_z_dyscyplina.autorzy_set.all():
×
227
        wza.afiliuje = True
×
228
        wza.przypieta = True
×
229
        wza.save()
×
230

231
        jednostka = wza.jednostka
×
232
        jednostka.skupia_pracownikow = True
×
233
        jednostka.save()
×
234

235
        autor = wza.autor
×
236
        autor.pbn_uid = None
×
237
        autor.pbn_uid_id = None
×
238
        autor.save()
×
239

240
    pbn_client.transport.return_values[PBN_POST_PUBLICATIONS_URL] = {"objectId": "123"}
×
241
    pbn_client.transport.return_values[
×
242
        PBN_GET_PUBLICATION_BY_ID_URL.format(id="123")
243
    ] = MOCK_RETURNED_MONGODB_DATA
244
    pbn_client.transport.return_values[
×
245
        PBN_GET_INSTITUTION_STATEMENTS + "?publicationId=123&size=5120"
246
    ] = []
247

248
    with middleware(req):
×
249
        sprobuj_wyslac_do_pbn_gui(
×
250
            req, pbn_wydawnictwo_zwarte_z_autorem_z_dyscyplina, pbn_client=pbn_client
251
        )
252

253
    msg = get_messages(req)
×
254
    assert "nie zostanie oświadczona" in list(msg)[0].message
×
255

256

UNCOV
257
@pytest.mark.django_db
×
UNCOV
258
def test_sprobuj_wyslac_do_pbn_przychodzi_istniejacy_pbn_uid_dla_nowego_rekordu(
×
259
    pbn_wydawnictwo_zwarte_z_autorem_z_dyscyplina: Wydawnictwo_Ciagle,
260
    pbn_client,
261
    rf,
262
    pbn_uczelnia,
263
):
264
    """Ten test sprawdza, jak zachowa się system w przypadku wysyłki nowego rekordu, gdy przyjdzie PBN UID
265
    takiego rekordu, który już istnieje"""
266

267
    req = rf.get("/")
×
268

269
    # To jest istniejące w bazie wydawnictwo ciągłe z PBN UID = MOCK_MONGO_ID ("123")
270
    publikacja = baker.make(Publication, pk=MOCK_MONGO_ID)
×
271
    istniejace_wydawnictwo_ciagle = baker.make(  # noqa
×
272
        Wydawnictwo_Ciagle, pbn_uid=publikacja
273
    )
274

275
    # To jest NOWO WYSYŁANE wydawnictwo ciągłe, które nie ma PBN UID
276
    pbn_wydawnictwo_zwarte_z_autorem_z_dyscyplina.pbn_uid = None
×
277
    pbn_wydawnictwo_zwarte_z_autorem_z_dyscyplina.save(update_fields=["pbn_uid"])
×
278

279
    # To jest odpowiedź z PBNu gdzie zwrotnie przyjdzie objectId = MOCK_MONGO_ID
280
    pbn_client.transport.return_values[PBN_POST_PUBLICATIONS_URL] = {
×
281
        "objectId": MOCK_MONGO_ID
282
    }
283
    pbn_client.transport.return_values[
×
284
        PBN_GET_PUBLICATION_BY_ID_URL.format(id=MOCK_MONGO_ID)
285
    ] = MOCK_RETURNED_MONGODB_DATA
286
    pbn_client.transport.return_values[
×
287
        PBN_GET_PUBLICATION_BY_ID_URL.format(id=MOCK_MONGO_ID)
288
    ] = MOCK_RETURNED_MONGODB_DATA
289
    pbn_client.transport.return_values[PBN_GET_PUBLICATION_BY_ID_URL.format(id=456)] = (
×
290
        MOCK_RETURNED_MONGODB_DATA
291
    )
292
    pbn_client.transport.return_values[
×
293
        PBN_GET_INSTITUTION_STATEMENTS + f"?publicationId={MOCK_MONGO_ID}&size=5120"
294
    ] = []
295
    pbn_client.transport.return_values[
×
296
        PBN_GET_INSTITUTION_PUBLICATIONS_V2 + "?publicationId=123&size=10"
297
    ] = MOCK_RETURNED_INSTITUTION_PUBLICATION_V2_DATA
298

299
    with middleware(req):
×
300
        sprobuj_wyslac_do_pbn_gui(
×
301
            req, pbn_wydawnictwo_zwarte_z_autorem_z_dyscyplina, pbn_client=pbn_client
302
        )
303

304
    msg = get_messages(req)
×
305
    assert (
×
306
        "w odpowiedzi z serwera PBN numer UID rekordu JUŻ ISTNIEJĄCEGO"
307
        in list(msg)[0].message
308
    )
309

310

UNCOV
311
@pytest.mark.django_db
×
UNCOV
312
def test_sprobuj_wyslac_do_pbn_przychodzi_inny_pbn_uid_dla_starego_rekordu(
×
313
    pbn_wydawnictwo_zwarte_z_autorem_z_dyscyplina: Wydawnictwo_Ciagle,
314
    pbn_client,
315
    rf,
316
    pbn_uczelnia,
317
):
318
    """Ten test sprawdza, jak zachowa się system w przypadku wysyłki nowego rekordu, gdy przyjdzie PBN UID
319
    takiego rekordu, który już istnieje"""
320

321
    req = rf.get("/")
×
322

323
    # To jest istniejące w bazie wydawnictwo ciągłe z PBN UID = MOCK_MONGO_ID ("123")
324
    publikacja = baker.make(Publication, pk=MOCK_MONGO_ID)
×
325

326
    # To jest wydawnictwo ciągłe, które ma PBN UID
327
    pbn_wydawnictwo_zwarte_z_autorem_z_dyscyplina.pbn_uid = publikacja
×
328
    pbn_wydawnictwo_zwarte_z_autorem_z_dyscyplina.save(update_fields=["pbn_uid"])
×
329

330
    # To jest odpowiedź z PBNu gdzie zwrotnie przyjdzie objectId = MOCK_MONGO_ID*2
331
    pbn_client.transport.return_values[PBN_POST_PUBLICATIONS_URL] = {
×
332
        "objectId": MOCK_MONGO_ID * 2
333
    }
334
    pbn_client.transport.return_values[
×
335
        PBN_GET_PUBLICATION_BY_ID_URL.format(id=MOCK_MONGO_ID * 2)
336
    ] = MOCK_RETURNED_MONGODB_DATA
337
    pbn_client.transport.return_values[PBN_GET_PUBLICATION_BY_ID_URL.format(id=456)] = (
×
338
        MOCK_RETURNED_MONGODB_DATA
339
    )
340
    pbn_client.transport.return_values[
×
341
        PBN_GET_INSTITUTION_STATEMENTS + f"?publicationId={MOCK_MONGO_ID}&size=5120"
342
    ] = []
343
    pbn_client.transport.return_values[
×
344
        PBN_GET_INSTITUTION_PUBLICATIONS_V2 + "?publicationId=123123&size=10"
345
    ] = MOCK_RETURNED_INSTITUTION_PUBLICATION_V2_DATA
346

347
    with middleware(req):
×
348
        sprobuj_wyslac_do_pbn_gui(
×
349
            req, pbn_wydawnictwo_zwarte_z_autorem_z_dyscyplina, pbn_client=pbn_client
350
        )
351

352
    msg = get_messages(req)
×
353
    assert "Wg danych z PBN zmodyfikowano PBN UID tego rekordu " in list(msg)[0].message
×
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