Skip to content

Commit

Permalink
Add test for passing None to add_formatter
Browse files Browse the repository at this point in the history
  • Loading branch information
claudep committed Mar 21, 2024
1 parent 23e4699 commit e666c46
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 2 deletions.
5 changes: 3 additions & 2 deletions src/tablib/core.py
Original file line number Diff line number Diff line change
Expand Up @@ -623,7 +623,8 @@ def get_col(self, index):
def add_formatter(self, col, handler):
"""Adds a formatter to the :class:`Dataset`.
:param col: column to. Accepts index int or header str.
:param col: column to. Accepts index int, header str, or None to apply
the formatter to all columns.
:param handler: reference to callback function to execute against
each cell value.
"""
Expand All @@ -634,7 +635,7 @@ def add_formatter(self, col, handler):
else:
raise KeyError

if not col > self.width:
if col is None or col <= self.width:
self._formatters.append((col, handler))
else:
raise InvalidDatasetIndex
Expand Down
16 changes: 16 additions & 0 deletions tests/test_tablib.py
Original file line number Diff line number Diff line change
Expand Up @@ -577,6 +577,22 @@ def _formatter(cell_value):
# Test once more as the result should be the same
self.assertEqual(self.founders.dict, expected)

def test_formatters_all_cols(self):
"""
Passing None as first add_formatter param apply formatter to all columns.
"""

def _formatter(cell_value):
return str(cell_value).upper()

self.founders.add_formatter(None, _formatter)

self.assertEqual(self.founders.dict, [
{'first_name': 'JOHN', 'last_name': 'ADAMS', 'gpa': '90'},
{'first_name': 'GEORGE', 'last_name': 'WASHINGTON', 'gpa': '67'},
{'first_name': 'THOMAS', 'last_name': 'JEFFERSON', 'gpa': '50'},
])

def test_unicode_renders_markdown_table(self):
# add another entry to test right field width for
# integer
Expand Down

0 comments on commit e666c46

Please sign in to comment.