def test_trigger_sleep_no_query_if_already_given(hallo_getter): hallo_obj, test_server, test_chan, test_user = hallo_getter({"dailys"}) # Setup moods = ["Happiness", "Anger", "Tiredness"] evt_sleep1 = EventMessage(test_server, test_chan, test_user, "night") saved_data = dict() saved_data[DailysMoodField.TIME_WAKE] = dict() saved_data[DailysMoodField.TIME_WAKE]["message_id"] = 1232 saved_data[str(time(14, 0, 0))] = dict() saved_data[str(time(14, 0, 0))]["message_id"] = 1234 for mood in moods: saved_data[DailysMoodField.TIME_WAKE][mood] = 3 saved_data[str(time(14, 0, 0))][mood] = 2 spreadsheet = DailysSpreadsheetMock( test_user, test_chan, saved_data={"mood": { evt_sleep1.get_send_time().date(): saved_data }}, ) # Setup field times = [ DailysMoodField.TIME_WAKE, time(14, 0, 0), DailysMoodField.TIME_SLEEP ] field = DailysMoodField(spreadsheet, times, moods) # Send message evt_sleep1 = EventMessage(test_server, test_chan, test_user, "night") field.passive_trigger(evt_sleep1) # Check mood query is sent notif_dict = spreadsheet.saved_data["mood"][ evt_sleep1.get_send_time().date()] assert DailysMoodField.TIME_SLEEP in notif_dict assert "message_id" in notif_dict[DailysMoodField.TIME_SLEEP] # Check query is given data_wake = test_server.get_send_data(1, test_chan, EventMessage) assert "how are you feeling" in data_wake[0].text.lower() assert DailysMoodField.TIME_SLEEP in data_wake[0].text assert all([mood in data_wake[0].text for mood in moods]) # Set message ID to something msg_id = "test_message_id" notif_dict[DailysMoodField.TIME_SLEEP]["message_id"] = msg_id spreadsheet.saved_data["mood"][ evt_sleep1.get_send_time().date()] = notif_dict # Send second sleep query evt_sleep2 = EventMessage(test_server, test_chan, test_user, "night") field.passive_trigger(evt_sleep2) # Check no mood query is sent notif_dict = spreadsheet.saved_data["mood"][ evt_sleep1.get_send_time().date()] assert notif_dict[DailysMoodField.TIME_SLEEP]["message_id"] == msg_id test_server.get_send_data(0)
def test_record_dream(hallo_getter): hallo, test_server, test_chan, test_user = hallo_getter({"dailys"}) # Setup spreadsheet = DailysSpreadsheetMock(test_user, test_chan) # Setup field field = DailysDreamField(spreadsheet) evt = EventMessage( test_server, test_chan, test_user, "dream about some thing", ) # Send a message event field.passive_trigger(evt) dream_dict = spreadsheet.saved_data[field.type_name][ evt.get_send_time().date()] assert "dreams" in dream_dict assert len(dream_dict["dreams"]) == 1 dream = dream_dict["dreams"][0] assert "text" in dream assert dream["text"] == "dream about some thing" # Check sent data assert len(test_server.send_data) == 1 assert isinstance(test_server.send_data[0], EventMessage) assert "Logged dream." in test_server.send_data[0].text assert "1st of the day" in test_server.send_data[0].text assert test_server.send_data[0].channel == test_chan assert test_server.send_data[0].user == test_user
def test_record_second_dream(hallo_getter): hallo, test_server, test_chan, test_user = hallo_getter({"dailys"}) evt = EventMessage( test_server, test_chan, test_user, "Dream about some second thing", ) previous_dream = {"text": "Dreamt the first time"} saved_data = { "dreams": { evt.get_send_time().date(): { "dreams": [previous_dream] } } } spreadsheet = DailysSpreadsheetMock(test_user, test_chan, saved_data=saved_data) # Setup field field = DailysDreamField(spreadsheet) # Send a message event field.passive_trigger(evt) # Check data is added dream_dict = spreadsheet.saved_data[field.type_name][ evt.get_send_time().date()] assert "dreams" in dream_dict assert len(dream_dict["dreams"]) == 2 dream1 = dream_dict["dreams"][0] assert "text" in dream1 assert dream1["text"] == "Dreamt the first time" dream2 = dream_dict["dreams"][1] assert "text" in dream2 assert dream2["text"] == "Dream about some second thing" # Check sent data assert len(test_server.send_data) == 1 assert isinstance(test_server.send_data[0], EventMessage) assert "Logged dream." in test_server.send_data[0].text assert "2nd of the day" in test_server.send_data[0].text assert test_server.send_data[0].channel == test_chan assert test_server.send_data[0].user == test_user
def test_trigger_sleep_no_query_if_not_in_times(hallo_getter): hallo_obj, test_server, test_chan, test_user = hallo_getter({"dailys"}) # Setup spreadsheet = DailysSpreadsheetMock(test_user, test_chan, saved_data={"mood": {}}) # Setup field times = [DailysMoodField.TIME_WAKE, time(14, 0, 0)] moods = ["Happiness", "Anger", "Tiredness"] field = DailysMoodField(spreadsheet, times, moods) # Send message evt_sleep = EventMessage(test_server, test_chan, test_user, "night") field.passive_trigger(evt_sleep) # Check mood query is not sent or added to saved data assert evt_sleep.get_send_time().date( ) not in spreadsheet.saved_data["mood"] test_server.get_send_data(0)
def test_trigger_morning_query(hallo_getter): hallo_obj, test_server, test_chan, test_user = hallo_getter({"dailys"}) # Setup spreadsheet = DailysSpreadsheetMock(test_user, test_chan) # Setup field times = [DailysMoodField.TIME_WAKE, time(14, 0, 0)] moods = ["Happiness", "Anger", "Tiredness"] field = DailysMoodField(spreadsheet, times, moods) # Send message evt_wake = EventMessage(test_server, test_chan, test_user, "morning") field.passive_trigger(evt_wake) # Check mood query is sent notif_dict = spreadsheet.saved_data["mood"][ evt_wake.get_send_time().date()] assert DailysMoodField.TIME_WAKE in notif_dict assert "message_id" in notif_dict[DailysMoodField.TIME_WAKE] # Check query is given data_wake = test_server.get_send_data(1, test_chan, EventMessage) assert "how are you feeling" in data_wake[0].text.lower() assert DailysMoodField.TIME_WAKE in data_wake[0].text assert all([mood in data_wake[0].text for mood in moods])