@@ -29,22 +29,22 @@ import (
2929)
3030
3131var _ = Describe ("Bookmark" , func () {
32- getLastBookmark := func (driver Driver ) string {
32+ createNodeInTx := func (driver Driver ) string {
3333 session , err := driver .Session (AccessModeWrite )
3434 Expect (err ).To (BeNil ())
3535 defer session .Close ()
3636
3737 _ , err = session .WriteTransaction (func (tx * Transaction ) (interface {}, error ) {
38- result , err := tx .Run ("CREATE ()" , nil )
39- Expect (err ).To (BeNil ())
38+ result , err := tx .Run ("CREATE ()" , nil )
39+ Expect (err ).To (BeNil ())
4040
41- summary , err := result .Consume ()
42- Expect (err ).To (BeNil ())
41+ summary , err := result .Consume ()
42+ Expect (err ).To (BeNil ())
4343
44- Expect (summary .Counters ().NodesCreated ()).To (Equal (1 ))
44+ Expect (summary .Counters ().NodesCreated ()).To (Equal (1 ))
4545
46- return 0 , nil
47- })
46+ return 0 , nil
47+ })
4848 Expect (err ).To (BeNil ())
4949
5050 return session .LastBookmark ()
@@ -202,9 +202,9 @@ var _ = Describe("Bookmark", func() {
202202
203203 Context ("session constructed with one bookmark" , func () {
204204 var (
205- err error
206- driver Driver
207- session * Session
205+ err error
206+ driver Driver
207+ session * Session
208208 bookmark string
209209 )
210210
@@ -214,7 +214,7 @@ var _ = Describe("Bookmark", func() {
214214 Expect (err ).To (BeNil ())
215215 }
216216
217- bookmark = getLastBookmark (driver )
217+ bookmark = createNodeInTx (driver )
218218
219219 session , err = driver .Session (AccessModeWrite , bookmark )
220220 if err != nil {
@@ -239,13 +239,62 @@ var _ = Describe("Bookmark", func() {
239239
240240 Expect (session .LastBookmark ()).To (Equal (bookmark ))
241241 })
242+
243+ Specify ("given bookmark should be accessible after ROLLBACK" , func () {
244+ tx , err := session .BeginTransaction ()
245+ Expect (err ).To (BeNil ())
246+ defer tx .Close ()
247+
248+ _ , err = tx .Run ("CREATE ()" , nil )
249+ Expect (err ).To (BeNil ())
250+
251+ err = tx .Rollback ()
252+ Expect (err ).To (BeNil ())
253+
254+ Expect (session .LastBookmark ()).To (Equal (bookmark ))
255+ })
256+
257+ Specify ("given bookmark should be accessible when transaction fails" , func () {
258+ tx , err := session .BeginTransaction ()
259+ Expect (err ).To (BeNil ())
260+ defer tx .Close ()
261+
262+ _ , err = tx .Run ("RETURN" , nil )
263+ Expect (err ).To (BeNil ())
264+
265+ err = tx .Close ()
266+ Expect (err ).To (BeSyntaxError ())
267+
268+ Expect (session .LastBookmark ()).To (Equal (bookmark ))
269+ })
270+
271+ Specify ("given bookmark should be accessible after run" , func () {
272+ result , err := session .Run ("RETURN 1" , nil )
273+ Expect (err ).To (BeNil ())
274+
275+ _ , err = result .Consume ()
276+ Expect (err ).To (BeNil ())
277+
278+ Expect (session .LastBookmark ()).To (Equal (bookmark ))
279+ })
280+
281+ Specify ("given bookmark should be accessible after failed run" , func () {
282+ result , err := session .Run ("RETURN" , nil )
283+ Expect (err ).To (BeNil ())
284+
285+ _ , err = result .Consume ()
286+ Expect (err ).To (BeSyntaxError ())
287+
288+ Expect (session .LastBookmark ()).To (Equal (bookmark ))
289+ })
290+
242291 })
243292
244293 Context ("session constructed with two bookmarks" , func () {
245294 var (
246- err error
247- driver Driver
248- session * Session
295+ err error
296+ driver Driver
297+ session * Session
249298 bookmark1 string
250299 bookmark2 string
251300 )
@@ -256,8 +305,8 @@ var _ = Describe("Bookmark", func() {
256305 Expect (err ).To (BeNil ())
257306 }
258307
259- bookmark1 = getLastBookmark (driver )
260- bookmark2 = getLastBookmark (driver )
308+ bookmark1 = createNodeInTx (driver )
309+ bookmark2 = createNodeInTx (driver )
261310 Expect (bookmark1 ).NotTo (Equal (bookmark2 ))
262311
263312 session , err = driver .Session (AccessModeWrite , bookmark1 , bookmark2 )
@@ -307,9 +356,9 @@ var _ = Describe("Bookmark", func() {
307356
308357 Context ("session constructed with unreachable bookmark" , func () {
309358 var (
310- err error
311- driver Driver
312- session * Session
359+ err error
360+ driver Driver
361+ session * Session
313362 bookmark string
314363 )
315364
@@ -319,9 +368,9 @@ var _ = Describe("Bookmark", func() {
319368 Expect (err ).To (BeNil ())
320369 }
321370
322- bookmark = getLastBookmark (driver )
371+ bookmark = createNodeInTx (driver )
323372
324- session , err = driver .Session (AccessModeWrite , bookmark + "0" )
373+ session , err = driver .Session (AccessModeWrite , bookmark + "0" )
325374 if err != nil {
326375 Expect (err ).To (BeNil ())
327376 }
@@ -347,4 +396,3 @@ var _ = Describe("Bookmark", func() {
347396 })
348397
349398})
350-
0 commit comments