Beispiel #1
0
def test_random_font(uqcsbot: MockUQCSBot):
    uqcsbot.post_message(TEST_CHANNEL_ID, f"!asciify --randomfont {TEST_TEXT}")
    messages = uqcsbot.test_messages.get(TEST_CHANNEL_ID, [])
    fontslist = mocked_get_fontslist()
    assert len(messages) == 2
    assert messages[1].get('text').split()[0] == "CUSTOM_FONT"
    assert messages[1].get('text').split()[1] in fontslist
def test_location(uqcsbot: MockUQCSBot):
    """
    Test !weather for an multi word interstate location
    """
    uqcsbot.post_message(TEST_CHANNEL_ID, '!weather NSW Coffs Harbour')
    messages = uqcsbot.test_messages.get(TEST_CHANNEL_ID, [])
    assert messages[-1]['text'].split("\n")[0] == "*Today's Weather Forecast For Coffs Harbour*"
Beispiel #3
0
def test_UQCS_events_full(uqcsbot: MockUQCSBot):
    """
    This test simulates the user invoking `!events full` when there are uqcs events.
    """
    uqcsbot.post_message(TEST_CHANNEL_ID, "!events full")
    messages = uqcsbot.test_messages.get(TEST_CHANNEL_ID, [])
    assert len(messages) == 2
    expected = (
        "List of *all* upcoming events\r\n"
        "*FRI AUG 2 0:00 - MON AUG 5 23:59* - `CodeNetwork Hackathon` - _River City Labs_\r\n"
        "*FRI AUG 2 18:00 - 20:00* - `Dr Corey Shou` - _TBC_\r\n"
        "*TUE AUG 6 18:00 - 20:00* - `vim & tmux - Neil Ashford`"
        + " - _Hawken 50-T103_\r\n"
        "*TUE AUG 13 18:00 - 20:00* - `Robogals x UQ Robotics x UQCS Social Event`"
        + " - _Hawken 50-C207_\r\n"
        "*TUE AUG 20 18:00 - 20:00* - `How to Hackathon` - _Hawken 50-T103_\r\n"
        "*THU AUG 22 18:00 - 20:00* - `C++ Talk - Dr Joel Fenwick`"
        + " - _Hawken 50-T103_\r\n"
        "*FRI AUG 23 18:00 - SUN AUG 25 20:00* - `UQCS Hackathon` - _AEB 49-301_\r\n"
        "*THU AUG 29 18:00 - 20:00* - `Six Key Things - Peter Laurie` - _Hawken 50-T103_\r\n"
        "*THU SEP 5 18:00 - 20:00* - `3D printing: The Future for DIY - Stephanie Piper`"
        + " - _Hawken 50-T103_\r\n"
        "*THU SEP 19 18:00 - 20:00* - `Intro to Firebase - Max Bo` - _Hawken 50-T103_\r\n"
        "*TUE OCT 8 18:00 - 20:00* - `UQCS AGM` - _TBC_\r\n"
        "*THU OCT 17 17:00 - 21:00* - `Games Night` - _TBC_\r\n"
        "*TUE OCT 29 0:00 - WED OCT 30 23:59* - `Study Session` - _ITLC:"
        + " GP South 78-217_\r\n"
        "*THU OCT 31 0:00 - FRI NOV 1 23:59* - `Study Session` - _ITLC: GP South 78-217_"
    )
    assert messages[1].get('text') == expected
def test_tomorrow(uqcsbot: MockUQCSBot):
    """
    Test !weather for tomorrow's Esk weather
    """
    uqcsbot.post_message(TEST_CHANNEL_ID, '!weather Esk 1')
    messages = uqcsbot.test_messages.get(TEST_CHANNEL_ID, [])
    assert messages[-1]['text'].split("\n")[0] == "*Tomorrow's Weather Forecast For Esk*"
def test_parking_all(uqcsbot: MockUQCSBot):
    """
    Tests !parking all
    """
    uqcsbot.post_message(TEST_CHANNEL_ID, '!parking all')
    messages = uqcsbot.test_messages.get(TEST_CHANNEL_ID, [])
    assert len(messages) == 2
    assert (
        messages[-1]['text'] == "*Available Parks at UQ St. Lucia*\n"
        "32 Carparks Available in P1 - Warehouse (14P Daily)\n"
        "Few Carparks Available in P2 - Space Bank (14P Daily)\n"
        "193 Carparks Available in P3 - Multi-Level West (Staff)\n"
        "Few Carparks Available in P4 - Multi-Level East (Staff)\n"
        "6 Carparks Available in P6 - Hartley Teakle (14P Hourly)\n"
        "No Carparks Available in P7 - DustBowl (14P Daily)\n"
        "39 Carparks Available in P7 - Keith Street (14P Daily Capped)\n"
        "58 Carparks Available in P8 - Athletics Basement (14P Daily)\n"
        "29 Carparks Available in P8 - Athletics Roof (14P Daily)\n"
        "21 Carparks Available in P9 - Boatshed (14P Daily)\n"
        "167 Carparks Available in P10 - UQ Centre" +
        " & Playing Fields (14P Daily/14P Daily Capped)\n"
        "23 Carparks Available in P11 - Conifer Knoll Lower (Staff)\n"
        "Few Carparks Available in P11 - Conifer Knoll Upper (Staff)\n"
        "Few Carparks Available in P11 - Conifer Knoll Roof (14P Daily Restricted)"
    )
Beispiel #6
0
def test_crisis_keyword(uqcsbot: MockUQCSBot):
    """
    Ensure !crisis returns the intended resource
    """
    uqcsbot.post_message(TEST_CHANNEL_ID, '!crisis')
    messages = uqcsbot.test_messages.get(TEST_CHANNEL_ID, [])
    assert len(messages) == 2
    assert "campus security" in messages[-1]['text'].lower()
Beispiel #7
0
def test_emergency_keyword(uqcsbot: MockUQCSBot):
    """
    Ensure !emergency also does the needful
    """
    uqcsbot.post_message(TEST_CHANNEL_ID, '!emergency')
    messages = uqcsbot.test_messages.get(TEST_CHANNEL_ID, [])
    assert len(messages) == 2
    assert "campus security" in messages[-1]['text'].lower()
Beispiel #8
0
def test_binify_no_argument(uqcsbot: MockUQCSBot):
    """
    Test !binify for missing argument
    """
    uqcsbot.post_message(TEST_CHANNEL_ID, "!binify")
    messages = uqcsbot.test_messages.get(TEST_CHANNEL_ID, [])
    assert len(messages) == 2
    assert messages[-1]['text'] == "Please include string to convert."
Beispiel #9
0
def test_binify_incomplete(uqcsbot: MockUQCSBot):
    """
    Test !binify for patial byte
    """
    uqcsbot.post_message(TEST_CHANNEL_ID, "!binify 01010")
    messages = uqcsbot.test_messages.get(TEST_CHANNEL_ID, [])
    assert len(messages) == 2
    assert messages[-1]['text'] == "Binary string contains partial byte."
Beispiel #10
0
def test_water_list(uqcsbot: MockUQCSBot):
    """
    Test !water <LIST> returns a listing
    """
    uqcsbot.post_message(TEST_CHANNEL_ID, '!water list')
    messages = uqcsbot.test_messages.get(TEST_CHANNEL_ID, [])
    assert len(messages) == 2
    assert re.compile(r"Available regions:(.*)").match(messages[-1]['text'])
Beispiel #11
0
def test_no_course(uqcsbot: MockUQCSBot):
    """
    Test uqfinal when there is no course specified
    """
    uqcsbot.post_message(TEST_CHANNEL_ID, "!uqfinal")
    messages = uqcsbot.test_messages.get(TEST_CHANNEL_ID, [])
    assert len(messages) == 2
    assert messages[1]["text"] == "Please choose a course"
def test_count(uqcsbot: MockUQCSBot):
    """
    Test !pokemash with too many numbers.
    """
    uqcsbot.post_message(TEST_CHANNEL_ID, '!pokemash 1 4 7')
    messages = uqcsbot.test_messages.get(TEST_CHANNEL_ID, [])
    assert len(messages) == 2
    assert messages[-1]['text'] == ("Incorrect Number of Pokemon")
Beispiel #13
0
def test_smart_user(uqcsbot: MockUQCSBot):
    """
    This test covers the case where there exists a smart user.
    """
    uqcsbot.post_message(TEST_CHANNEL_ID, "!umart SOMETHING NOT AS SPECIFIC")
    messages = uqcsbot.test_messages.get(TEST_CHANNEL_ID, [])
    assert len(messages) == 2
    assert messages[1].get('text') == "Not literally..."
Beispiel #14
0
def test_uptime(uqcsbot: MockUQCSBot):
    """
    test !uptime for response
    """
    uqcsbot.post_message(TEST_CHANNEL_ID, '!uptime')
    messages = uqcsbot.test_messages.get(TEST_CHANNEL_ID, [])
    assert len(messages) == 2
    assert messages[-1]["text"].startswith("The bot has been online for")
Beispiel #15
0
def test_crates_exact(uqcsbot: MockUQCSBot):
    """
    Tests !crates with an exact crate search
    """
    uqcsbot.post_message(TEST_CHANNEL_ID, '!crates regex')
    messages = uqcsbot.test_messages.get(TEST_CHANNEL_ID, [])

    assert len(messages) == 2
def test_voteythumbs(uqcsbot: MockUQCSBot):
    """
    Tests !voteythumbs
    """
    uqcsbot.post_message(TEST_CHANNEL_ID, '!voteythumbs ye/na/maybz?')
    messages = uqcsbot.test_messages.get(TEST_CHANNEL_ID, [])
    # Make sure there are three reactions (thumbsup, thumbsdown, thumbsright)
    assert len(messages[-1]['reactions']) == 3
def test_negative(uqcsbot: MockUQCSBot):
    """
    Test !pokemash negative number.
    """
    uqcsbot.post_message(TEST_CHANNEL_ID, '!pokemash 25 -25')
    messages = uqcsbot.test_messages.get(TEST_CHANNEL_ID, [])
    assert len(messages) == 2
    assert messages[-1]['text'] == ("Out of Range: -25")
def test_misname(uqcsbot: MockUQCSBot):
    """
    Test !pokemash with bad name.
    """
    uqcsbot.post_message(TEST_CHANNEL_ID, '!pokemash mew lucario')
    messages = uqcsbot.test_messages.get(TEST_CHANNEL_ID, [])
    assert len(messages) == 2
    assert messages[-1]['text'] == ("Could Not Find Pokemon: lucario")
Beispiel #19
0
def test_echo(uqcsbot: MockUQCSBot):
    """
    Test !echo
    """
    uqcsbot.post_message(TEST_CHANNEL_ID, '!echo Hello, World!')
    messages = uqcsbot.test_messages.get(TEST_CHANNEL_ID, [])
    assert len(messages) == 2
    assert messages[-1]['text'] == 'Hello, World!'
Beispiel #20
0
def test_http_unavailable(uqcsbot: MockUQCSBot):
    """
    Test !http with an unavailable HTTP code.
    """
    uqcsbot.post_message(TEST_CHANNEL_ID, '!http 0')
    messages = uqcsbot.test_messages.get(TEST_CHANNEL_ID, [])
    assert len(messages) == 2
    assert messages[-1]['text'] == 'HTTP cat 0 is not available'
Beispiel #21
0
def test_umart_no_query(uqcsbot: MockUQCSBot):
    """
    This test aims to determine the stability of the script when it receives no query.
    """
    uqcsbot.post_message(TEST_CHANNEL_ID, "!umart")
    messages = uqcsbot.test_messages.get(TEST_CHANNEL_ID, [])
    assert len(messages) == 2
    assert messages[1].get('text') == NO_QUERY_MESSAGE
Beispiel #22
0
def test_id(uqcsbot: MockUQCSBot):
    '''
    Test !id
    '''
    uqcsbot.post_message(TEST_CHANNEL_ID, '!id')
    messages = uqcsbot.test_messages.get(TEST_CHANNEL_ID, [])
    assert len(messages) == 2
    assert messages[-1]['text'] == f'`{TEST_BOT_ID}`'
Beispiel #23
0
def test_id(uqcsbot: MockUQCSBot):
    """
    Test !id
    """
    uqcsbot.post_message(TEST_CHANNEL_ID, '!id')
    messages = uqcsbot.test_messages.get(TEST_CHANNEL_ID, [])
    assert len(messages) == 2
    assert messages[-1]['text'] == f'You are Number `{TEST_BOT_ID}`'
Beispiel #24
0
def test_emojify_z(uqcsbot: MockUQCSBot):
    '''
    Ensure !emojify returns the correct emoji
    '''
    uqcsbot.post_message(TEST_CHANNEL_ID, '!emojify zzz')
    messages = uqcsbot.test_messages.get(TEST_CHANNEL_ID, [])
    assert len(messages) == 2
    assert messages[-1]["text"] == ":tetris_z::tetris_z::tetris_z:"
Beispiel #25
0
def test_http(uqcsbot: MockUQCSBot):
    """
    Test !http.
    """
    uqcsbot.post_message(TEST_CHANNEL_ID, '!http 200')
    messages = uqcsbot.test_messages.get(TEST_CHANNEL_ID, [])
    assert len(messages) == 2
    assert messages[-1]['text'] == 'https://http.cat/200'
Beispiel #26
0
def test_bad_count(uqcsbot: MockUQCSBot):
    uqcsbot.post_message(TEST_CHANNEL_ID, "!uqfinal CSSE2002 2 4 6 8 10")
    # Five! Five Pieces of Assessment! Ha! Ha! Ha!
    messages = uqcsbot.test_messages.get(TEST_CHANNEL_ID, [])
    assert len(messages) == 2
    assert (messages[-1]["text"] ==
            "Too many retults provided.\n"
            "This course has 4 assessments.")
Beispiel #27
0
def test_binify_from_ascii(uqcsbot: MockUQCSBot):
    """
    Test !binify for an ascii string input
    """
    uqcsbot.post_message(TEST_CHANNEL_ID, "!binify " + ASCII_STRING)
    messages = uqcsbot.test_messages.get(TEST_CHANNEL_ID, [])
    assert len(messages) == 2
    assert messages[-1]['text'] == BINARY_STRING
Beispiel #28
0
def test_binify_out_of_range(uqcsbot: MockUQCSBot):
    """
    Test !binify for a character code 128+
    """
    uqcsbot.post_message(TEST_CHANNEL_ID, "!binify 11110000")
    messages = uqcsbot.test_messages.get(TEST_CHANNEL_ID, [])
    assert len(messages) == 2
    assert messages[-1]['text'] == "Character out of ascii range (0-127)"
Beispiel #29
0
def test_emojify_count(uqcsbot: MockUQCSBot):
    '''
    Ensure !emojify returns the correct number of emoji
    '''
    uqcsbot.post_message(TEST_CHANNEL_ID, '!emojify abc 123')
    messages = uqcsbot.test_messages.get(TEST_CHANNEL_ID, [])
    assert len(messages) == 2
    assert messages[-1]["text"].count(':') == 14
Beispiel #30
0
def test_specific_difficulty(uqcsbot: MockUQCSBot):
    uqcsbot.post_message(TEST_CHANNEL_ID, '!leet easy')
    messages = uqcsbot.test_messages.get(TEST_CHANNEL_ID, [])

    assert (messages[1]['text'] == "Easy question generated!")
    assert (messages[1]['attachments'][0]['blocks'][0]['text']['text'] ==
            "Here's a new question " +
            "for you! <https://www.google.com|Test Question>")