import pytest from app.models.event import ServiceEvent from tests.conftest import sample_uuid @pytest.mark.parametrize( ("key", "value_from", "value_to", "expected"), [ ("restricted", True, False, ("Made this service live")), ("restricted", False, True, ("Put this service back into trial mode")), ("active", False, True, ("Unsuspended this service")), ("active", True, False, ("Deleted this service")), ("contact_link", "x", "y", ("Set the contact details for this service to ‘y’")), ( "inbound_api", "foo", "bar", ("Updated the callback for received text messages"), ), ( "message_limit", 1, 2, ("Increased this service’s daily message limit from 1 to 2"), ), ( "message_limit", 2, 1, ("Reduced this service’s daily message limit from 2 to 1"), ), ("name", "Old", "New", ("Renamed this service from ‘Old’ to ‘New’")), ( "permissions", ["a", "b", "c"], ["a", "b", "c", "d"], ("Added ‘d’ to this service’s permissions"), ), ( "permissions", ["a", "b", "c"], ["a", "b"], ("Removed ‘c’ from this service’s permissions"), ), ( "permissions", ["a", "b", "c"], ["c", "d", "e"], ("Removed ‘a’ and ‘b’ from this service’s permissions, added ‘d’ and ‘e’"), ), ( "prefix_sms", True, False, ("Set text messages to not start with the name of this service"), ), ( "prefix_sms", False, True, ("Set text messages to start with the name of this service"), ), ("research_mode", True, False, ("Took this service out of research mode")), ("research_mode", False, True, ("Put this service into research mode")), ( "service_callback_api", "foo", "bar", ("Updated the callback for delivery receipts"), ), ], ) def test_service_event( key, value_from, value_to, expected, ): event = ServiceEvent( { "created_at": "foo", "updated_at": "bar", "created_by_id": sample_uuid(), }, key, value_from, value_to, ) assert event.relevant is True assert str(event) == expected