Skip to content

Commit

Permalink
Update tests
Browse files Browse the repository at this point in the history
  • Loading branch information
SmittieC committed Oct 2, 2024
1 parent a9213c1 commit b182219
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 8 deletions.
13 changes: 13 additions & 0 deletions apps/channels/tests/test_web_channel.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

from apps.channels.models import ChannelPlatform
from apps.chat.channels import WebChannel
from apps.chat.models import Chat


@pytest.mark.django_db()
Expand Down Expand Up @@ -51,3 +52,15 @@ def test_start_new_session_uses_default_version(self, check_and_process_seed_mes
_session_used, experiment_used = check_and_process_seed_message.call_args[0]
assert experiment_used == new_version
assert session.experiment == experiment
assert session.chat.metadata.get(Chat.MetadataKeys.EXPERIMENT_VERSION) == "default"

@patch("apps.events.tasks.enqueue_static_triggers", Mock())
@patch("apps.chat.channels.WebChannel.check_and_process_seed_message")
def test_start_new_session_uses_specified_version(self, check_and_process_seed_message, experiment):
new_version = experiment.create_new_version()
session = WebChannel.start_new_session(experiment, "jack@titanic.com", version=1)

_session_used, experiment_used = check_and_process_seed_message.call_args[0]
assert experiment_used == new_version
assert session.experiment == experiment
assert session.chat.metadata.get(Chat.MetadataKeys.EXPERIMENT_VERSION) == 1
21 changes: 13 additions & 8 deletions apps/experiments/tests/test_models.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
from django.utils import timezone
from freezegun import freeze_time

from apps.chat.models import Chat
from apps.events.actions import ScheduleTriggerAction
from apps.events.models import EventActionType, ScheduledMessage, TimePeriod
from apps.experiments.models import Experiment, ExperimentRoute, ParticipantData, SafetyLayer, SyntheticVoice
Expand Down Expand Up @@ -98,6 +99,7 @@ def test_get_for_team_do_not_include_other_team_exclusive_voices(self):
assert voice1 not in voices_queryset


@pytest.mark.django_db()
class TestExperimentSession:
def _construct_event_action(self, time_period: TimePeriod, experiment_id: int, frequency=1, repetitions=1) -> tuple:
params = self._get_params(experiment_id, time_period, frequency, repetitions)
Expand All @@ -113,7 +115,6 @@ def _get_params(self, experiment_id: int, time_period: TimePeriod = TimePeriod.D
"experiment_id": experiment_id,
}

@pytest.mark.django_db()
@freeze_time("2024-01-01")
def test_get_participant_scheduled_messages_custom_params(self):
session = ExperimentSessionFactory()
Expand Down Expand Up @@ -168,7 +169,6 @@ def _make_expected_dict(external_id):
]
assert participant.get_schedules_for_experiment(experiment, as_dict=True) == expected_dict_version

@pytest.mark.django_db()
@pytest.mark.parametrize(
("repetitions", "total_triggers", "expected_triggers_remaining"),
[
Expand Down Expand Up @@ -202,7 +202,6 @@ def test_get_schedules_for_experiment_as_dict(self, repetitions, total_triggers,
assert schedule["total_triggers"] == total_triggers
assert schedule["triggers_remaining"] == expected_triggers_remaining

@pytest.mark.django_db()
@freeze_time("2024-01-01")
@pytest.mark.parametrize(
("time_period", "repetitions", "total_triggers", "expected"),
Expand Down Expand Up @@ -281,7 +280,6 @@ def test_get_schedules_for_experiment_as_string(self, time_period, repetitions,
next_trigger = "Next trigger is at Monday, 01 January 2024 00:00:00 UTC."
assert schedule == expected.format(message=message, next_trigger=next_trigger)

@pytest.mark.django_db()
def test_get_participant_scheduled_messages_includes_child_experiments(self):
session = ExperimentSessionFactory()
team = session.team
Expand All @@ -297,7 +295,6 @@ def test_get_participant_scheduled_messages_includes_child_experiments(self):
assert len(participant.get_schedules_for_experiment(session2.experiment)) == 1
assert len(participant.get_schedules_for_experiment(session.experiment)) == 2

@pytest.mark.django_db()
@pytest.mark.parametrize("use_custom_experiment", [False, True])
def test_scheduled_message_experiment(self, use_custom_experiment):
"""ScheduledMessages should use the experiment specified in the linked action's params"""
Expand Down Expand Up @@ -343,7 +340,6 @@ def test_should_mark_complete(self, repetitions, total_triggers, end_date, expec
)
assert scheduled_message._should_mark_complete() == expected

@pytest.mark.django_db()
def test_get_participant_data_name(self):
participant = ParticipantFactory()
session = ExperimentSessionFactory(participant=participant, team=participant.team)
Expand All @@ -369,7 +365,6 @@ def test_get_participant_data_name(self):
"first_name": "Jimmy",
}

@pytest.mark.django_db()
@freeze_time("2022-01-01 08:00:00")
@pytest.mark.parametrize("use_participant_tz", [False, True])
def test_get_participant_data_timezone(self, use_participant_tz):
Expand Down Expand Up @@ -400,7 +395,6 @@ def test_get_participant_data_timezone(self, use_participant_tz):
participant_data.pop("scheduled_messages")
assert participant_data == expected_data

@pytest.mark.django_db()
@pytest.mark.parametrize("fail_silently", [True, False])
@patch("apps.chat.channels.ChannelBase.from_experiment_session")
@patch("apps.chat.bots.TopicBot.process_input")
Expand All @@ -425,6 +419,17 @@ def _test():
else:
_test()

@pytest.mark.parametrize(
("chat_metadata_version", "expected_display_val"),
[
("default", "Default version"),
("1", "v1"),
],
)
def test_experiment_version_for_display(self, chat_metadata_version, expected_display_val, experiment_session):
experiment_session.chat.set_metadata(Chat.MetadataKeys.EXPERIMENT_VERSION, chat_metadata_version)
assert experiment_session.experiment_version_for_display == expected_display_val


class TestParticipant:
@pytest.mark.django_db()
Expand Down

0 comments on commit b182219

Please sign in to comment.