fix: misc. improvements for display of grids, form errors
This commit is contained in:
parent
bf2ca4b475
commit
2503836ef5
8 changed files with 183 additions and 70 deletions
|
@ -461,15 +461,10 @@ class TestForm(TestCase):
|
|||
# nb. no error message
|
||||
self.assertNotIn('message', html)
|
||||
|
||||
# with single "static" error
|
||||
dform['foo'].error = MagicMock(msg="something is wrong")
|
||||
html = form.render_vue_field('foo')
|
||||
self.assertIn(' message="something is wrong"', html)
|
||||
|
||||
# with single "dynamic" error
|
||||
dform['foo'].error = MagicMock(msg="`something is wrong`")
|
||||
html = form.render_vue_field('foo')
|
||||
self.assertIn(':message="`something is wrong`"', html)
|
||||
# with error message
|
||||
with patch.object(form, 'get_field_errors', return_value=['something is wrong']):
|
||||
html = form.render_vue_field('foo')
|
||||
self.assertIn('something is wrong', html)
|
||||
|
||||
# add another field, but not to deform, so it should still
|
||||
# display but with no widget
|
||||
|
@ -527,18 +522,21 @@ class TestForm(TestCase):
|
|||
|
||||
def test_get_field_errors(self):
|
||||
schema = self.make_schema()
|
||||
|
||||
# simple 'Required' validation failure
|
||||
form = self.make_form(schema=schema)
|
||||
dform = form.get_deform()
|
||||
self.request.method = 'POST'
|
||||
self.request.POST = {'foo': 'one'}
|
||||
self.assertFalse(form.validate())
|
||||
errors = form.get_field_errors('bar')
|
||||
self.assertEqual(errors, ['Required'])
|
||||
|
||||
# no error
|
||||
errors = form.get_field_errors('foo')
|
||||
self.assertEqual(len(errors), 0)
|
||||
|
||||
# simple error
|
||||
dform['foo'].error = MagicMock(msg="something is wrong")
|
||||
errors = form.get_field_errors('foo')
|
||||
self.assertEqual(len(errors), 1)
|
||||
self.assertEqual(errors[0], "something is wrong")
|
||||
# no errors
|
||||
form = self.make_form(schema=schema)
|
||||
self.request.POST = {'foo': 'one', 'bar': 'two'}
|
||||
self.assertTrue(form.validate())
|
||||
errors = form.get_field_errors('bar')
|
||||
self.assertEqual(errors, [])
|
||||
|
||||
def test_validate(self):
|
||||
schema = self.make_schema()
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
# -*- coding: utf-8; -*-
|
||||
|
||||
import decimal
|
||||
import functools
|
||||
from unittest import TestCase
|
||||
from unittest.mock import MagicMock, patch
|
||||
|
@ -558,6 +559,44 @@ class TestMasterView(WebTestCase):
|
|||
view.configure_grid(grid)
|
||||
self.assertNotIn('uuid', grid.columns)
|
||||
|
||||
def test_grid_render_bool(self):
|
||||
model = self.app.model
|
||||
view = self.make_view()
|
||||
user = model.User(username='barney', active=None)
|
||||
|
||||
# null
|
||||
value = view.grid_render_bool(user, 'active', None)
|
||||
self.assertIsNone(value)
|
||||
|
||||
# true
|
||||
user.active = True
|
||||
value = view.grid_render_bool(user, 'active', True)
|
||||
self.assertEqual(value, "Yes")
|
||||
|
||||
# false
|
||||
user.active = False
|
||||
value = view.grid_render_bool(user, 'active', False)
|
||||
self.assertEqual(value, "No")
|
||||
|
||||
def test_grid_render_currency(self):
|
||||
model = self.app.model
|
||||
view = self.make_view()
|
||||
obj = {'amount': None}
|
||||
|
||||
# null
|
||||
value = view.grid_render_currency(obj, 'amount', None)
|
||||
self.assertIsNone(value)
|
||||
|
||||
# normal amount
|
||||
obj['amount'] = decimal.Decimal('100.42')
|
||||
value = view.grid_render_currency(obj, 'amount', '100.42')
|
||||
self.assertEqual(value, "$100.42")
|
||||
|
||||
# negative amount
|
||||
obj['amount'] = decimal.Decimal('-100.42')
|
||||
value = view.grid_render_currency(obj, 'amount', '-100.42')
|
||||
self.assertEqual(value, "($100.42)")
|
||||
|
||||
def test_grid_render_notes(self):
|
||||
model = self.app.model
|
||||
view = self.make_view()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue