def test_plugin_should_send_request_any_false(self, mock_post): renderer = hypernova.Renderer('http://localhost', [ plugins.PluginShouldSendRequestTrue(), plugins.PluginShouldSendRequestFalse() ]) html = renderer.render({'component': {}}) self.assertFalse(mock_post.called)
def test_plugin_will_send_request_false(self, mock_plugin, mock_post): renderer = hypernova.Renderer('http://localhost', [ plugins.PluginShouldSendRequestFalse(), plugins.PluginWillSendRequest() ]) renderer.render({'component': {}}) self.assertFalse(mock_plugin.called)
def test_plugin_prepare_request(self, mock_post): to_append = {"extra": 1} renderer = hypernova.Renderer( "http://localhost", [plugins.PluginPrepareRequest("component", to_append)]) renderer.render({"component": {}}) component_data = mock_post.call_args[1]["json"]["component"] self.assertEqual(component_data.get("extra"), to_append.get("extra"))
def test_plugin_prepare_request(self, mock_post): to_append = {'extra': 1} renderer = hypernova.Renderer('http://localhost', [ plugins.PluginPrepareRequest('component', to_append) ]) html = renderer.render({'component': {}}) component_data = mock_post.call_args[1]['json']['component'] self.assertEqual(component_data.get('extra'), to_append.get('extra'))
def test_plugin_get_view_data(self, mock_post): expected_data = {'foo': 'bar'} renderer = hypernova.Renderer('http://localhost', [ plugins.PluginGetViewData('component', expected_data) ]) html = renderer.render({'component': {}}) data = mock_post.call_args[1]['json']['component']['data'] self.assertEqual(data, expected_data) self.assertEqual(html, '<p>{}</p>'.format(json.dumps(expected_data)))
def test_plugin_get_view_data(self, mock_post): expected_data = {"foo": "bar"} renderer = hypernova.Renderer( "http://localhost", [plugins.PluginGetViewData("component", expected_data)]) html = renderer.render({"component": {}}) data = mock_post.call_args[1]["json"]["component"]["data"] self.assertEqual(data, expected_data) self.assertEqual(html, "<p>{}</p>".format(json.dumps(expected_data)))
def test_plugin_will_send_request(self, mock_plugin, mock_post): renderer = hypernova.Renderer( "http://localhost", [ plugins.PluginShouldSendRequestTrue(), plugins.PluginWillSendRequest() ], ) renderer.render({"component": {}}) self.assertTrue(mock_plugin.called)
def load_or_empty(self, component, headers={}, ssr_context=None): # from hypernova.plugins.dev_mode import DevModePlugin renderer = hypernova.Renderer( settings.REACT_RENDER_HOST, # [DevModePlugin(logger)] if settings.DEBUG else [], [], timeout=get_request_timeout(), headers=headers, ) inner_html = "" try: props = component["json_obj"] if ssr_context: props["context"] = ssr_context inner_html = renderer.render({component["name"]: props}) except Exception as e: msg = "SSR request to '{}' failed: {}".format( settings.REACT_RENDER_HOST, e.__class__.__name__) logger.exception(msg) if not inner_html: return {"html": "", "params": {}} match = re.search(hypernova_id_re, inner_html) hypernova_id = match.group(1) if match else None match = re.search(hypernova_key_re, inner_html) hypernova_key = match.group(1) if match else None return { "html": inner_html, "params": { "hypernova_id": hypernova_id, "hypernova_key": hypernova_key, }, }
def test_plugin_on_error_component(self, mock_plugin, mock_post): renderer = hypernova.Renderer('http://localhost', [ plugins.PluginOnError() ]) renderer.render({'component': {}}) self.assertEqual(1, mock_plugin.call_count)
def test_plugin_should_send_request_false(self, mock_post): renderer = hypernova.Renderer("http://localhost", [plugins.PluginShouldSendRequestFalse()]) renderer.render({"component": {}}) self.assertFalse(mock_post.called)
def test_no_plugins(self, mock_post): renderer = hypernova.Renderer('http://localhost') html = renderer.render({'component': {'foo': 'bar'}}) self.assertEqual(html, '<p>{}</p>'.format(json.dumps({'foo': 'bar'})))
def test_plugin_get_view_data_no_return(self, mock_post): renderer = hypernova.Renderer("http://localhost", [plugins.PluginGetViewDataDoNothing()]) html = renderer.render({"component": {"foo": "bar"}}) self.assertEqual(html, "<p>{}</p>".format(json.dumps({"foo": "bar"})))
def test_no_plugins(self, mock_post): renderer = hypernova.Renderer("http://localhost") html = renderer.render({"component": {"foo": "bar"}}) self.assertEqual(html, "<p>{}</p>".format(json.dumps({"foo": "bar"})))
def test_request_fail(self, mock_post): renderer = hypernova.Renderer("http://localhost") html = renderer.render({"component": {"foo": "bar"}}) self.assertIsInstance(html, str)
def test_plugin_on_error_response(self, mock_plugin, mock_post): renderer = hypernova.Renderer("http://localhost", [plugins.PluginOnError()]) renderer.render({"component": {}}) self.assertEqual(1, mock_plugin.call_count)
def test_request_fail(self, mock_post): renderer = hypernova.Renderer('http://localhost') html = renderer.render({'component': {'foo': 'bar'}}) self.assertIsInstance(html, str)
def test_plugin_get_view_data_no_return(self, mock_post): renderer = hypernova.Renderer( 'http://localhost', [plugins.PluginGetViewDataDoNothing()] ) html = renderer.render({'component': {'foo': 'bar'}}) self.assertEqual(html, '<p>{}</p>'.format(json.dumps({'foo': 'bar'})))