def test_peek_when_empty():
    # TODO it should raise an exception when peeking an empty queue
    q = Queue()
    with pytest.raises(InvalidOperationError) as e:
        q.peek()
    assert str(e.value) == "Method not allowed on empty collection"
    pass
def test_enqueue_two():
    q = Queue()
    q.enqueue("apples")
    q.enqueue("bananas")
    actual = q.peek()
    expected = "apples"
    assert actual == expected
def test_peek():
    q = Queue()
    q.enqueue("apple")
    q.enqueue("banana")
    q.enqueue("cucumber")
    actual = q.peek()
    expected = "apple"
    assert actual == expected
def test_peek_post_dequeue():
    # TODO it should return a new first value if peek is called after a dequeue
    q = Queue()
    q.enqueue("apples")
    q.enqueue("bananas")
    q.enqueue("grapes")
    q.dequeue()
    actual = q.peek()
    expected = "bananas"
    assert actual == expected
def test_peek(queue_vals):
    q = Queue()
    assert q.peek() == 'this is an empty Stack'
    assert queue_vals.peek() == 8