def test_make_select_cls_update_2_choices(self, mock_pkg_api, mock_env_api): mock_pkg_api.app_by_fqn.return_value =\ mock.Mock(fully_qualified_name='foo_class_fqn') mock_pkg_api.apps_that_inherit.return_value = [] expected_choices = [ ('', 'Foo'), ('foo_app_id', 'foo_app_name') ] foo_app = mock.MagicMock() foo_app.__getitem__.return_value = {'id': 'foo_app_id'} foo_app.configure_mock(name='foo_app_name') mock_env_api.service_list_by_fqns.return_value = [foo_app] dynamic_select_cls = fields.make_select_cls('foo_class_fqn') dynamic_select = dynamic_select_cls(empty_value_message='Foo') dynamic_select.update({}, self.request, environment_id='foo_env_id') self.assertEqual(expected_choices, dynamic_select.choices) self.assertEqual('foo_app_id', dynamic_select.initial) mock_pkg_api.app_by_fqn.assert_called_once_with( self.request, 'foo_class_fqn') mock_env_api.service_list_by_fqns.assert_called_once_with( self.request, 'foo_env_id', ['foo_class_fqn'] )
def test_make_select_cls_update(self, mock_pkg_api, mock_env_api): mock_pkg_api.app_by_fqn.return_value =\ mock.Mock(fully_qualified_name='foo_class_fqn') mock_pkg_api.apps_that_inherit.return_value = [ mock.Mock(fully_qualified_name='foo_class_fqn'), mock.Mock(fully_qualified_name='bar_class_fqn') ] expected_choices = [('', 'Foo'), ('foo_app_id', 'foo_app_name'), ('bar_app_id', 'bar_app_name')] foo_app = mock.MagicMock() foo_app.__getitem__.return_value = {'id': 'foo_app_id'} foo_app.configure_mock(name='foo_app_name') bar_app = mock.MagicMock() bar_app.__getitem__.return_value = {'id': 'bar_app_id'} bar_app.configure_mock(name='bar_app_name') mock_env_api.service_list_by_fqns.return_value = [foo_app, bar_app] dynamic_select_cls = fields.make_select_cls('foo_class_fqn') self.assertIsNotNone(dynamic_select_cls) self.assertEqual('DynamicSelect', dynamic_select_cls.__name__) dynamic_select = dynamic_select_cls(empty_value_message='Foo') dynamic_select.update({}, self.request, environment_id='foo_env_id') self.assertTrue( hasattr(dynamic_select.widget.add_item_link, '__call__')) self.assertEqual(expected_choices, dynamic_select.choices) self.assertIsNone(dynamic_select.initial) mock_pkg_api.app_by_fqn.assert_called_once_with( self.request, 'foo_class_fqn') mock_env_api.service_list_by_fqns.assert_called_once_with( self.request, 'foo_env_id', ['foo_class_fqn', 'bar_class_fqn'])
def test_update_clean(self, mock_pkg_api, mock_env_api): mock_pkg_api.app_by_fqn.return_value = None mock_pkg_api.apps_that_inherit.return_value = [] mock_env_api.service_list_by_fqns.return_value = [] dynamic_select_cls = fields.make_select_cls('foo_class_fqn') dynamic_select = dynamic_select_cls(empty_value_message='Foo') dynamic_select.form = mock.Mock() dynamic_select.required = False dynamic_select.choices = [('value', '')] self.assertEqual('value', dynamic_select.clean('value'))
def test_make_select_cls_update_no_matching_classes(self, mock_pkg_api, mock_env_api): mock_pkg_api.app_by_fqn.return_value = None mock_pkg_api.apps_that_inherit.return_value = [] mock_env_api.service_list_by_fqns.return_value = [] expected_choices = [('', 'Foo')] dynamic_select_cls = fields.make_select_cls('foo_class_fqn') dynamic_select = dynamic_select_cls(empty_value_message='Foo') dynamic_select.update({}, self.request, environment_id='foo_env_id') self.assertEqual(expected_choices, dynamic_select.choices) self.assertIsNone(dynamic_select.initial) mock_pkg_api.app_by_fqn.assert_called_once_with( self.request, 'foo_class_fqn') mock_env_api.service_list_by_fqns.assert_called_once_with( self.request, 'foo_env_id', [])
def test_make_select_cls_update_make_link(self, mock_pkg_api, mock_env_api, mock_reverse): mock_pkg_api.app_by_fqn.return_value = None mock_pkg_api.apps_that_inherit.return_value = [] mock_env_api.service_list_by_fqns.return_value = [] mock_reverse.return_value = 'foo_url' dynamic_select_cls = fields.make_select_cls('foo_class_fqn') dynamic_select = dynamic_select_cls(empty_value_message='Foo') dynamic_select.update({}, self.request, environment_id='foo_env_id') result = dynamic_select.widget.add_item_link() self.assertEqual('', result) mock_pkg = mock.Mock(fully_qualified_name='foo_class_fqn') mock_pkg.configure_mock(name='foo_class_name') mock_pkg_api.app_by_fqn.return_value = mock_pkg dynamic_select.update({}, self.request, environment_id='foo_env_id') result = dynamic_select.widget.add_item_link() expected = '[["foo_class_name", "foo_url"]]' self.assertEqual(expected, result)
def __missing__(self, key): return fields.make_select_cls(key)