Esempio n. 1
0
    def test_handler_patterns_url_basename(self, mock_tbm, mock_url):
        app = tethys_app_base.TethysBase()
        app._namespace = 'foo'
        app.root_url = 'test-url'

        def test_func(mock_doc):
            return ''

        url_map = mock.MagicMock(controller='test_app.controllers.home',
                                 handler=test_func,
                                 handler_type='bokeh')
        url_map.name = 'basename'
        url_map.url = 'basename/'
        app.url_maps = mock.MagicMock(return_value=[
            url_map,
        ])
        mock_tbm.return_value = mock.MagicMock(url_maps=[
            'basename/',
        ])

        app.handler_patterns

        rts_call_args = mock_url.call_args_list
        self.assertEqual(r'^apps/test-url/basename/autoload.js$',
                         rts_call_args[0][0][0])
        self.assertIn('name', rts_call_args[0][1])
        self.assertIn('name', rts_call_args[1][1])
        self.assertEqual('basename_bokeh_autoload',
                         rts_call_args[0][1]['name'])
        self.assertEqual('basename_bokeh_ws', rts_call_args[1][1]['name'])
        self.assertIs(
            rts_call_args[0][1]['kwargs']
            ['app_context']._application._handlers[0]._func, test_func)
Esempio n. 2
0
    def test_url_patterns(self, mock_tbm, mock_url):
        app = tethys_app_base.TethysBase()
        app._namespace = 'foo'
        url_map = mock.MagicMock(controller='test_app.controllers.home',
                                 url='test-url',
                                 protocol='http')
        url_map.name = 'home'
        url_map_ws = mock.MagicMock(controller='test_app.controllers.TestWS',
                                    url='test-url-ws',
                                    protocol='websocket')
        url_map_ws.name = 'ws'
        app.url_maps = mock.MagicMock(return_value=[url_map, url_map_ws])
        mock_tbm.return_value = mock.MagicMock(url_maps='test-app')

        # Execute
        result = app.url_patterns
        # Check url call at django_url = url...
        rts_call_args = mock_url.call_args_list
        self.assertEqual('test-url', rts_call_args[0][0][0])
        self.assertEqual('test-url-ws', rts_call_args[1][0][0])
        self.assertIn('name', rts_call_args[0][1])
        self.assertIn('name', rts_call_args[1][1])
        self.assertEqual('home', rts_call_args[0][1]['name'])
        self.assertEqual('ws', rts_call_args[1][1]['name'])
        self.assertIn('foo', result['http'])
        self.assertIn('foo', result['websocket'])
        self.assertIsInstance(rts_call_args[0][0][1], FunctionType)
        self.assertIsInstance(rts_call_args[1][0][1], type)
Esempio n. 3
0
    def test_handler_patterns(self, mock_tbm, mock_url):
        # import pdb; pdb.set_trace()
        app = tethys_app_base.TethysBase()
        app._namespace = 'foo'
        app.root_url = 'test-url'
        url_map = mock.MagicMock(controller='test_app.controllers.home',
                                 handler='test_app.controllers.home_handler',
                                 handler_type='bokeh',
                                 url='')
        url_map.name = 'home'

        app.url_maps = mock.MagicMock(return_value=[
            url_map,
        ])
        mock_tbm.return_value = mock.MagicMock(url_maps=[
            'test-app',
        ])

        # Execute
        result = app.handler_patterns
        # Check url call at django_url = url...
        rts_call_args = mock_url.call_args_list
        self.assertEqual(r'^apps/test-url/autoload.js$',
                         rts_call_args[0][0][0])
        self.assertEqual(r'^apps/test-url/ws$', rts_call_args[1][0][0])
        self.assertIn('name', rts_call_args[0][1])
        self.assertIn('name', rts_call_args[1][1])
        self.assertEqual('home_bokeh_autoload', rts_call_args[0][1]['name'])
        self.assertEqual('home_bokeh_ws', rts_call_args[1][1]['name'])
        self.assertIn('foo', result['http'])
        self.assertIn('foo', result['websocket'])
        self.assertIsInstance(rts_call_args[0][0][1], type)
        self.assertIsInstance(rts_call_args[1][0][1], type)
Esempio n. 4
0
    def test_url_patterns_import_error(self, mock_tbm, mock_log):
        mock_error = mock_log.error
        app = tethys_app_base.TethysBase()
        url_map = mock.MagicMock(controller='1module.1function', url='test-app')
        url_map.name = 'home'
        app.url_maps = mock.MagicMock(return_value=[url_map])
        mock_tbm.return_value = mock.MagicMock(url_maps='test-app')

        # assertRaises needs a callable, not a property
        def test_url_patterns():
            return app.url_patterns

        # Check Error Message
        self.assertRaises(ImportError, test_url_patterns)
        rts_call_args = mock_error.call_args_list
        error_message = 'The following error occurred while trying to import' \
                        ' the controller function "1module.1function"'
        self.assertIn(error_message, rts_call_args[0][0][0])
Esempio n. 5
0
    def test_handler_patterns_attribute_error(self, mock_tbm, mock_log):
        mock_error = mock_log.error
        app = tethys_app_base.TethysBase()
        url_map = mock.MagicMock(controller='test_app.controllers.home',
                                 handler='test_app.controllers.home_handler1',
                                 handler_type='bokeh',
                                 url='')
        url_map.name = 'home'
        app.url_maps = mock.MagicMock(return_value=[url_map])
        mock_tbm.return_value = mock.MagicMock(url_maps='test-app')

        # assertRaises needs a callable, not a property
        def test_handler_patterns():
            return app.handler_patterns

        # Check Error Message
        self.assertRaises(AttributeError, test_handler_patterns)
        rts_call_args = mock_error.call_args_list
        error_message = 'The following error occurred while trying to access' \
                        ' the handler function "test_app.controllers.home_handler1"'
        self.assertIn(error_message, rts_call_args[0][0][0])
Esempio n. 6
0
    def test_url_patterns_no_basestring(self, mock_tbm, mock_url):
        app = tethys_app_base.TethysBase()
        # controller_mock = mock.MagicMock()

        def test_func():
            return ''

        url_map = mock.MagicMock(controller=test_func, url='test-app')
        url_map.name = 'home'
        app.url_maps = mock.MagicMock(return_value=[url_map])
        mock_tbm.return_value = mock.MagicMock(url_maps='test-app')

        # Execute
        app.url_patterns

        # Check url call at django_url = url...
        rts_call_args = mock_url.call_args_list
        self.assertEqual('test-app', rts_call_args[0][0][0])
        self.assertIn('name', rts_call_args[0][1])
        self.assertEqual('home', rts_call_args[0][1]['name'])
        self.assertIs(rts_call_args[0][0][1], test_func)
Esempio n. 7
0
 def test_url_maps(self):
     result = tethys_app_base.TethysBase().url_maps()
     self.assertEqual([], result)
Esempio n. 8
0
 def test_remove_from_db(self):
     self.assertRaises(NotImplementedError,
                       tethys_app_base.TethysBase().remove_from_db)
Esempio n. 9
0
 def test_sync_with_tethys_db(self):
     self.assertRaises(NotImplementedError,
                       tethys_app_base.TethysBase().sync_with_tethys_db)