Esempio n. 1
0
def test_help_valid(clear):
    '''
    Testing valid scenario of using help()
    '''
    zid1 = zid(1)
    make_request(zid1, "I need halp")
    assert help(zid1) is None
Esempio n. 2
0
def test_end(clear):
    '''
    Testing usage of end()
    '''
    make_request(zid(), "I need halp")
    end()
    assert queue() == []
Esempio n. 3
0
def test_cancel_valid(clear):
    '''
    Testing a valid scenario of using cancel()
    '''
    zid1 = zid(1)
    make_request(zid1, "I need halp")
    cancel(zid1)
Esempio n. 4
0
def test_resolve_no_receiving(clear):
    '''
    Testing if a student does not have a request with a 'receiving' status
    '''
    zid1 = zid(1)
    make_request(zid1, "I need halp")
    with pytest.raises(KeyError):
        resolve(zid1)
Esempio n. 5
0
def test_revert_valid(clear):
    '''
    Testing a valid scenario of using revert()
    '''
    zid1 = zid(1)
    make_request(zid1, "I need halp")
    help(zid1)
    assert revert(zid1) is None
Esempio n. 6
0
def test_make_request_double(clear):
    '''
    Testing one student making multiple requests in make_request()
    '''
    zid1 = zid()
    make_request(zid, "I am in need of assistance")
    with pytest.raises(KeyError):
        make_request(zid, "I am need halp plej")
Esempio n. 7
0
def test_queue_valid(clear):
    '''
    Testing correct return types for queue()
    '''
    make_request(zid(), "I need halp")
    queue_list = queue()
    assert isinstance(queue_list, list)
    for item in queue_list:
        assert isinstance(item, dict)
Esempio n. 8
0
def test_help_no_waiting_request(clear):
    '''
    Testing for if a student does not have a request
        with a 'waiting' status
    '''
    zid1 = zid(1)
    make_request(zid1, "I need halp")
    help(zid1)
    with pytest.raises(KeyError):
        help(zid1)
Esempio n. 9
0
def test_revert_not_receiving(clear):
    '''
    Testing for if student does not have a receiving status request
    '''
    zid1 = zid(1)
    zid2 = zid(2)
    make_request(zid1, "I need halp")
    with pytest.raises(KeyError):
        revert(zid1)
    with pytest.raises(KeyError):
        revert(zid2)
Esempio n. 10
0
def test_cancel_no_request_one(clear):
    '''
    Testing for no request in queue from student with 'waiting' status
    '''
    zid1 = zid(1)
    zid2 = zid(2)
    make_request(zid1, "I need halp")
    help(zid1)
    with pytest.raises(KeyError):
        cancel(zid1)
    with pytest.raises(KeyError):
        cancel(zid2)
Esempio n. 11
0
def make_request():
    '''
    A route for helpr.make_request()

    Params: {"zid", "description"}

    Raises: BadRequest if helpr.make_request() raises a KeyError or ValueError.

    Returns: {}
    '''
    data = request.get_json()
    try:
        helpr.make_request(data['zid'], data['description'])
    except KeyError as err:
        raise BadRequest(err)
Esempio n. 12
0
def make_request():
    '''
    A route for helpr.make_request()

    Params: {"zid", "description"}

    Raises: BadRequest if helpr.make_request() raises a KeyError or ValueError.

    Returns: {}
    '''
    # Get input data
    input_data = request.get_json()
    try:
        helpr.make_request(input_data["zid"], input_data["description"])
        return dumps({})
    except (KeyError, ValueError):
        raise BadRequest
Esempio n. 13
0
def test_remaining_valid(clear):
    '''
    Testing valid input for remaining()
    '''
    zid1 = zid(1)
    zid2 = zid(2)
    zid3 = zid(3)
    make_request(zid1, "I need halp")
    ret = remaining(zid1)
    assert isinstance(ret, int) and ret == 0

    make_request(zid2, "No me first")
    ret = remaining(zid2)
    assert isinstance(ret, int) and ret == 1

    make_request(zid3, "No me first")
    ret = remaining(zid3)
    assert isinstance(ret, int) and ret == 2
Esempio n. 14
0
def test_make_requet_error():
    '''
    test for error in make request function
    '''
    student1 = "z5263516"
    description1 = ""
    student2 = "z5263517"
    description2 = "What's the difference between c and python"

    # test empty string
    with pytest.raises(ValueError):
        make_request(student1, description1)

    # Student 2 makes a request
    make_request(student2, description2)

    # request again to test request exist
    with pytest.raises(KeyError):
        make_request(student2, description2)

    # End the session
    end()
Esempio n. 15
0
def test_sanity():
    '''
    A simple sanity test of the system.
    '''
    # DO NOT CHANGE THIS TEST! If you feel you have to change this test then
    # your functions have not been implemented correctly.
    student1 = "z1234567"
    description1 = "I don't understand how 'global' works in python"
    student2 = "z7654321"
    description2 = "What's the difference between iterator and iterable?"

    # Queue is initially empty
    assert queue() == []

    # Student 1 makes a request
    make_request(student1, description1)
    assert queue() == [{
        "zid": student1,
        "description": description1,
        "status": "waiting"
    }]
    assert remaining(student1) == 0

    # Student 2 makes a request
    make_request(student2, description2)
    assert queue() == [{
        "zid": student1,
        "description": description1,
        "status": "waiting"
    }, {
        "zid": student2,
        "description": description2,
        "status": "waiting"
    }]
    assert remaining(student1) == 0
    assert remaining(student2) == 1

    # Student 1 gets help
    help(student1)
    assert queue() == [{
        "zid": student1,
        "description": description1,
        "status": "receiving"
    }, {
        "zid": student2,
        "description": description2,
        "status": "waiting"
    }]
    # Student 2 is now the only student "waiting" in the queue, so they have no
    # one remaining in front of them
    assert remaining(student2) == 0

    # Student 1 has their problem resolved
    resolve(student1)
    # Only student 2 is left in the queue
    assert queue() == [{
        "zid": student2,
        "description": description2,
        "status": "waiting"
    }]

    # Student is helped and their problem is resolved
    help(student2)
    resolve(student2)
    assert queue() == []

    # End the session
    end()
Esempio n. 16
0
def test_make_request_empty_description(clear):
    '''
    Testing empty description in make_request()
    '''
    with pytest.raises(ValueError):
        make_request(zid(), "")
Esempio n. 17
0
def test_make_request_valid_input(clear):
    '''
    Testing valid input for make_request()
    '''
    assert make_request(zid(), "Yes me need help") is None
Esempio n. 18
0
def test_reprioritise_valid(clear):
    '''
    Testing if reprioritisation works
    '''
    zid1 = zid(1)
    zid2 = zid(2)
    zid3 = zid(3)
    zid4 = zid(4)
    make_request(zid1, "first request")
    make_request(zid2, "second request")
    make_request(zid3, "third request")
    help(zid1)
    resolve(zid1)
    help(zid2)
    resolve(zid2)
    make_request(zid1, "fourth request")
    make_request(zid2, "fifth request")
    help(zid2)
    resolve(zid2)
    make_request(zid2, "seventh request")
    make_request(zid4, "sixth request")
    assert queue() == [{
        "zid": zid3,
        "description": "third request",
        "status": "waiting"
    }, {
        "zid": zid1,
        "description": "fourth request",
        "status": "waiting"
    }, {
        "zid": zid2,
        "description": "seventh request",
        "status": "waiting"
    }, {
        "zid": zid4,
        "description": "sixth request",
        "status": "waiting"
    }]

    reprioritise()

    assert queue() == [{
        "zid": zid3,
        "description": "third request",
        "status": "waiting"
    }, {
        "zid": zid4,
        "description": "sixth request",
        "status": "waiting"
    }, {
        "zid": zid1,
        "description": "fourth request",
        "status": "waiting"
    }, {
        "zid": zid2,
        "description": "seventh request",
        "status": "waiting"
    }]
Esempio n. 19
0
def test_remaining_error():
    """
    test for all the rests errors
    """
    student1 = "z1234567"
    description1 = "I don't understand how 'global' works in python"
    student2 = "z7654321"
    description2 = "What's the difference between iterator and iterable?"

    make_request(student1, description1)
    make_request(student2, description2)

    assert queue() == [{
        "zid": student1,
        "description": description1,
        "status": "waiting"
    }, {
        "zid": student2,
        "description": description2,
        "status": "waiting"
    }]

    # student 2 cancle request
    cancel(student2)
    assert queue() == [{
        "zid": student1,
        "description": description1,
        "status": "waiting"
    }]

    # student 2 make request again
    make_request(student2, description2)
    assert queue() == [{
        "zid": student1,
        "description": description1,
        "status": "waiting"
    }, {
        "zid": student2,
        "description": description2,
        "status": "waiting"
    }]

    assert remaining(student1) == 0

    # help student1, status change from waiting to recieving
    help(student1)
    assert queue() == [{
        "zid": student1,
        "description": description1,
        "status": "receiving"
    }, {
        "zid": student2,
        "description": description2,
        "status": "waiting"
    }]

    # student1 is receiving not waiting
    with pytest.raises(KeyError):
        remaining(student1)

    # student1 is receiving, can't help
    with pytest.raises(KeyError):
        help(student1)
    # student1 is receiving, can't cancel
    with pytest.raises(KeyError):
        cancel(student1)
    # tutor too busy, revert student 1
    revert(student1)
    assert queue() == [{
        "zid": student1,
        "description": description1,
        "status": "waiting"
    }, {
        "zid": student2,
        "description": description2,
        "status": "waiting"
    }]

    # tutor can't revert student 1 again
    with pytest.raises(KeyError):
        revert(student1)

    # student2 is waiting, can't resolve
    with pytest.raises(KeyError):
        resolve(student2)