3
0
Fork 0

fix: add render_date() method for grids

and corresponding built-in for set_renderer()
This commit is contained in:
Lance Edgar 2025-01-13 17:02:39 -06:00
parent 52a6bbf0f0
commit a405b19217
2 changed files with 54 additions and 6 deletions

View file

@ -213,7 +213,7 @@ class TestGrid(WebTestCase):
obj = MagicMock(foo=42.00)
self.assertEqual(grid.renderers['foo'](obj, 'foo', 42.00), '42')
def test_set_default_renderer(self):
def test_set_default_renderers(self):
model = self.app.model
# no defaults for "plain" schema
@ -249,6 +249,18 @@ class TestGrid(WebTestCase):
self.assertIn('executing', grid.renderers)
self.assertIs(grid.renderers['executing'], myrender)
# nb. as of writing we have no Date columns in default schema,
# so must invent one to test that type
class SomeFoolery(model.Base):
__tablename__ = 'somefoolery'
id = sa.Column(sa.Integer(), primary_key=True)
created = sa.Column(sa.Date())
# renderer set for date mapped field
grid = self.make_grid(model_class=SomeFoolery)
self.assertIn('created', grid.renderers)
self.assertIsNot(grid.renderers['created'], myrender)
def test_linked_columns(self):
grid = self.make_grid(columns=['foo', 'bar'])
self.assertEqual(grid.linked_columns, [])
@ -1415,6 +1427,20 @@ class TestGrid(WebTestCase):
# zero is *not* empty string (with this renderer)
self.assertEqual(grid.render_quantity(obj, 'foo', 0), "0")
def test_render_date(self):
grid = self.make_grid(columns=['foo', 'bar'])
# null
obj = MagicMock(dt=None)
result = grid.render_date(obj, 'dt', None)
self.assertIsNone(result)
# typical
dt = datetime.date(2025, 1, 13)
obj = MagicMock(dt=dt)
result = grid.render_date(obj, 'dt', str(dt))
self.assertEqual(result, '2025-01-13')
def test_render_datetime(self):
grid = self.make_grid(columns=['foo', 'bar'])