From 67d39fcdea290cb74fa9cabac7b0888ccba9595d Mon Sep 17 00:00:00 2001 From: Aleksandr Soloshenko Date: Thu, 27 Jul 2023 20:55:59 +0700 Subject: [PATCH] Added: tests for admin actions --- recipes/admin/admin.py | 3 +-- recipes/tests/admin/__init__.py | 0 recipes/tests/admin/test_actions.py | 42 +++++++++++++++++++++++++++++ 3 files changed, 43 insertions(+), 2 deletions(-) create mode 100644 recipes/tests/admin/__init__.py create mode 100644 recipes/tests/admin/test_actions.py diff --git a/recipes/admin/admin.py b/recipes/admin/admin.py index b5cff00..8e3d68c 100644 --- a/recipes/admin/admin.py +++ b/recipes/admin/admin.py @@ -1,8 +1,7 @@ from typing import Any + from django.contrib import admin -from django.forms import ModelChoiceField from django.http import HttpRequest -from django.db.models import ForeignKey from ..models import * from .actions import comment_accept, comment_reject diff --git a/recipes/tests/admin/__init__.py b/recipes/tests/admin/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/recipes/tests/admin/test_actions.py b/recipes/tests/admin/test_actions.py new file mode 100644 index 0000000..0182d69 --- /dev/null +++ b/recipes/tests/admin/test_actions.py @@ -0,0 +1,42 @@ +from django.contrib.admin.sites import AdminSite +from django.contrib.auth import get_user_model +from django.test import Client, TestCase +from unittest.mock import Mock + + +from recipes.admin.admin import CommentAdmin +from recipes.models import Comment + + +class CommentsAdminTest(TestCase): + fixtures = ["categories.json", "programs.json", "recipes.json", "comments.json"] + + def setUp(self): + self.client = Client() + self.site = AdminSite() + self.user = get_user_model().objects.create_user( + username="testuser", password="testpass", is_staff=True, is_superuser=True + ) + self.client.login(username="testuser", password="testpass") + self.model_admin = CommentAdmin(model=Comment, admin_site=self.site) + + def test_action_accept(self): + request = Mock(user=self.user, GET={}) + actions = self.model_admin.get_actions(request) + + expected_results = [ + ("comment_accept", Comment.STATE_ACCEPTED), + ("comment_reject", Comment.STATE_REJECTED), + ] + queryset = Comment.objects.all() + comments_count = queryset.count() + + for action_name, state in expected_results: + action_meta = actions.get(action_name) + self.assertIsNotNone(action_meta) + + action = action_meta[0] + + action(self.model_admin, request, queryset) + + self.assertEqual(queryset.filter(state=state).count(), comments_count)