Example #1
0
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
Example #4
0
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)
Example #5
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])