Skip to content

Commit

Permalink
Add tests
Browse files Browse the repository at this point in the history
  • Loading branch information
Chatewgne committed Dec 26, 2024
1 parent e639868 commit febb73e
Show file tree
Hide file tree
Showing 6 changed files with 47 additions and 7 deletions.
2 changes: 2 additions & 0 deletions mapentity/templates/mapentity/mapentity_filter.html
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
{% load i18n static %}

{% block mainfilter %}
<form id="mainfilter" action="{{ model.get_datatablelist_url }}" filter-url="{{ filter_url }}">
<div class="left form-group">
{{ filter.form.as_p }}
Expand All @@ -10,3 +11,4 @@
<a id="filter" class="btn btn-primary"><i class="bi bi-search"></i> {% trans "Filter" %}</a>
</div>
</form>
{% endblock mainfilter %}
4 changes: 2 additions & 2 deletions mapentity/views/generic.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@
from .. import models as mapentity_models
from .. import serializers as mapentity_serializers
from ..decorators import save_history, view_permission_required
from ..filters import MapEntityFilterSet

from ..forms import AttachmentForm
from ..helpers import (convertit_url, download_content, name_for,
smart_get_template, suffix_for, user_has_perm)
Expand Down Expand Up @@ -492,7 +492,7 @@ def get_entity_kind(cls):
def get_template_names(self):
return super().get_template_names() + ['mapentity/mapentity_filter.html']

@view_permission_required(login_url=mapentity_models.ENTITY_FILTER)
@view_permission_required(login_url='login')
def dispatch(self, *args, **kwargs):
return super().dispatch(*args, **kwargs)

Expand Down
3 changes: 1 addition & 2 deletions mapentity/views/mixins.py
Original file line number Diff line number Diff line change
Expand Up @@ -154,7 +154,6 @@ class Meta:
return filterklass
return self.filterset_class

Check warning on line 155 in mapentity/views/mixins.py

View check run for this annotation

Codecov / codecov/patch

mapentity/views/mixins.py#L155

Added line #L155 was not covered by tests


def __init__(self):
self.filterset_class = self.get_filterset_class()
self._filterform = self.filterset_class()
Expand All @@ -166,5 +165,5 @@ def get_queryset(self):
queryset = super().get_queryset()
# Filter queryset from possible serialized form
self._filterform = self.filterset_class(self.request.GET or None,
queryset=queryset)
queryset=queryset)
return self._filterform.qs
5 changes: 5 additions & 0 deletions test_app/templates/test_app/dummymodel_filter.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{% extends "mapentity/mapentity_filter.html" %}

{% block mainfilter %}
{{ block.super }}
{% endblock mainfilter %}
38 changes: 36 additions & 2 deletions test_app/tests/test_views.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,8 @@
from mapentity.tests.factories import AttachmentFactory, SuperUserFactory
from mapentity.views import Convert, JSSettings, ServeAttachment

from ..models import DummyModel, FileType
from ..views import DummyDetail, DummyList
from ..models import DummyModel, FileType, City
from ..views import DummyDetail, DummyList, DummyModelFilterView
from .factories import DummyModelFactory

fake = Faker('fr_FR')
Expand Down Expand Up @@ -311,6 +311,15 @@ def test_list_should_render_some_perms_in_template(self):
self.assertTrue(b'btn-group disabled' in html.content)
self.assertTrue(b'Add a new dummy model' in html.content)

def test_list_view_creates_minimal_generic_filter(self):
request = RequestFactory().get('/fake-path')
request.user = self.user
request.session = {}
view = DummyList.as_view()
response = view(request)
self.assertNotContains(response, '<input type="text" name="name"')
self.assertContains(response, '<input type="hidden" name="bbox"')


class MapEntityLayerViewTest(BaseTest):
def setUp(self):
Expand Down Expand Up @@ -464,6 +473,11 @@ def test_unauthorized_update_view_redirects_to_detail(self):
self.assertRedirects(response, '/dummymodel/%s/' % (self.object.pk),
target_status_code=302) # --> login

def test_unauthorized_filter_view_redirects_to_login(self):
filter_url = '/dummymodel/filter/'
response = self.client.get(filter_url)
self.assertRedirects(response, '/login/')

def test_unauthorized_delete_view_redirects_to_detail(self):
delete_url = '/dummymodel/delete/%s/' % self.object.pk
response = self.client.get(delete_url)
Expand Down Expand Up @@ -576,3 +590,23 @@ class LogViewMapentityTestlLiveTest(MapEntityLiveTest):

def test_geojson_cache(self):
""" no cache in logentry geojson """


class FilterViewTest(BaseTest):
def setUp(self):
self.login()
self.user.is_superuser = True
self.user.save()

def test_mapentity_template_is_last_candidate(self):
filterview = DummyModelFilterView()
filterview.object_list = DummyModel.objects.all() # Add this line
filterview.model = DummyModel
self.assertEqual(filterview.get_template_names(),
['test_app/dummymodel_filter.html',
'mapentity/mapentity_filter.html'])

def test_filter_view_creates_full_generic_filter(self):
response = self.client.get(City.get_filter_url())
self.assertContains(response, '<input type="text" name="name"')
self.assertContains(response, '<input type="hidden" name="bbox"')
2 changes: 1 addition & 1 deletion test_app/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

from .filters import DummyModelFilter
from .forms import DummyModelForm, MushroomSpotForm, RoadForm
from .models import City, DummyModel, MushroomSpot, Road
from .models import DummyModel, MushroomSpot, Road
from .serializers import (DummyGeojsonSerializer, DummySerializer,
RoadSerializer)

Expand Down

0 comments on commit febb73e

Please sign in to comment.