fix: improve support for date, datetime fields in grids, forms
This commit is contained in:
parent
eda2326a97
commit
3cad7f1b13
8 changed files with 234 additions and 6 deletions
|
@ -1,5 +1,6 @@
|
|||
# -*- coding: utf-8; -*-
|
||||
|
||||
import datetime
|
||||
from unittest import TestCase
|
||||
from unittest.mock import patch, MagicMock
|
||||
|
||||
|
@ -206,6 +207,31 @@ class TestGrid(WebTestCase):
|
|||
self.assertIsNot(grid.renderers['foo'], render2)
|
||||
self.assertEqual(grid.renderers['foo'](None, None, None), 42)
|
||||
|
||||
def test_set_default_renderer(self):
|
||||
model = self.app.model
|
||||
|
||||
# no defaults for "plain" schema
|
||||
grid = self.make_grid(columns=['foo', 'bar'])
|
||||
self.assertEqual(grid.renderers, {})
|
||||
|
||||
# no defaults for "plain" mapped class
|
||||
grid = self.make_grid(model_class=model.Setting)
|
||||
self.assertEqual(grid.renderers, {})
|
||||
|
||||
def myrender(obj, key, value):
|
||||
return value
|
||||
|
||||
# renderer set for datetime mapped field
|
||||
grid = self.make_grid(model_class=model.Upgrade)
|
||||
self.assertIn('created', grid.renderers)
|
||||
self.assertIsNot(grid.renderers['created'], myrender)
|
||||
|
||||
# renderer *not* set for datetime, if override present
|
||||
grid = self.make_grid(model_class=model.Upgrade,
|
||||
renderers={'created': myrender})
|
||||
self.assertIn('created', grid.renderers)
|
||||
self.assertIs(grid.renderers['created'], myrender)
|
||||
|
||||
def test_linked_columns(self):
|
||||
grid = self.make_grid(columns=['foo', 'bar'])
|
||||
self.assertEqual(grid.linked_columns, [])
|
||||
|
@ -1294,6 +1320,18 @@ class TestGrid(WebTestCase):
|
|||
# rendering methods
|
||||
##############################
|
||||
|
||||
def test_render_datetime(self):
|
||||
grid = self.make_grid(columns=['foo', 'bar'])
|
||||
|
||||
obj = MagicMock(dt=None)
|
||||
result = grid.render_datetime(obj, 'dt', None)
|
||||
self.assertIsNone(result)
|
||||
|
||||
dt = datetime.datetime(2024, 12, 12, 13, 44, tzinfo=datetime.timezone.utc)
|
||||
obj = MagicMock(dt=dt)
|
||||
result = grid.render_datetime(obj, 'dt', str(dt))
|
||||
self.assertEqual(result, '2024-12-12 13:44+0000')
|
||||
|
||||
def test_render_vue_tag(self):
|
||||
grid = self.make_grid(columns=['foo', 'bar'])
|
||||
html = grid.render_vue_tag()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue