Skip to content

Commit e068364

Browse files
committed
improve test for slack admin
1 parent 6a3a3e4 commit e068364

File tree

2 files changed

+69
-0
lines changed

2 files changed

+69
-0
lines changed

backend/tests/apps/slack/admin/__init__.py

Whitespace-only changes.
Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
from unittest.mock import MagicMock
2+
3+
import pytest
4+
from django.contrib import messages
5+
from django.contrib.admin.sites import AdminSite
6+
7+
from apps.slack.admin.member import MemberAdmin
8+
from apps.slack.models.member import Member
9+
10+
11+
@pytest.fixture
12+
def admin_instance():
13+
return MemberAdmin(model=Member, admin_site=AdminSite())
14+
15+
16+
class TestMemberAdmin:
17+
def test_approve_suggested_users_success(self, admin_instance):
18+
request = MagicMock()
19+
mock_suggested_user = MagicMock()
20+
mock_member = MagicMock()
21+
22+
mock_member.suggested_users.all.return_value.count.return_value = 1
23+
mock_member.suggested_users.all.return_value.first.return_value = mock_suggested_user
24+
25+
admin_instance.message_user = MagicMock()
26+
queryset = [mock_member]
27+
28+
admin_instance.approve_suggested_users(request, queryset)
29+
30+
assert mock_member.user == mock_suggested_user
31+
mock_member.save.assert_called_once()
32+
admin_instance.message_user.assert_called_with(
33+
request, pytest.approx(f" assigned user for {mock_member}."), messages.SUCCESS
34+
)
35+
36+
def test_approve_suggested_users_multiple_error(self, admin_instance):
37+
request = MagicMock()
38+
mock_member = MagicMock()
39+
40+
mock_member.suggested_users.all.return_value.count.return_value = 2
41+
42+
admin_instance.message_user = MagicMock()
43+
queryset = [mock_member]
44+
45+
admin_instance.approve_suggested_users(request, queryset)
46+
47+
mock_member.save.assert_not_called()
48+
expected_message = (
49+
f"Error: Multiple suggested users found for {mock_member}. "
50+
f"Only one user can be assigned due to the one-to-one constraint."
51+
)
52+
53+
admin_instance.message_user.assert_called_with(request, expected_message, messages.ERROR)
54+
55+
def test_approve_suggested_users_none_warning(self, admin_instance):
56+
request = MagicMock()
57+
mock_member = MagicMock()
58+
59+
mock_member.suggested_users.all.return_value.count.return_value = 0
60+
61+
admin_instance.message_user = MagicMock()
62+
queryset = [mock_member]
63+
64+
admin_instance.approve_suggested_users(request, queryset)
65+
66+
mock_member.save.assert_not_called()
67+
admin_instance.message_user.assert_called_with(
68+
request, f"No suggested users found for {mock_member}.", messages.WARNING
69+
)

0 commit comments

Comments
 (0)