From d1de45aacc25144bc94a52f756f5a3d62e58bc52 Mon Sep 17 00:00:00 2001 From: Lacey Williams Henschel Date: Sat, 11 Feb 2023 08:39:01 -0800 Subject: [PATCH] :wrench: Refactors libs-by-cat to use most recent Boost version --- libraries/tests/test_views.py | 40 +++++++++++++++++++++++++++++++++++ libraries/views.py | 8 ++++++- 2 files changed, 47 insertions(+), 1 deletion(-) diff --git a/libraries/tests/test_views.py b/libraries/tests/test_views.py index 427ab94a..2dd482c6 100644 --- a/libraries/tests/test_views.py +++ b/libraries/tests/test_views.py @@ -23,6 +23,46 @@ def test_library_list_select_category(library, category, tp): """POST /libraries/ to submit a category redirects to the libraries-by-category page""" res = tp.post("libraries", data={"categories": category.pk}) tp.response_302(res) + assert res.url == f"/libraries-by-category/{category.slug}/" + + +def test_library_list_by_category(library_version, category, tp): + """ + GET /libraries-by-category/{category_slug}/ + A category with libraries + """ + library = library_version.library + version = library_version.version + library.categories.add(category) + res = tp.get("libraries-by-category", category.slug) + tp.response_200(res) + assert "library_list" in res.context + assert len(res.context["library_list"]) == 1 + assert library in res.context["library_list"] + + +def test_library_list_by_category_no_results(library_version, category, tp): + """ + GET /libraries-by-category/{category_slug}/ + A category with no libraries + """ + library = library_version.library + version = library_version.version + res = tp.get("libraries-by-category", category.slug) + tp.response_200(res) + assert "library_list" in res.context + assert len(res.context["library_list"]) == 0 + + +def test_library_list_by_category_no_results_for_active_version(library, category, tp): + """ + GET /libraries-by-category/{category_slug}/ + A category with a library, but the library isn't attached to the active Boost version + """ + res = tp.get("libraries-by-category", category.slug) + tp.response_200(res) + assert "library_list" in res.context + assert len(res.context["library_list"]) == 0 def test_libraries_by_category(tp, library, category): diff --git a/libraries/views.py b/libraries/views.py index 03c37b2a..222a46e7 100644 --- a/libraries/views.py +++ b/libraries/views.py @@ -50,6 +50,7 @@ class LibraryList(CategoryMixin, FormMixin, ListView): class LibraryByCategory(CategoryMixin, ListView): """List all of our libraries in a certain category""" + form_class = LibraryForm paginate_by = 25 template_name = "libraries/list.html" @@ -66,11 +67,16 @@ class LibraryByCategory(CategoryMixin, ListView): def get_queryset(self): category = self.kwargs.get("category") + version = Version.objects.most_recent() return ( Library.objects.prefetch_related("categories") - .filter(categories__slug=category) + .filter( + categories__slug=category, + versions__library_version__version=version, + ) .order_by("name") + .distinct() )