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

iplweb / bpp / 71e1e2ba-d8df-4d64-aa69-87ac103bff42

20 Aug 2025 08:40PM UTC coverage: 44.985% (+2.6%) from 42.351%
71e1e2ba-d8df-4d64-aa69-87ac103bff42

push

circleci

mpasternak
Merge branch 'release/v202508.1193'

3 of 3 new or added lines in 2 files covered. (100.0%)

1651 existing lines in 99 files now uncovered.

17154 of 38133 relevant lines covered (44.98%)

0.82 hits per line

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

24.07
src/bpp/tests/test_admin/test_admin.py
UNCOV
1
import pytest
1✔
UNCOV
2
from django.urls import NoReverseMatch
1✔
UNCOV
3
from django.urls.base import reverse
1✔
UNCOV
4
from model_bakery import baker
1✔
5

UNCOV
6
from bpp.models import Autor, Jednostka, Praca_Doktorska, Praca_Habilitacyjna, Zrodlo
1✔
UNCOV
7
from bpp.models.cache import Autorzy, Rekord
1✔
UNCOV
8
from bpp.models.patent import Patent, Patent_Autor
1✔
UNCOV
9
from bpp.models.wydawnictwo_ciagle import Wydawnictwo_Ciagle, Wydawnictwo_Ciagle_Autor
1✔
UNCOV
10
from bpp.models.wydawnictwo_zwarte import Wydawnictwo_Zwarte, Wydawnictwo_Zwarte_Autor
1✔
11

12

UNCOV
13
@pytest.mark.parametrize(
1✔
14
    "klass",
15
    [
16
        Wydawnictwo_Ciagle,
17
        Wydawnictwo_Zwarte,
18
        Patent,
19
        Praca_Doktorska,
20
        Praca_Habilitacyjna,
21
    ],
22
)
UNCOV
23
def test_safe_html_dwa_tytuly_DwaTytuly(
1✔
24
    klass,
25
    admin_app,
26
    typy_odpowiedzialnosci,
27
):
28
    """Upewnij sie, ze bleach jest uruchamiany dla tych dwóch pól z DwaTytuly"""
29

30
    i = baker.make(klass, rok=2020)
×
31
    if hasattr(i, "zrodlo"):
×
32
        z = baker.make(Zrodlo)
×
33
        i.zrodlo = z
×
34
        i.save()
×
35

36
    if hasattr(i, "promotor"):
×
37
        p = baker.make(Autor)
×
38
        i.promotor = p
×
39
        i.save()
×
40

41
    url = reverse(f"admin:bpp_{klass._meta.model_name}_change", args=(i.pk,))
×
42

43
    page = admin_app.get(url)
×
44

45
    page.forms[1]["tytul_oryginalny"].value = "<script>hi</script>"
×
46
    if hasattr(i, "tytul"):
×
47
        page.forms[1]["tytul"].value = "<script>hi</script>"
×
48

49
    page.forms[1].submit()
×
50

51
    i.refresh_from_db()
×
52

53
    assert i.tytul_oryginalny == "hi"
×
54
    if hasattr(i, "tytul"):
×
55
        assert i.tytul == "hi"
×
56

57

UNCOV
58
@pytest.mark.parametrize(
1✔
59
    "klass,autor_klass,name,url",
60
    [
61
        (
62
            Wydawnictwo_Ciagle,
63
            Wydawnictwo_Ciagle_Autor,
64
            "wydawnictwo_ciagle",
65
            "admin:bpp_wydawnictwo_ciagle_change",
66
        ),
67
        (
68
            Wydawnictwo_Zwarte,
69
            Wydawnictwo_Zwarte_Autor,
70
            "wydawnictwo_zwarte",
71
            "admin:bpp_wydawnictwo_zwarte_change",
72
        ),
73
        (Patent, Patent_Autor, "patent", "admin:bpp_patent_change"),
74
    ],
75
)
UNCOV
76
def test_zapisz_wydawnictwo_w_adminie(klass, autor_klass, name, url, admin_app):
1✔
77
    if klass == Wydawnictwo_Ciagle:
×
78
        wc = baker.make(klass, zrodlo__nazwa="Kopara", rok=2020)
×
79
    else:
80
        wc = baker.make(klass, rok=2020)
×
81

82
    wca = baker.make(
×
83
        autor_klass,
84
        autor__imiona="Jan",
85
        autor__nazwisko="Kowalski",
86
        zapisany_jako="Jan Kowalski",
87
        rekord=wc,
88
    )
89

90
    url = reverse(url, args=(wc.pk,))
×
91
    res = admin_app.get(url)
×
92

93
    form = res.forms[name + "_form"]
×
94

95
    ZMIENIONE = "J[an] Kowalski"
×
96
    form["autorzy_set-0-zapisany_jako"].options.append((ZMIENIONE, False, ZMIENIONE))
×
97
    form["autorzy_set-0-zapisany_jako"].value = ZMIENIONE
×
98

99
    res2 = form.submit().maybe_follow()
×
100
    assert res2.status_code == 200
×
101
    assert "Please correct the error" not in res2.text
×
102
    assert "Proszę, popraw poniższe błędy." not in res2.text
×
103

104
    wca.refresh_from_db()
×
105
    assert wca.zapisany_jako == ZMIENIONE
×
106

107
    Rekord.objects.all().delete()
×
108
    Autorzy.objects.all().delete()
×
109

110

UNCOV
111
from django.apps import apps
1✔
112

113

UNCOV
114
@pytest.mark.parametrize("model", apps.get_models())
1✔
UNCOV
115
@pytest.mark.django_db
1✔
UNCOV
116
def test_widok_admina(admin_client, model):
1✔
117
    """Wejdź na podstrony admina 'changelist' oraz 'add' dla każdego modelu z aplikacji
118
    'bpp' który to istnieje w adminie (został zarejestrowany) i do którego to admin_client
119
    ma uprawnienia.
120

121
    W ten sposób możemy wyłapać błędy z nazwami pól w adminie, których to Django nie wyłapie
122
    przed uruchomieniem aplikacji.
123
    """
124

125
    # for model in apps.get_models():
126
    app_label = model._meta.app_label
×
127
    model_name = model._meta.model_name
×
128

129
    if app_label != "bpp":
×
130
        return
×
131

132
    url_name = f"admin:{app_label}_{model_name}_changelist"
×
133
    try:
×
134
        url = reverse(url_name)
×
135
    except NoReverseMatch:
×
136
        return
×
137

138
    res = admin_client.get(url)
×
139
    assert res.status_code == 200, "changelist failed for %r" % model
×
140

141
    res = admin_client.get(url + "?q=fafa")
×
142
    assert res.status_code == 200, "changelist query failed for %r" % model
×
143

144
    MODELS_WITHOUT_ADD = [("bpp", "bppmultiseekvisibility"), ("bpp", "rzeczownik")]
×
145
    if (app_label, model_name) in MODELS_WITHOUT_ADD:
×
146
        return
×
147

148
    url_name = f"admin:{app_label}_{model_name}_add"
×
149
    url = reverse(url_name)
×
150
    res = admin_client.get(url)
×
151

152
    assert res.status_code == 200, "add failed for %r" % model
×
153

154

UNCOV
155
@pytest.mark.django_db
1✔
UNCOV
156
def test_admin_jednostka_sortowanie(uczelnia, admin_client):
1✔
157
    url_name = reverse("admin:bpp_jednostka_changelist")
×
158

159
    baker.make(Jednostka)
×
160
    baker.make(Jednostka)
×
161
    baker.make(Jednostka)
×
162

163
    uczelnia.sortuj_jednostki_alfabetycznie = True
×
164
    uczelnia.save()
×
165

166
    assert admin_client.get(url_name).status_code == 200
×
167

168
    uczelnia.sortuj_jednostki_alfabetycznie = False
×
169
    uczelnia.save()
×
170

171
    assert admin_client.get(url_name).status_code == 200
×
172

173

UNCOV
174
@pytest.mark.django_db
1✔
UNCOV
175
@pytest.mark.parametrize("url", ["wydawnictwo_zwarte", "wydawnictwo_ciagle"])
1✔
UNCOV
176
def test_admin_zewnetrzna_baza_danych(admin_client, url):
1✔
177
    url_name = reverse(f"admin:bpp_{url}_add")
×
178
    res = admin_client.get(url_name)
×
179
    assert "z zewn. bazami" in res.content.decode("utf-8")
×
180

181

UNCOV
182
@pytest.mark.django_db
1✔
UNCOV
183
def test_BppTemplateAdmin_zapis_dobrej_templatki(admin_app):
1✔
184
    url = reverse("admin:dbtemplates_template_add")
×
185
    res = admin_app.get(url)
×
186
    res.forms["template_form"]["content"] = "dobry content"
×
187
    res.forms["template_form"]["name"] = "nazwa.html"
×
188
    res = res.forms["template_form"].submit().maybe_follow()
×
189
    res.mustcontain("został(a)(-ło) dodany(-na)(-ne) pomyślnie")
×
190

191

UNCOV
192
@pytest.mark.django_db
1✔
UNCOV
193
def test_BppTemplateAdmin_zapis_zlej_templatki(admin_app):
1✔
194
    url = reverse("admin:dbtemplates_template_add")
×
195
    res = admin_app.get(url)
×
196
    res.forms["template_form"]["content"] = "dobry content{%if koparka %}"
×
197
    res.forms["template_form"]["name"] = "nazwa.html"
×
198
    res = res.forms["template_form"].submit().maybe_follow()
×
199
    res.mustcontain("Błąd przy próbie analizy")
×
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