@@ -586,16 +586,56 @@ def test_single_with_no_records(self):
586586 session = self .driver .session ()
587587 result = session .run ("CREATE ()" )
588588 with self .assertRaises (ResultError ):
589- _ = result .single ()
589+ result .single ()
590590
591591 def test_single_with_multiple_records (self ):
592592 session = self .driver .session ()
593593 result = session .run ("UNWIND range(1, 3) AS n RETURN n" )
594594 with self .assertRaises (ResultError ):
595- _ = result .single ()
595+ result .single ()
596596
597597 def test_single_consumes_entire_result (self ):
598598 session = self .driver .session ()
599599 result = session .run ("UNWIND range(1, 1) AS n RETURN n" )
600600 _ = result .single ()
601601 assert result ._consumed
602+
603+ def test_peek_can_look_one_ahead (self ):
604+ session = self .driver .session ()
605+ result = session .run ("UNWIND range(1, 3) AS n RETURN n" )
606+ record = result .peek ()
607+ assert list (record .values ()) == [1 ]
608+
609+ def test_peek_fails_if_nothing_remains (self ):
610+ session = self .driver .session ()
611+ result = session .run ("CREATE ()" )
612+ with self .assertRaises (ResultError ):
613+ result .peek ()
614+
615+ def test_peek_does_not_advance_cursor (self ):
616+ session = self .driver .session ()
617+ result = session .run ("UNWIND range(1, 3) AS n RETURN n" )
618+ result .peek ()
619+ assert [record [0 ] for record in result ] == [1 , 2 , 3 ]
620+
621+ def test_peek_at_different_stages (self ):
622+ session = self .driver .session ()
623+ result = session .run ("UNWIND range(0, 9) AS n RETURN n" )
624+ # Peek ahead to the first record
625+ expected_next = 0
626+ upcoming = result .peek ()
627+ assert upcoming [0 ] == expected_next
628+ # Then look through all the other records
629+ for expected , record in enumerate (result ):
630+ # Check this record is as expected
631+ assert record [0 ] == expected
632+ # Check the upcoming record is as expected...
633+ if expected < 9 :
634+ # ...when one should follow
635+ expected_next = expected + 1
636+ upcoming = result .peek ()
637+ assert upcoming [0 ] == expected_next
638+ else :
639+ # ...when none should follow
640+ with self .assertRaises (ResultError ):
641+ result .peek ()
0 commit comments