Skip to content

Commit 5507ee8

Browse files
committed
updates tests
1 parent 55cbd71 commit 5507ee8

23 files changed

+131
-158
lines changed

tests/conftest.py

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -33,12 +33,8 @@ def pytest_configure(config):
3333
if not config.option.enable_selenium:
3434
setattr(config.option, "markexpr", "not selenium")
3535

36-
config.addinivalue_line(
37-
"markers", "skip_if_ci: this mark skips the tests on GitlabCI"
38-
)
39-
config.addinivalue_line(
40-
"markers", "skip_test_if_env(env): this mark skips the tests for the given env"
41-
)
36+
config.addinivalue_line("markers", "skip_if_ci: this mark skips the tests on GitlabCI")
37+
config.addinivalue_line("markers", "skip_test_if_env(env): this mark skips the tests for the given env")
4238

4339
sys.path.insert(0, os.path.join(os.path.dirname(__file__), "demoapp"))
4440
os.environ["DJANGO_SETTINGS_MODULE"] = "demo.settings"

tests/demoapp/demo/admin.py

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,20 +6,23 @@
66
from adminfilters.combo import ChoicesFieldComboFilter
77
from adminfilters.depot.widget import DepotManager
88
from adminfilters.filters import (
9+
AdminAutoCompleteSearchMixin,
10+
AdminFiltersMixin,
911
BooleanRadioFilter,
1012
DjangoLookupFilter,
1113
IntersectionFieldListFilter,
14+
JsonFieldFilter,
15+
MultiValueFilter,
1216
NumberFilter,
1317
QueryStringFilter,
1418
RelatedFieldCheckBoxFilter,
1519
RelatedFieldRadioFilter,
1620
UnionFieldListFilter,
1721
ValueFilter,
1822
)
19-
from adminfilters.filters import JsonFieldFilter, AdminAutoCompleteSearchMixin, AdminFiltersMixin, MultiValueFilter
23+
2024
# from adminfilters.mixin import AdminAutoCompleteSearchMixin, AdminFiltersMixin
2125
# from adminfilters.value import MultiValueFilter
22-
2326
from .models import Artist, Band, City, Country, Region
2427

2528

@@ -100,20 +103,23 @@ class CityModelAdmin(AdminAutoCompleteSearchMixin, DebugMixin, ModelAdmin):
100103
class BandModelAdmin(DebugMixin, ModelAdmin):
101104
list_display = [f.name for f in Band._meta.fields]
102105
search_fields = ("name",)
103-
list_filter = ("genre", ChoicesFieldComboFilter), ("active", BooleanRadioFilter),
106+
list_filter = (
107+
("genre", ChoicesFieldComboFilter),
108+
("active", BooleanRadioFilter),
109+
)
104110

105111

106112
class ArtistModelAdmin(DebugMixin, AdminFiltersMixin, ModelAdmin):
107113
list_display = [f.name for f in Artist._meta.fields]
108114
list_filter = (
109115
DepotManager,
110116
("country", AutoCompleteFilter),
111-
('favourite_city__region__country',
112-
LinkedAutoCompleteFilter.factory(title='Favourite Country')),
113-
("favourite_city__region",
114-
LinkedAutoCompleteFilter.factory(title="Favourite Region", parent='favourite_city__region__country')),
115-
("favourite_city",
116-
LinkedAutoCompleteFilter.factory(title="Favourite City", parent='favourite_city__region')),
117+
("favourite_city__region__country", LinkedAutoCompleteFilter.factory(title="Favourite Country")),
118+
(
119+
"favourite_city__region",
120+
LinkedAutoCompleteFilter.factory(title="Favourite Region", parent="favourite_city__region__country"),
121+
),
122+
("favourite_city", LinkedAutoCompleteFilter.factory(title="Favourite City", parent="favourite_city__region")),
117123
("year_of_birth", NumberFilter),
118124
("bands__name", MultiValueFilter),
119125
QueryStringFilter,

tests/demoapp/demo/backends.py

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -7,18 +7,10 @@ class AnonymousAccessUserBackend(ModelBackend):
77
supports_anonymous_user = True
88

99
def get_all_permissions(self, user_obj, obj=None):
10-
return (
11-
Permission.objects.all()
12-
.values_list("content_type__app_label", "codename")
13-
.order_by()
14-
)
10+
return Permission.objects.all().values_list("content_type__app_label", "codename").order_by()
1511

1612
def get_group_permissions(self, user_obj, obj=None):
17-
return (
18-
Permission.objects.all()
19-
.values_list("content_type__app_label", "codename")
20-
.order_by()
21-
)
13+
return Permission.objects.all().values_list("content_type__app_label", "codename").order_by()
2214

2315
def has_perm(self, user_obj, perm, obj=None):
2416
return True

tests/demoapp/demo/factories.py

Lines changed: 12 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -17,25 +17,21 @@ def __new__(mcs, class_name, bases, attrs):
1717
return new_class
1818

1919

20-
class ModelFactory(
21-
factory.django.DjangoModelFactory, metaclass=AutoRegisterFactoryMetaClass
22-
):
20+
class ModelFactory(factory.django.DjangoModelFactory, metaclass=AutoRegisterFactoryMetaClass):
2321
pass
2422

2523

2624
def get_flags():
2725
# Convert to plain ascii text
28-
f = lambda: random.choice(
29-
[
30-
("int", random.randint(1, 100)),
31-
("chr", chr(random.randrange(65, 90))),
32-
("int", "__"),
33-
("chr", ""),
34-
("chr", None),
35-
("int", None),
36-
("chr", "__"),
37-
]
38-
)
26+
f = lambda: random.choice([
27+
("int", random.randint(1, 100)),
28+
("chr", chr(random.randrange(65, 90))),
29+
("int", "__"),
30+
("chr", ""),
31+
("chr", None),
32+
("int", None),
33+
("chr", "__"),
34+
])
3935
value = f()
4036
if value[1] == "__":
4137
base = {}
@@ -86,7 +82,7 @@ class Meta:
8682

8783

8884
class RegionFactory(ModelFactory):
89-
name = factory.fuzzy.FuzzyChoice(['North', 'South', 'East', 'West'])
85+
name = factory.fuzzy.FuzzyChoice(["North", "South", "East", "West"])
9086
country = factory.SubFactory(CountryFactory)
9187

9288
class Meta:
@@ -114,7 +110,7 @@ class Meta:
114110

115111
class ArtistFactory(ModelFactory):
116112
name = factory.Faker("first_name")
117-
last_name = factory.Sequence(lambda n: f'Dummy{faker.Faker().unique.last_name()}{n}')
113+
last_name = factory.Sequence(lambda n: f"Dummy{faker.Faker().unique.last_name()}{n}")
118114
full_name = factory.LazyAttribute(lambda o: f"{o.last_name}, {o.name}")
119115
favourite_city = factory.SubFactory(CityFactory)
120116

tests/demoapp/demo/management/commands/init_demo.py

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,17 @@
11
from urllib.parse import urlencode
22

3-
from demo.factories import CityFactory, RegionFactory
43
from django.core.management import BaseCommand, call_command
54
from django.db import IntegrityError
65

76
from adminfilters.depot.models import StoredFilter
7+
from demo.factories import CityFactory, RegionFactory
88

99

1010
def sample_data():
11+
from django.contrib.contenttypes.models import ContentType
12+
1113
from demo.factories import ArtistFactory, BandFactory, CountryFactory, UserFactory
1214
from demo.models import Artist
13-
from django.contrib.contenttypes.models import ContentType
1415

1516
user = UserFactory(username="user")
1617

@@ -110,24 +111,20 @@ def sample_data():
110111
owner=user,
111112
defaults=dict(
112113
query_string="?%s"
113-
% urlencode(
114-
{
115-
"qs": """country__name__istartswith=australia
114+
% urlencode({
115+
"qs": """country__name__istartswith=australia
116116
name=Phil
117117
year_of_birth__gt=1950
118118
Aactive=true""",
119-
"qs__negate": "false",
120-
}
121-
),
119+
"qs__negate": "false",
120+
}),
122121
content_type=ct,
123122
),
124123
)
125124
StoredFilter.objects.update_or_create(
126125
name="Active Artists",
127126
owner=user,
128-
defaults=dict(
129-
query_string="?%s" % urlencode({"qs": "active=true"}), content_type=ct
130-
),
127+
defaults=dict(query_string="?%s" % urlencode({"qs": "active=true"}), content_type=ct),
131128
)
132129

133130
return [acdc, geordie]

tests/demoapp/demo/migrations/0001_initial.py

Lines changed: 8 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -48,9 +48,7 @@ class Migration(migrations.Migration):
4848
("name", models.CharField(max_length=255)),
4949
(
5050
"genre",
51-
models.IntegerField(
52-
choices=[(1, "Rock"), (2, "Blues"), (3, "Soul"), (4, "Other")]
53-
),
51+
models.IntegerField(choices=[(1, "Rock"), (2, "Blues"), (3, "Soul"), (4, "Other")]),
5452
),
5553
("active", models.BooleanField(default=True)),
5654
],
@@ -124,15 +122,11 @@ class Migration(migrations.Migration):
124122
("blank", models.CharField(blank=True, max_length=255, null=True)),
125123
(
126124
"not_editable",
127-
models.CharField(
128-
blank=True, editable=False, max_length=255, null=True
129-
),
125+
models.CharField(blank=True, editable=False, max_length=255, null=True),
130126
),
131127
(
132128
"choices",
133-
models.IntegerField(
134-
choices=[(1, "Choice 1"), (2, "Choice 2"), (3, "Choice 3")]
135-
),
129+
models.IntegerField(choices=[(1, "Choice 1"), (2, "Choice 2"), (3, "Choice 3")]),
136130
),
137131
],
138132
),
@@ -183,23 +177,17 @@ class Migration(migrations.Migration):
183177
migrations.AddField(
184178
model_name="artist",
185179
name="bands",
186-
field=models.ManyToManyField(
187-
related_name="bands", to="demo.band", verbose_name="Bands"
188-
),
180+
field=models.ManyToManyField(related_name="bands", to="demo.band", verbose_name="Bands"),
189181
),
190182
migrations.AddField(
191183
model_name="artist",
192184
name="favourite_city",
193-
field=models.ForeignKey(
194-
on_delete=django.db.models.deletion.CASCADE, to="demo.city"
195-
),
185+
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to="demo.city"),
196186
),
197187
migrations.AddField(
198188
model_name="artist",
199189
name="country",
200-
field=models.ForeignKey(
201-
on_delete=django.db.models.deletion.CASCADE, to="demo.country"
202-
),
190+
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to="demo.country"),
203191
),
204192
migrations.CreateModel(
205193
name="Region",
@@ -216,9 +204,7 @@ class Migration(migrations.Migration):
216204
("name", models.CharField(max_length=255)),
217205
(
218206
"country",
219-
models.ForeignKey(
220-
on_delete=django.db.models.deletion.CASCADE, to="demo.country"
221-
),
207+
models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to="demo.country"),
222208
),
223209
],
224210
options={
@@ -228,8 +214,6 @@ class Migration(migrations.Migration):
228214
migrations.AddField(
229215
model_name="city",
230216
name="region",
231-
field=models.ForeignKey(
232-
on_delete=django.db.models.deletion.CASCADE, to="demo.region"
233-
),
217+
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to="demo.region"),
234218
),
235219
]

tests/demoapp/demo/models.py

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -32,12 +32,8 @@ class DemoModelField(JSONMixin, models.Model):
3232
unique = models.CharField(max_length=255, unique=True)
3333
nullable = models.CharField(max_length=255, null=True)
3434
blank = models.CharField(max_length=255, blank=True, null=True)
35-
not_editable = models.CharField(
36-
max_length=255, editable=False, blank=True, null=True
37-
)
38-
choices = models.IntegerField(
39-
choices=((1, "Choice 1"), (2, "Choice 2"), (3, "Choice 3"))
40-
)
35+
not_editable = models.CharField(max_length=255, editable=False, blank=True, null=True)
36+
choices = models.IntegerField(choices=((1, "Choice 1"), (2, "Choice 2"), (3, "Choice 3")))
4137

4238
class Meta:
4339
app_label = "demo"
@@ -111,6 +107,7 @@ class Meta:
111107
def __str__(self):
112108
return self.name
113109

110+
114111
#
115112
# class DemoModel2(models.Model):
116113
# name = models.CharField(max_length=255)

tests/demoapp/demo/urls.py

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
from django.conf import settings
44
from django.contrib.auth.models import User
55
from django.http import HttpResponse
6-
from django.urls import re_path, path
6+
from django.urls import path, re_path
77

88
from adminfilters.depot.admin import StoredFilterAdmin
99
from adminfilters.depot.models import StoredFilter
@@ -23,12 +23,8 @@ def has_permission(self, request):
2323
models.Artist_RelatedFieldCheckBoxFilter,
2424
admin.DemoModelAdmin_RelatedFieldCheckBoxFilter,
2525
)
26-
public_site.register(
27-
models.Artist_RelatedFieldRadioFilter, admin.DemoModelAdmin_RelatedFieldRadioFilter
28-
)
29-
public_site.register(
30-
models.Artist_UnionFieldListFilter, admin.DemoModelAdmin_UnionFieldListFilter
31-
)
26+
public_site.register(models.Artist_RelatedFieldRadioFilter, admin.DemoModelAdmin_RelatedFieldRadioFilter)
27+
public_site.register(models.Artist_UnionFieldListFilter, admin.DemoModelAdmin_UnionFieldListFilter)
3228
public_site.register(
3329
models.Artist_IntersectionFieldListFilter,
3430
admin.DemoModelAdmin_IntersectionFieldListFilter,

tests/demoapp/demo/utils.py

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -144,9 +144,7 @@ def driver(self):
144144
class CellWrapper(WebElementWrapper):
145145
@cached_property
146146
def text(self):
147-
return self.element.get_attribute("innerText") or strip_tags(
148-
self.element.get_attribute("innerHTML")
149-
)
147+
return self.element.get_attribute("innerText") or strip_tags(self.element.get_attribute("innerHTML"))
150148

151149

152150
class RowWrapper(WebElementWrapper):
@@ -181,9 +179,7 @@ class ChangeListWrapper(EmptyChangeListWrapper):
181179
@classmethod
182180
def find_in_page(cls, driver):
183181
try:
184-
return ChangeListWrapper(
185-
driver.find_element(By.CSS_SELECTOR, "#changelist-form #result_list")
186-
)
182+
return ChangeListWrapper(driver.find_element(By.CSS_SELECTOR, "#changelist-form #result_list"))
187183
except NoSuchElementException:
188184
return EmptyChangeListWrapper(None)
189185

@@ -193,10 +189,7 @@ def header(self) -> [RowWrapper]:
193189

194190
@cached_property
195191
def rows(self) -> [RowWrapper]:
196-
return [
197-
RowWrapper(e)
198-
for e in self.element.find_elements(By.CSS_SELECTOR, "tbody tr")
199-
]
192+
return [RowWrapper(e) for e in self.element.find_elements(By.CSS_SELECTOR, "tbody tr")]
200193

201194
def get_row(self, num):
202195
return list(self.rows)[num]

tests/demoapp/demo/wsgi.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
framework.
1414
1515
"""
16+
1617
import os
1718

1819
# This application object is used by any WSGI server configured to use this

0 commit comments

Comments
 (0)