Implement executing tasks
This commit is contained in:
66
core/tests/test_backfill_contact_availability.py
Normal file
66
core/tests/test_backfill_contact_availability.py
Normal file
@@ -0,0 +1,66 @@
|
||||
from __future__ import annotations
|
||||
|
||||
from django.core.management import call_command
|
||||
from django.test import TestCase
|
||||
|
||||
from core.models import (
|
||||
ChatSession,
|
||||
ContactAvailabilityEvent,
|
||||
Person,
|
||||
PersonIdentifier,
|
||||
Message,
|
||||
User,
|
||||
)
|
||||
from core.presence.inference import now_ms
|
||||
|
||||
|
||||
class BackfillContactAvailabilityCommandTests(TestCase):
|
||||
def setUp(self):
|
||||
self.user = User.objects.create_user("backfill-user", "backfill@example.com", "x")
|
||||
self.person = Person.objects.create(user=self.user, name="Backfill Person")
|
||||
self.identifier = PersonIdentifier.objects.create(
|
||||
user=self.user,
|
||||
person=self.person,
|
||||
service="signal",
|
||||
identifier="+15551234567",
|
||||
)
|
||||
self.session = ChatSession.objects.create(user=self.user, identifier=self.identifier)
|
||||
|
||||
def test_backfill_creates_message_and_read_receipt_availability_events(self):
|
||||
base_ts = now_ms()
|
||||
Message.objects.create(
|
||||
user=self.user,
|
||||
session=self.session,
|
||||
ts=base_ts,
|
||||
text="hello",
|
||||
source_service="signal",
|
||||
source_chat_id="+15551234567",
|
||||
custom_author="OTHER",
|
||||
)
|
||||
Message.objects.create(
|
||||
user=self.user,
|
||||
session=self.session,
|
||||
ts=base_ts + 1000,
|
||||
text="hey",
|
||||
source_service="signal",
|
||||
source_chat_id="+15551234567",
|
||||
custom_author="USER",
|
||||
read_ts=base_ts + 2000,
|
||||
read_by_identifier="+15551234567",
|
||||
)
|
||||
|
||||
call_command(
|
||||
"backfill_contact_availability",
|
||||
"--days",
|
||||
"36500",
|
||||
"--limit",
|
||||
"100",
|
||||
)
|
||||
|
||||
events = list(
|
||||
ContactAvailabilityEvent.objects.filter(user=self.user).order_by("ts", "source_kind")
|
||||
)
|
||||
self.assertEqual(3, len(events))
|
||||
self.assertTrue(any(row.source_kind == "message_in" for row in events))
|
||||
self.assertTrue(any(row.source_kind == "message_out" for row in events))
|
||||
self.assertTrue(any(row.source_kind == "read_receipt" for row in events))
|
||||
Reference in New Issue
Block a user