Skip to content
This repository was archived by the owner on Jun 27, 2023. It is now read-only.

Commit 7d6832c

Browse files
author
Thiago C. D'Ávila
authored
Merge pull request #103 from staticdev/middleware-fix
Fix middleware
2 parents 259e799 + f66898e commit 7d6832c

File tree

3 files changed

+26
-75
lines changed

3 files changed

+26
-75
lines changed

src/django_pagination_bootstrap/middleware.py

+4-1
Original file line numberDiff line numberDiff line change
@@ -19,5 +19,8 @@ class PaginationMiddleware:
1919
it exists in either **GET** or **POST** portions of the request.
2020
"""
2121

22-
def process_request(self, request):
22+
def __init__(self, get_response):
23+
self.get_response = get_response
24+
25+
def __call__(self, request):
2326
request.__class__.page = property(get_page)

tests/test_middleware.py

+22
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
import io
2+
from unittest.mock import Mock
3+
from unittest.mock import patch
4+
5+
from django.core.handlers.wsgi import WSGIRequest
6+
from django.test import TestCase
7+
8+
from django_pagination_bootstrap import middleware
9+
10+
11+
class TestPaginationMiddleware(TestCase):
12+
@patch("django_pagination_bootstrap.middleware.PaginationMiddleware")
13+
def test_init(self, pagination_middleware_mock: Mock):
14+
pagination_middleware = middleware.PaginationMiddleware("response")
15+
request = WSGIRequest(
16+
{
17+
"REQUEST_METHOD": "POST",
18+
"CONTENT_TYPE": "multipart",
19+
"wsgi.input": io.StringIO(),
20+
}
21+
)
22+
assert pagination_middleware.__call__(request)

tests/test_paginator.py

-74
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,6 @@
1-
import io
2-
3-
from django.core.handlers.wsgi import WSGIRequest
41
from django.core.paginator import Paginator
5-
from django.http import HttpRequest as DjangoHttpRequest
6-
from django.template import Context
7-
from django.template import Template
82
from django.test import TestCase
93

10-
from django_pagination_bootstrap import middleware
114
from django_pagination_bootstrap import paginator
125
from django_pagination_bootstrap.templatetags import pagination_tags
136

@@ -70,58 +63,6 @@ def test_orphaned_page_obj_ten(self):
7063
self.assertTrue(pg["records"]["last"], 21)
7164

7265

73-
class TestHttpRequest(DjangoHttpRequest):
74-
page = 1
75-
76-
77-
class TestTemplatePaginateTags(TestCase):
78-
def test_render_range_by_two(self):
79-
t = Template("{% load pagination_tags %}{% autopaginate var 2 %}{% paginate %}")
80-
c = Context({"var": range(21), "request": TestHttpRequest()})
81-
self.assertEqual(
82-
t.render(c),
83-
'\n\n\n<nav aria-label="Page pagination">\n <ul class="pagination">\n \n <li class="page-item disabled"><a class="page-link" href="#" onclick="javascript: return false;">&laquo;</a></li>\n \n \n \n \n <li class="page-item active"><a class="page-link" href="#" onclick="javascript: return false;">1</a></li>\n \n \n \n \n \n <li class="page-item"><a class="page-link" href="?page=2">2</a></li>\n \n \n \n \n \n <li class="page-item"><a class="page-link" href="?page=3">3</a></li>\n \n \n \n \n \n <li class="page-item"><a class="page-link" href="?page=4">4</a></li>\n \n \n \n \n <li class="page-item disabled"><a class="page-link" href="#" onclick="javascript: return false;">...</a></li>\n \n \n \n \n <li class="page-item"><a class="page-link" href="?page=8">8</a></li>\n \n \n \n \n \n <li class="page-item"><a class="page-link" href="?page=9">9</a></li>\n \n \n \n \n \n <li class="page-item"><a class="page-link" href="?page=10">10</a></li>\n \n \n \n \n \n <li class="page-item"><a class="page-link" href="?page=11">11</a></li>\n \n \n \n \n <li class="page-item"><a class="page-link" href="?page=2">&raquo;</a></li>\n \n </ul>\n \n</nav>\n',
84-
)
85-
86-
def test_render_range_by_one(self):
87-
t = Template("{% load pagination_tags %}{% autopaginate var %}{% paginate %}")
88-
c = Context({"var": range(21), "request": TestHttpRequest()})
89-
self.assertEqual(
90-
t.render(c),
91-
'\n\n\n<nav aria-label="Page pagination">\n <ul class="pagination">\n \n <li class="page-item disabled"><a class="page-link" href="#" onclick="javascript: return false;">&laquo;</a></li>\n \n \n \n \n <li class="page-item active"><a class="page-link" href="#" onclick="javascript: return false;">1</a></li>\n \n \n \n \n \n <li class="page-item"><a class="page-link" href="?page=2">2</a></li>\n \n \n \n \n <li class="page-item"><a class="page-link" href="?page=2">&raquo;</a></li>\n \n </ul>\n \n</nav>\n',
92-
)
93-
94-
def test_render_range_by_twenty(self):
95-
t = Template(
96-
"{% load pagination_tags %}{% autopaginate var 20 %}{% paginate %}"
97-
)
98-
c = Context({"var": range(21), "request": TestHttpRequest()})
99-
self.assertEqual(
100-
t.render(c),
101-
'\n\n\n<nav aria-label="Page pagination">\n <ul class="pagination">\n \n <li class="page-item disabled"><a class="page-link" href="#" onclick="javascript: return false;">&laquo;</a></li>\n \n \n \n \n <li class="page-item active"><a class="page-link" href="#" onclick="javascript: return false;">1</a></li>\n \n \n \n \n \n <li class="page-item"><a class="page-link" href="?page=2">2</a></li>\n \n \n \n \n <li class="page-item"><a class="page-link" href="?page=2">&raquo;</a></li>\n \n </ul>\n \n</nav>\n',
102-
)
103-
104-
def test_render_range_by_var(self):
105-
t = Template(
106-
"{% load pagination_tags %}{% autopaginate var by %}{% paginate %}"
107-
)
108-
c = Context({"var": range(21), "by": 20, "request": TestHttpRequest()})
109-
self.assertEqual(
110-
t.render(c),
111-
'\n\n\n<nav aria-label="Page pagination">\n <ul class="pagination">\n \n <li class="page-item disabled"><a class="page-link" href="#" onclick="javascript: return false;">&laquo;</a></li>\n \n \n \n \n <li class="page-item active"><a class="page-link" href="#" onclick="javascript: return false;">1</a></li>\n \n \n \n \n \n <li class="page-item"><a class="page-link" href="?page=2">2</a></li>\n \n \n \n \n <li class="page-item"><a class="page-link" href="?page=2">&raquo;</a></li>\n \n </ul>\n \n</nav>\n',
112-
)
113-
114-
def test_render_range_by_var_as_name(self):
115-
t = Template(
116-
"{% load pagination_tags %}{% autopaginate var by as foo %}{{ foo }}"
117-
)
118-
c = Context({"var": list(range(21)), "by": 20, "request": TestHttpRequest()})
119-
self.assertEqual(
120-
t.render(c),
121-
"[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]",
122-
)
123-
124-
12566
class TestInfinitePaginator(TestCase):
12667
def test_paginate_range_by_two(self):
12768
pg = paginator.InfinitePaginator(range(20), 2, link_template="/bacon/page/%d")
@@ -169,18 +110,3 @@ def test_paginate_range_by_twenty_offset_ten(self):
169110
self.assertTrue(p2.has_previous())
170111
self.assertIsNone(p2.next_link())
171112
self.assertEqual(p2.previous_link(), "/bacon/page/1")
172-
173-
174-
class TestPaginationMiddleware(TestCase):
175-
def test_append_page_property(self):
176-
page_middleware = middleware.PaginationMiddleware()
177-
request = WSGIRequest(
178-
{
179-
"REQUEST_METHOD": "POST",
180-
"CONTENT_TYPE": "multipart",
181-
"wsgi.input": io.StringIO(),
182-
}
183-
)
184-
page_middleware.process_request(request)
185-
self.assertTrue(hasattr(request, "page"))
186-
request.upload_handlers.append("asdf")

0 commit comments

Comments
 (0)