# What this PR does
We noticed that the backend was adding the stack name to the
notification title only on Android.
We thought it makes sense to add the stack name only if the user has
more than 1 stack connected, but that's not doable right now since the
backend doesn't know how many stacks are connected in the app.
Also we took a look at the analytics for the app and basically 95% of
the users have only 1 stack connected.
This pr removes the stack name from the notifications title.
If in the future we think it makes sense to add it conditionally based
on the number of stacks we can open another pr, but given the very
little amount of users with more than 1 stack I think this is not
needed.
## Checklist
- [x] Unit, integration, and e2e (if applicable) tests updated
- [x] Documentation added (or `pr:no public docs` PR label added if not
required)
- [x] Added the relevant release notes label (see labels prefixed w/
`release:`). These labels dictate how your PR will
show up in the autogenerated release notes.
96 lines
4.7 KiB
Python
96 lines
4.7 KiB
Python
import pytest
|
|
|
|
from apps.mobile_app.demo_push import _get_test_escalation_fcm_message, get_test_push_title
|
|
from apps.mobile_app.models import FCMDevice, MobileAppUserSettings
|
|
|
|
|
|
@pytest.mark.django_db
|
|
def test_test_escalation_fcm_message_user_settings(
|
|
make_organization_and_user, make_alert_receive_channel, make_alert_group, make_alert
|
|
):
|
|
organization, user = make_organization_and_user()
|
|
device = FCMDevice.objects.create(user=user, registration_id="test_device_id")
|
|
|
|
message = _get_test_escalation_fcm_message(user, device, critical=False)
|
|
|
|
# Check user settings are passed to FCM message
|
|
assert message.data["default_notification_sound_name"] == "default_sound.mp3"
|
|
assert message.data["default_notification_volume_type"] == "constant"
|
|
assert message.data["default_notification_volume_override"] == "false"
|
|
assert message.data["default_notification_volume"] == "0.8"
|
|
assert message.data["important_notification_sound_name"] == "default_sound_important.mp3"
|
|
assert message.data["important_notification_volume_type"] == "constant"
|
|
assert message.data["important_notification_volume"] == "0.8"
|
|
assert message.data["important_notification_volume_override"] == "true"
|
|
assert message.data["important_notification_override_dnd"] == "true"
|
|
|
|
# Check APNS notification sound is set correctly
|
|
apns_sound = message.apns.payload.aps.sound
|
|
assert apns_sound.critical is False
|
|
assert apns_sound.name == "default_sound.aiff"
|
|
assert apns_sound.volume is None # APNS doesn't allow to specify volume for non-critical notifications
|
|
|
|
# Check expected test push content
|
|
assert message.apns.payload.aps.badge is None
|
|
assert message.apns.payload.aps.alert.title == get_test_push_title(critical=False)
|
|
assert message.data["title"] == get_test_push_title(critical=False)
|
|
assert message.data["type"] == "oncall.message"
|
|
|
|
|
|
@pytest.mark.django_db
|
|
def test_escalation_fcm_message_user_settings_critical(
|
|
make_organization_and_user, make_alert_receive_channel, make_alert_group, make_alert
|
|
):
|
|
organization, user = make_organization_and_user()
|
|
device = FCMDevice.objects.create(user=user, registration_id="test_device_id")
|
|
|
|
message = _get_test_escalation_fcm_message(user, device, critical=True)
|
|
|
|
# Check user settings are passed to FCM message
|
|
assert message.data["default_notification_sound_name"] == "default_sound.mp3"
|
|
assert message.data["default_notification_volume_type"] == "constant"
|
|
assert message.data["default_notification_volume_override"] == "false"
|
|
assert message.data["default_notification_volume"] == "0.8"
|
|
assert message.data["important_notification_sound_name"] == "default_sound_important.mp3"
|
|
assert message.data["important_notification_volume_type"] == "constant"
|
|
assert message.data["important_notification_volume"] == "0.8"
|
|
assert message.data["important_notification_volume_override"] == "true"
|
|
assert message.data["important_notification_override_dnd"] == "true"
|
|
|
|
# Check APNS notification sound is set correctly
|
|
apns_sound = message.apns.payload.aps.sound
|
|
assert apns_sound.critical is True
|
|
assert apns_sound.name == "default_sound_important.aiff"
|
|
assert apns_sound.volume == 0.8
|
|
assert message.apns.payload.aps.custom_data["interruption-level"] == "critical"
|
|
|
|
# Check expected test push content
|
|
assert message.apns.payload.aps.badge is None
|
|
assert message.apns.payload.aps.alert.title == get_test_push_title(critical=True)
|
|
assert message.data["title"] == get_test_push_title(critical=True)
|
|
assert message.data["type"] == "oncall.critical_message"
|
|
|
|
|
|
@pytest.mark.django_db
|
|
def test_escalation_fcm_message_user_settings_critical_override_dnd_disabled(
|
|
make_organization_and_user, make_alert_receive_channel, make_alert_group, make_alert
|
|
):
|
|
organization, user = make_organization_and_user()
|
|
device = FCMDevice.objects.create(user=user, registration_id="test_device_id")
|
|
|
|
# Disable important notification override DND
|
|
MobileAppUserSettings.objects.create(user=user, important_notification_override_dnd=False)
|
|
message = _get_test_escalation_fcm_message(user, device, critical=True)
|
|
|
|
# Check user settings are passed to FCM message
|
|
assert message.data["important_notification_override_dnd"] == "false"
|
|
|
|
# Check APNS notification sound is set correctly
|
|
apns_sound = message.apns.payload.aps.sound
|
|
assert apns_sound.critical is False
|
|
assert message.apns.payload.aps.custom_data["interruption-level"] == "time-sensitive"
|
|
|
|
# Check expected test push content
|
|
assert message.apns.payload.aps.badge is None
|
|
assert message.apns.payload.aps.alert.title == get_test_push_title(critical=True)
|
|
assert message.data["title"] == get_test_push_title(critical=True)
|