1
0
forked from erp-dev/erp

feat: mission replied calling task

This commit is contained in:
2026-04-17 23:26:33 +08:00
parent e109c00837
commit 8b1afc64c5
22 changed files with 1056 additions and 95 deletions

View File

@@ -69,10 +69,42 @@ class MissionV2APITest(TestCase):
self.assertFalse(mission.is_urgent)
self.assertFalse(mission.is_completed)
self.assertFalse(mission.is_cancelled)
self.assertFalse(mission.notify_if_unreplied)
self.assertEqual(mission.unreplied_notify_max_count, 5)
self.assertEqual(resp.data["category"], self.default_category.id)
self.assertEqual(resp.data["category_name"], "通用")
self.assertEqual(list(mission.participants.values_list("employee_id", flat=True)), [self.participant.id])
def test_create_mission_supports_unreplied_notification_fields(self):
resp = self.client.post(
"/api/v2/missions/",
{
"description": "需要未回复提醒",
"notify_if_unreplied": True,
"unreplied_notify_interval_minutes": 30,
},
format="json",
)
self.assertEqual(resp.status_code, 201)
self.assertTrue(resp.data["notify_if_unreplied"])
self.assertEqual(resp.data["unreplied_notify_interval_minutes"], 30)
self.assertEqual(resp.data["unreplied_notify_max_count"], 5)
self.assertEqual(resp.data["unreplied_notify_sent_count"], 0)
def test_create_mission_rejects_missing_interval_when_unreplied_notification_enabled(self):
resp = self.client.post(
"/api/v2/missions/",
{
"description": "缺少提醒间隔",
"notify_if_unreplied": True,
},
format="json",
)
self.assertEqual(resp.status_code, 400)
self.assertIn("unreplied_notify_interval_minutes", resp.data)
def test_create_mission_rejects_status_fields(self):
resp = self.client.post(
"/api/v2/missions/",
@@ -146,6 +178,25 @@ class MissionV2APITest(TestCase):
self.assertEqual(resp.data["category_name"], "跟进")
self.assertEqual(list(mission.participants.values_list("employee_id", flat=True)), [self.participant.id])
def test_patch_mission_updates_unreplied_notification_fields(self):
mission = self._create_mission()
resp = self.client.patch(
f"/api/v2/missions/{mission.id}/",
{
"notify_if_unreplied": True,
"unreplied_notify_interval_minutes": 12,
"unreplied_notify_max_count": 7,
},
format="json",
)
self.assertEqual(resp.status_code, 200)
mission.refresh_from_db()
self.assertTrue(mission.notify_if_unreplied)
self.assertEqual(mission.unreplied_notify_interval_minutes, 12)
self.assertEqual(mission.unreplied_notify_max_count, 7)
def test_list_only_returns_current_merchant_missions(self):
visible = self._create_mission(description="可见任务")
mission_models.Mission.objects.create(