Files
GIA/core/tests/test_presence_engine.py

68 lines
2.1 KiB
Python

from __future__ import annotations
from django.test import TestCase
from core.models import ContactAvailabilitySettings, Person, PersonIdentifier, User
from core.presence.engine import (
AvailabilitySignal,
ensure_fading_state,
record_inferred_signal,
record_native_signal,
)
class PresenceEngineTests(TestCase):
def setUp(self):
self.user = User.objects.create_user(
"presence-user", "presence@example.com", "x"
)
self.person = Person.objects.create(user=self.user, name="Presence Person")
self.identifier = PersonIdentifier.objects.create(
user=self.user,
person=self.person,
service="signal",
identifier="+15550001111",
)
def test_record_native_signal_is_a_compatibility_noop(self):
signal = AvailabilitySignal(
user=self.user,
person=self.person,
person_identifier=self.identifier,
service="signal",
source_kind="read_receipt",
availability_state="available",
confidence=0.95,
ts=1234,
payload={"origin": "test"},
)
result = record_native_signal(signal)
self.assertIs(result, signal)
def test_record_inferred_signal_respects_settings(self):
ContactAvailabilitySettings.objects.update_or_create(
user=self.user,
defaults={"enabled": True, "inference_enabled": False},
)
signal = AvailabilitySignal(
user=self.user,
person=self.person,
person_identifier=self.identifier,
service="signal",
source_kind="typing_stop",
availability_state="fading",
ts=1234,
)
self.assertIsNone(record_inferred_signal(signal))
def test_ensure_fading_state_no_longer_persists_shadow_rows(self):
self.assertIsNone(
ensure_fading_state(
user=self.user,
person=self.person,
person_identifier=self.identifier,
service="signal",
at_ts=1234,
)
)