Skip to content

Commit 4623ffa

Browse files
committed
remove redundant 'python:' definitions. add pagination tests
1 parent 0c45687 commit 4623ffa

4 files changed

Lines changed: 111 additions & 4 deletions

File tree

src/cone/app/browser/templates/batched_items_footer.pt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,10 @@
99
<div class="batched_items_info float-start"
1010
tal:define="slice context.current_slice">
1111
<span i18n:translate="showing">Showing</span>
12-
<span tal:content="python: min(slice[0] + 1, context.item_count)"
12+
<span tal:content="min(slice[0] + 1, context.item_count)"
1313
class="badge bg-primary">1</span>
1414
<span i18n:translate="to">to</span>
15-
<span tal:content="python: min(slice[1], context.item_count)"
15+
<span tal:content="min(slice[1], context.item_count)"
1616
class="badge bg-primary">10</span>
1717
<span i18n:translate="of">of</span>
1818
<span tal:content="context.item_count"

src/cone/app/browser/templates/table.pt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -187,10 +187,10 @@
187187
<div class="table_info"
188188
tal:define="slice context.slice.slice">
189189
<span i18n:translate="showing">Showing</span>
190-
<span tal:content="python: min(slice[0] + 1, context.item_count)"
190+
<span tal:content="min(slice[0] + 1, context.item_count)"
191191
class="badge bg-primary">1</span>
192192
<span i18n:translate="to">to</span>
193-
<span tal:content="python: min(slice[1], context.item_count)"
193+
<span tal:content="min(slice[1], context.item_count)"
194194
class="badge bg-primary">10</span>
195195
<span i18n:translate="of">of</span>
196196
<span tal:content="context.item_count"

src/cone/app/tests/test_browser_batch.py

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -893,3 +893,55 @@ def filtered_items(self):
893893
batched_items.display_footer = False
894894
rendered = batched_items(model=model, request=self.layer.new_request())
895895
self.assertFalse(rendered.find(expected) > -1)
896+
897+
def test_footer_pagination(self):
898+
# The batched_items footer displays "Showing X to Y of Z entries".
899+
class MyBatchedItems(BatchedItems):
900+
slice_template = 'cone.app.testing:dummy_batched_items.pt'
901+
_items = []
902+
903+
@property
904+
def item_count(self):
905+
return len(self._items)
906+
907+
@property
908+
def slice_items(self):
909+
start, end = self.current_slice
910+
return self._items[start:end]
911+
912+
def footer_html(batched_items):
913+
footer = batched_items.rendered_footer
914+
start = footer.find('batched_items_info')
915+
end = footer.find('</div>', start)
916+
return footer[start:end]
917+
918+
# Empty list: from=0, to=0, total=0.
919+
batched_items = MyBatchedItems()
920+
batched_items.model = BaseNode()
921+
batched_items.request = self.layer.new_request()
922+
batched_items._items = []
923+
footer = footer_html(batched_items)
924+
self.assertIn('>0<', footer)
925+
926+
# Full first page: from=1, to=15, total=20.
927+
items = [BaseNode() for _ in range(20)]
928+
batched_items = MyBatchedItems()
929+
batched_items.model = BaseNode()
930+
batched_items.request = self.layer.new_request()
931+
batched_items._items = items
932+
footer = footer_html(batched_items)
933+
self.assertIn('>1<', footer)
934+
self.assertIn('>15<', footer)
935+
self.assertIn('>20<', footer)
936+
937+
# Partial last page: from=16, to=17, total=17.
938+
items = [BaseNode() for _ in range(17)]
939+
request = self.layer.new_request()
940+
request.params['b_page'] = '1'
941+
batched_items = MyBatchedItems()
942+
batched_items.model = BaseNode()
943+
batched_items.request = request
944+
batched_items._items = items
945+
footer = footer_html(batched_items)
946+
self.assertIn('>16<', footer)
947+
self.assertIn('>17<', footer)

src/cone/app/tests/test_browser_table.py

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -233,3 +233,58 @@ def sorted_rows(self, start, end, sort, order):
233233
# Datetime
234234
expected = '01.04.2011 00:00'
235235
self.assertTrue(rendered.find(expected) > -1)
236+
237+
def test_footer_pagination(self):
238+
# The table footer displays "Showing X to Y of Z entries".
239+
class MyTable(Table):
240+
col_defs = [{
241+
'id': 'col',
242+
'title': 'Col',
243+
'sort_key': None,
244+
'sort_title': None,
245+
'content': 'string',
246+
}]
247+
_count = 0
248+
249+
@property
250+
def item_count(self):
251+
return self._count
252+
253+
def sorted_rows(self, start, end, sort, order):
254+
rows = []
255+
for i in range(self._count):
256+
row_data = RowData()
257+
row_data['col'] = str(i)
258+
rows.append(row_data)
259+
return rows[start:end]
260+
261+
tmpl = 'cone.app:browser/templates/table.pt'
262+
model = BaseNode()
263+
request = self.layer.new_request()
264+
265+
def footer_html(rendered):
266+
start = rendered.find('table_info')
267+
end = rendered.find('</div>', start)
268+
return rendered[start:end]
269+
270+
# Empty table: from=0, to=0, total=0.
271+
table = MyTable(tmpl, None, 'table')
272+
table._count = 0
273+
footer = footer_html(table(model, request))
274+
self.assertIn('>0<', footer)
275+
276+
# Full first page: from=1, to=15, total=20.
277+
table = MyTable(tmpl, None, 'table')
278+
table._count = 20
279+
footer = footer_html(table(model, request))
280+
self.assertIn('>1<', footer)
281+
self.assertIn('>15<', footer)
282+
self.assertIn('>20<', footer)
283+
284+
# Partial last page: from=16, to=17, total=17.
285+
table = MyTable(tmpl, None, 'table')
286+
table._count = 17
287+
request.params['b_page'] = '1'
288+
footer = footer_html(table(model, request))
289+
self.assertIn('>16<', footer)
290+
self.assertIn('>17<', footer)

0 commit comments

Comments
 (0)