fix: add grid renderers for bool, currency, quantity
also set bool renderer by default when possible
This commit is contained in:
parent
08a895a07b
commit
a612bf3846
2 changed files with 130 additions and 14 deletions
|
@ -1,6 +1,7 @@
|
|||
# -*- coding: utf-8; -*-
|
||||
|
||||
import datetime
|
||||
import decimal
|
||||
from unittest import TestCase
|
||||
from unittest.mock import patch, MagicMock
|
||||
|
||||
|
@ -232,6 +233,17 @@ class TestGrid(WebTestCase):
|
|||
self.assertIn('created', grid.renderers)
|
||||
self.assertIs(grid.renderers['created'], myrender)
|
||||
|
||||
# renderer set for boolean mapped field
|
||||
grid = self.make_grid(model_class=model.Upgrade)
|
||||
self.assertIn('executing', grid.renderers)
|
||||
self.assertIsNot(grid.renderers['executing'], myrender)
|
||||
|
||||
# renderer *not* set for boolean, if override present
|
||||
grid = self.make_grid(model_class=model.Upgrade,
|
||||
renderers={'executing': myrender})
|
||||
self.assertIn('executing', grid.renderers)
|
||||
self.assertIs(grid.renderers['executing'], myrender)
|
||||
|
||||
def test_linked_columns(self):
|
||||
grid = self.make_grid(columns=['foo', 'bar'])
|
||||
self.assertEqual(grid.linked_columns, [])
|
||||
|
@ -1331,6 +1343,62 @@ class TestGrid(WebTestCase):
|
|||
# rendering methods
|
||||
##############################
|
||||
|
||||
def test_render_boolean(self):
|
||||
grid = self.make_grid(columns=['foo', 'bar'])
|
||||
|
||||
# null
|
||||
obj = MagicMock(foo=None)
|
||||
self.assertEqual(grid.render_boolean(obj, 'foo', None), "")
|
||||
|
||||
# true
|
||||
obj = MagicMock(foo=True)
|
||||
self.assertEqual(grid.render_boolean(obj, 'foo', True), "Yes")
|
||||
|
||||
# false
|
||||
obj = MagicMock(foo=False)
|
||||
self.assertEqual(grid.render_boolean(obj, 'foo', False), "No")
|
||||
|
||||
def test_render_currency(self):
|
||||
grid = self.make_grid(columns=['foo', 'bar'])
|
||||
obj = MagicMock()
|
||||
|
||||
# null
|
||||
self.assertEqual(grid.render_currency(obj, 'foo', None), '')
|
||||
|
||||
# basic decimal example
|
||||
value = decimal.Decimal('42.00')
|
||||
self.assertEqual(grid.render_currency(obj, 'foo', value), '$42.00')
|
||||
|
||||
# basic float example
|
||||
value = 42.00
|
||||
self.assertEqual(grid.render_currency(obj, 'foo', value), '$42.00')
|
||||
|
||||
# decimal places will be rounded
|
||||
value = decimal.Decimal('42.12345')
|
||||
self.assertEqual(grid.render_currency(obj, 'foo', value), '$42.12')
|
||||
|
||||
# negative numbers get parens
|
||||
value = decimal.Decimal('-42.42')
|
||||
self.assertEqual(grid.render_currency(obj, 'foo', value), '($42.42)')
|
||||
|
||||
def test_render_quantity(self):
|
||||
grid = self.make_grid(columns=['foo', 'bar'])
|
||||
obj = MagicMock()
|
||||
|
||||
# null
|
||||
self.assertEqual(grid.render_quantity(obj, 'foo', None), "")
|
||||
|
||||
# integer decimals become integers
|
||||
value = decimal.Decimal('1.000')
|
||||
self.assertEqual(grid.render_quantity(obj, 'foo', value), "1")
|
||||
|
||||
# but decimal places are preserved
|
||||
value = decimal.Decimal('1.234')
|
||||
self.assertEqual(grid.render_quantity(obj ,'foo', value), "1.234")
|
||||
|
||||
# zero is *not* empty string (with this renderer)
|
||||
self.assertEqual(grid.render_quantity(obj, 'foo', 0), "0")
|
||||
|
||||
def test_render_datetime(self):
|
||||
grid = self.make_grid(columns=['foo', 'bar'])
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue