Implement workspace history reconciliation

This commit is contained in:
2026-03-03 17:35:45 +00:00
parent 2898d9e832
commit 18351abb00
14 changed files with 556 additions and 57 deletions

View File

@@ -3,60 +3,65 @@ from __future__ import annotations
from django.test import TestCase
from django.urls import reverse
from core.models import ChatTaskSource, TaskEpic, TaskProject, User
from core.models import ChatTaskSource, Person, PersonIdentifier, TaskEpic, TaskProject, User
class TasksPagesManagementTests(TestCase):
def setUp(self):
self.user = User.objects.create_user("tasks-pages-user", "tasks-pages@example.com", "x")
self.user = User.objects.create_user(
"tasks-pages-user", "tasks-pages@example.com", "x"
)
self.client.force_login(self.user)
self.person = Person.objects.create(user=self.user, name="Scope Person")
self.pid_whatsapp = PersonIdentifier.objects.create(
user=self.user,
person=self.person,
service="whatsapp",
identifier="120363402761690215@g.us",
)
self.pid_signal = PersonIdentifier.objects.create(
user=self.user,
person=self.person,
service="signal",
identifier="+15551230000",
)
def test_tasks_hub_requires_group_scope_for_project_create(self):
create_response = self.client.post(
def test_tasks_hub_can_create_project_name_only(self):
response = self.client.post(
reverse("tasks_hub"),
{
"action": "project_create",
"name": "Ops",
},
{"action": "project_create", "name": "Ops"},
follow=True,
)
self.assertEqual(200, create_response.status_code)
self.assertFalse(TaskProject.objects.filter(user=self.user, name="Ops").exists())
def test_tasks_hub_can_create_scoped_project_and_delete(self):
create_response = self.client.post(
reverse("tasks_hub"),
{
"action": "project_create",
"name": "Ops",
"service": "whatsapp",
"channel_identifier": "120363402761690215@g.us",
},
follow=True,
)
self.assertEqual(200, create_response.status_code)
self.assertEqual(200, response.status_code)
project = TaskProject.objects.get(user=self.user, name="Ops")
self.assertIsNotNone(project)
self.assertFalse(ChatTaskSource.objects.filter(user=self.user, project=project).exists())
def test_tasks_hub_can_map_identifier_to_selected_project(self):
project = TaskProject.objects.create(user=self.user, name="Mapped")
response = self.client.post(
reverse("tasks_hub"),
{
"action": "project_map_identifier",
"project_id": str(project.id),
"person_identifier_id": str(self.pid_signal.id),
"person": str(self.person.id),
"service": "whatsapp",
"identifier": "120363402761690215@g.us",
},
follow=True,
)
self.assertEqual(200, response.status_code)
self.assertTrue(
ChatTaskSource.objects.filter(
user=self.user,
service="whatsapp",
channel_identifier="120363402761690215@g.us",
project=project,
service="signal",
channel_identifier="+15551230000",
enabled=True,
).exists()
)
delete_response = self.client.post(
reverse("tasks_hub"),
{
"action": "project_delete",
"project_id": str(project.id),
},
follow=True,
)
self.assertEqual(200, delete_response.status_code)
self.assertFalse(TaskProject.objects.filter(user=self.user, name="Ops").exists())
def test_project_page_can_create_and_delete_epic(self):
project = TaskProject.objects.create(user=self.user, name="Roadmap")
create_response = self.client.post(