78 lines
2.4 KiB
Python
78 lines
2.4 KiB
Python
# -*- coding: utf-8; -*-
|
|
|
|
from unittest import TestCase
|
|
|
|
from pyramid import testing
|
|
|
|
from wuttjamaican.conf import WuttaConfig
|
|
from wuttaweb.grids import base
|
|
from wuttaweb.forms import FieldList
|
|
|
|
|
|
class TestGrid(TestCase):
|
|
|
|
def setUp(self):
|
|
self.config = WuttaConfig(defaults={
|
|
'wutta.web.menus.handler_spec': 'tests.utils:NullMenuHandler',
|
|
})
|
|
|
|
self.request = testing.DummyRequest(wutta_config=self.config, use_oruga=False)
|
|
|
|
self.pyramid_config = testing.setUp(request=self.request, settings={
|
|
'mako.directories': ['wuttaweb:templates'],
|
|
})
|
|
|
|
def tearDown(self):
|
|
testing.tearDown()
|
|
|
|
def make_grid(self, request=None, **kwargs):
|
|
return base.Grid(request or self.request, **kwargs)
|
|
|
|
def test_constructor(self):
|
|
|
|
# empty
|
|
grid = self.make_grid()
|
|
self.assertIsNone(grid.key)
|
|
self.assertIsNone(grid.columns)
|
|
self.assertIsNone(grid.data)
|
|
|
|
# now with columns
|
|
grid = self.make_grid(columns=['foo', 'bar'])
|
|
self.assertIsInstance(grid.columns, FieldList)
|
|
self.assertEqual(grid.columns, ['foo', 'bar'])
|
|
|
|
def test_vue_tagname(self):
|
|
grid = self.make_grid()
|
|
self.assertEqual(grid.vue_tagname, 'wutta-grid')
|
|
|
|
def test_vue_component(self):
|
|
grid = self.make_grid()
|
|
self.assertEqual(grid.vue_component, 'WuttaGrid')
|
|
|
|
def test_render_vue_tag(self):
|
|
grid = self.make_grid(columns=['foo', 'bar'])
|
|
html = grid.render_vue_tag()
|
|
self.assertEqual(html, '<wutta-grid></wutta-grid>')
|
|
|
|
def test_render_vue_template(self):
|
|
self.pyramid_config.include('pyramid_mako')
|
|
self.pyramid_config.add_subscriber('wuttaweb.subscribers.before_render',
|
|
'pyramid.events.BeforeRender')
|
|
|
|
grid = self.make_grid(columns=['foo', 'bar'])
|
|
html = grid.render_vue_template()
|
|
self.assertIn('<script type="text/x-template" id="wutta-grid-template">', html)
|
|
|
|
def test_get_vue_columns(self):
|
|
|
|
# error if no columns are set
|
|
grid = self.make_grid()
|
|
self.assertRaises(ValueError, grid.get_vue_columns)
|
|
|
|
# otherwise get back field/label dicts
|
|
grid = self.make_grid(columns=['foo', 'bar'])
|
|
columns = grid.get_vue_columns()
|
|
first = columns[0]
|
|
self.assertEqual(first['field'], 'foo')
|
|
self.assertEqual(first['label'], 'Foo')
|