Skip to content

Commit da856b5

Browse files
etjmattiagiupponi
andauthored
[Fixes #11620] Facets: refact view as a class (#11625)
Co-authored-by: mattiagiupponi <[email protected]>
1 parent c437a0a commit da856b5

File tree

3 files changed

+190
-220
lines changed

3 files changed

+190
-220
lines changed

geonode/facets/tests.py

Lines changed: 20 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,8 @@
4242
from geonode.facets.providers.category import CategoryFacetProvider
4343
from geonode.facets.providers.keyword import KeywordFacetProvider
4444
from geonode.facets.providers.region import RegionFacetProvider
45+
from geonode.facets.views import ListFacetsView, GetFacetView
4546
from geonode.tests.base import GeoNodeBaseTestSupport
46-
import geonode.facets.views as views
4747

4848

4949
logger = logging.getLogger(__name__)
@@ -85,7 +85,7 @@ def _create_thesauri(cls):
8585
for tn in range(2):
8686
t = Thesaurus.objects.create(identifier=f"t_{tn}", title=f"Thesaurus {tn}", order=100 + tn * 10)
8787
cls.thesauri[tn] = t
88-
for tl in (
88+
for tl in ( # fmt: skip
8989
"en",
9090
"it",
9191
):
@@ -94,7 +94,7 @@ def _create_thesauri(cls):
9494
for tkn in range(10):
9595
tk = ThesaurusKeyword.objects.create(thesaurus=t, alt_label=f"T{tn}_K{tkn}_ALT")
9696
cls.thesauri_k[f"{tn}_{tkn}"] = tk
97-
for tkl in (
97+
for tkl in ( # fmt: skip
9898
"en",
9999
"it",
100100
):
@@ -104,7 +104,7 @@ def _create_thesauri(cls):
104104
def _create_regions(cls):
105105
cls.regions = {}
106106

107-
for code, name in (
107+
for code, name in ( # fmt: skip
108108
("R0", "Region0"),
109109
("R1", "Region1"),
110110
("R2", "Region2"),
@@ -115,7 +115,7 @@ def _create_regions(cls):
115115
def _create_categories(cls):
116116
cls.cats = {}
117117

118-
for code, name in (
118+
for code, name in ( # fmt: skip
119119
("C0", "Cat0"),
120120
("C1", "Cat1"),
121121
("C2", "Cat2"),
@@ -126,7 +126,7 @@ def _create_categories(cls):
126126
def _create_keywords(cls):
127127
cls.kw = {}
128128

129-
for code, name in (
129+
for code, name in ( # fmt: skip
130130
("K0", "Keyword0"),
131131
("K1", "Keyword1"),
132132
("K2", "Keyword2"),
@@ -186,22 +186,22 @@ def _create_resources(self):
186186
if (x % 6) in (0, 1, 2):
187187
d.featured = True
188188

189-
for reg, idx in (
189+
for reg, idx in ( # fmt: skip
190190
("R0", (0, 1)),
191191
("R1", (0, 2, 8, 13)),
192192
):
193193
if x in idx:
194194
d.regions.add(self.regions[reg])
195195

196-
for kw, idx in (
196+
for kw, idx in ( # fmt: skip
197197
("K0", (0, 3, 4, 5)),
198198
("K1", [1, 4]),
199199
("K2", [2, 5]),
200200
):
201201
if x in idx:
202202
d.keywords.add(self.kw[kw])
203203

204-
for cat, idx in (
204+
for cat, idx in ( # fmt: skip
205205
("C0", [0, 2, 4]),
206206
("C1", [5, 15, 16]),
207207
("C2", [18, 19]),
@@ -218,7 +218,7 @@ def _facets_to_map(facets):
218218

219219
def test_facets_base(self):
220220
req = self.rf.get(reverse("list_facets"), data={"lang": "en"})
221-
res: JsonResponse = views.list_facets(req)
221+
res: JsonResponse = ListFacetsView.as_view()(req)
222222
obj = json.loads(res.content)
223223
self.assertIn("facets", obj)
224224
facets_list = obj["facets"]
@@ -238,13 +238,13 @@ def test_facets_rich(self):
238238

239239
# run the request
240240
req = self.rf.get(reverse("list_facets"), data={"include_topics": 1, "lang": "en"})
241-
res: JsonResponse = views.list_facets(req)
241+
res: JsonResponse = ListFacetsView.as_view()(req)
242242
obj = json.loads(res.content)
243243

244244
facets_list = obj["facets"]
245245
self.assertEqual(8, len(facets_list))
246246
fmap = self._facets_to_map(facets_list)
247-
for expected in (
247+
for expected in ( # fmt: skip
248248
{
249249
"name": "category",
250250
"topics": {
@@ -356,7 +356,7 @@ def test_bad_lang(self):
356356

357357
# run the request with a valid language
358358
req = self.rf.get(reverse("get_facet", args=["t_0"]), data={"lang": "en"})
359-
res: JsonResponse = views.get_facet(req, "t_0")
359+
res: JsonResponse = GetFacetView.as_view()(req, "t_0")
360360
obj = json.loads(res.content)
361361

362362
self.assertEqual(2, obj["topics"]["total"])
@@ -366,26 +366,14 @@ def test_bad_lang(self):
366366

367367
# run the request with an INVALID language
368368
req = self.rf.get(reverse("get_facet", args=["t_0"]), data={"lang": "ZZ"})
369-
res: JsonResponse = views.get_facet(req, "t_0")
369+
res: JsonResponse = GetFacetView.as_view()(req, "t_0")
370370
obj = json.loads(res.content)
371371

372372
self.assertEqual(2, obj["topics"]["total"])
373373
self.assertEqual(10, obj["topics"]["items"][0]["count"]) # make sure the count is still there
374374
self.assertEqual("T0_K0_ALT", obj["topics"]["items"][0]["label"]) # check for the alternate label
375375
self.assertFalse(obj["topics"]["items"][0]["is_localized"]) # check for the localization flag
376376

377-
def test_topics(self):
378-
for facet, keys, exp in (
379-
("t_0", [self.thesauri_k["0_0"].id, self.thesauri_k["0_1"].id, -999], 2),
380-
("category", ["C1", "C2", "nomatch"], 2),
381-
("owner", [self.user.id, -100], 1),
382-
("region", ["R0", "R1", "nomatch"], 2),
383-
):
384-
req = self.rf.get(reverse("get_facet_topics", args=[facet]), data={"lang": "en", "key": keys})
385-
res: JsonResponse = views.get_facet_topics(req, facet)
386-
obj = json.loads(res.content)
387-
self.assertEqual(exp, len(obj["topics"]["items"]), f"Unexpected topic count {exp} for facet {facet}")
388-
389377
def test_prefiltering(self):
390378
reginfo = RegionFacetProvider().get_info()
391379
regfilter = reginfo["filter"]
@@ -403,7 +391,7 @@ def test_prefiltering(self):
403391
(reginfo["name"], {t1filter: self.thesauri_k["1_0"].id}, 2, 3),
404392
):
405393
req = self.rf.get(reverse("get_facet", args=[facet]), data=filters)
406-
res: JsonResponse = views.get_facet(req, facet)
394+
res: JsonResponse = GetFacetView.as_view()(req, facet)
407395
obj = json.loads(res.content)
408396
self.assertEqual(totals, obj["topics"]["total"], f"Bad totals for facet '{facet} and filter {filters}")
409397
self.assertEqual(count0, obj["topics"]["items"][0]["count"], f"Bad count0 for facet '{facet}")
@@ -423,7 +411,7 @@ def test_prefiltering_tkeywords(self):
423411
(featname, {t1filter: tkey_1_1}, expected_feat),
424412
):
425413
req = self.rf.get(reverse("get_facet", args=[facet]), data=params)
426-
res: JsonResponse = views.get_facet(req, facet)
414+
res: JsonResponse = GetFacetView.as_view()(req, facet)
427415
obj = json.loads(res.content)
428416

429417
self.assertEqual(
@@ -439,13 +427,13 @@ def test_prefiltering_tkeywords(self):
439427

440428
# Run the single request
441429
req = self.rf.get(reverse("list_facets"), data={"include_topics": 1, t1filter: tkey_1_1})
442-
res: JsonResponse = views.list_facets(req)
430+
res: JsonResponse = ListFacetsView.as_view()(req)
443431
obj = json.loads(res.content)
444432

445433
facets_list = obj["facets"]
446434
fmap = self._facets_to_map(facets_list)
447435

448-
for name, items in (
436+
for name, items in ( # fmt: skip
449437
(regname, expected_region),
450438
(featname, expected_feat),
451439
):
@@ -466,7 +454,7 @@ def test_config(self):
466454
("owner", "select", 8),
467455
):
468456
req = self.rf.get(reverse("get_facet", args=[facet]), data={"include_config": True})
469-
res: JsonResponse = views.get_facet(req, facet)
457+
res: JsonResponse = GetFacetView.as_view()(req, facet)
470458
obj = json.loads(res.content)
471459
self.assertIn("config", obj, "Config info not found in payload")
472460
conf = obj["config"]
@@ -525,7 +513,7 @@ def t(tk):
525513
(kwname, {t0filter: t("0_0"), regfilter: "R0", "key": ["K0"]}, {"K0": None}),
526514
):
527515
req = self.rf.get(reverse("get_facet", args=[facet]), data=params)
528-
res: JsonResponse = views.get_facet(req, facet)
516+
res: JsonResponse = GetFacetView.as_view()(req, facet)
529517
obj = json.loads(res.content)
530518
# self.assertEqual(totals, obj["topics"]["total"], f"Bad totals for facet '{facet} and params {params}")
531519

geonode/facets/urls.py

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,9 @@
1818
#########################################################################
1919

2020
from django.urls import path
21-
from . import views
21+
from .views import ListFacetsView, GetFacetView
2222

2323
urlpatterns = [
24-
path("facets", views.list_facets, name="list_facets"),
25-
path("facets/<facet>", views.get_facet, name="get_facet"),
26-
path("facets/<facet>/topics", views.get_facet_topics, name="get_facet_topics"),
24+
path("facets", ListFacetsView.as_view(), name="list_facets"),
25+
path("facets/<facet>", GetFacetView.as_view(), name="get_facet"),
2726
]

0 commit comments

Comments
 (0)