def test_skip_rendering_actions_for_unsaved_objects(admin_client, mocker, article): from test_proj.blog.admin import ArticleAdmin unsaved_article = Article() admin = ArticleAdmin(unsaved_article, admin_site) assert admin.render_inline_actions(unsaved_article) == ''
def test_wrong_action_type(admin_client, article): """Test for appropriate exception, when the action is not callable.""" from inline_actions.admin import ActionNotCallable from test_proj.blog.admin import ArticleAdmin admin = ArticleAdmin(article, admin_site) admin.inline_actions = ['property_action'] admin.property_action = 'test' fake_request = {} with pytest.raises(ActionNotCallable): admin._execute_action(fake_request, admin, 'property_action', article)
def test_non_existing_action(admin_site, article): """Test for appropriate exception, when `action` is not found.""" from test_proj.blog.admin import ArticleAdmin ArticleAdmin.inline_actions = ['non_existing'] fake_request = {} admin = ArticleAdmin(article, admin_site) admin._request = fake_request with pytest.raises(RuntimeError): admin.render_inline_actions(article) # reset ArticleAdmin.inline_actions = []
def test_missing_render_inline_actions_from_readonly_fields( rf, admin_user, admin_site, article ): """ Make sure that customization does not break the app. """ from test_proj.blog import admin class ArticleAdmin(admin.InlineActionsModelAdminMixin, admin.admin.ModelAdmin): list_display = ('name',) inline_actions = None def get_readonly_fields(self, *args, **kwargs): """ Do some fancy logic to return a list of fields, which does not include `render_inline_actions`. """ return [] request = rf.get(f'/admin/blog/articles/{article.id}/') request.user = admin_user admin = ArticleAdmin(Article, admin_site) # even though `render_inline_actions` is not part of the fields, # it should not fail :) admin.changeform_view(request)