# -*- coding: utf-8; -*- from unittest import TestCase from unittest.mock import patch 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_linked_columns(self): grid = self.make_grid(columns=['foo', 'bar']) self.assertEqual(grid.linked_columns, []) self.assertFalse(grid.is_linked('foo')) grid.set_link('foo') self.assertEqual(grid.linked_columns, ['foo']) self.assertTrue(grid.is_linked('foo')) self.assertFalse(grid.is_linked('bar')) grid.set_link('bar') self.assertEqual(grid.linked_columns, ['foo', 'bar']) self.assertTrue(grid.is_linked('foo')) self.assertTrue(grid.is_linked('bar')) grid.set_link('foo', False) self.assertEqual(grid.linked_columns, ['bar']) self.assertFalse(grid.is_linked('foo')) self.assertTrue(grid.is_linked('bar')) def test_render_vue_tag(self): grid = self.make_grid(columns=['foo', 'bar']) html = grid.render_vue_tag() self.assertEqual(html, '') 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('