From 5f9d34b8f69545093280d8e015a5901df3b0629b Mon Sep 17 00:00:00 2001 From: Antonio Barcelos Date: Mon, 31 Jan 2022 12:40:27 +0100 Subject: [PATCH] Fix `driver.rxSession` initial bookmarks configuration and `RxSession.lastBookmark` return mapping The initial bookmark configuration for the RxSession were not working since the wrong parameter were being passed to the Session. The typescript mapping for `RxSession.lastBookmark` was also wrong, `lastBookmark` always returns an string array. --- packages/neo4j-driver/src/driver.js | 2 +- packages/neo4j-driver/test/driver.test.js | 28 ++++++++++++++++++- .../neo4j-driver/test/types/driver.test.ts | 9 ++++++ .../test/types/session-rx.test.ts | 2 +- packages/neo4j-driver/types/session-rx.d.ts | 2 +- 5 files changed, 39 insertions(+), 4 deletions(-) diff --git a/packages/neo4j-driver/src/driver.js b/packages/neo4j-driver/src/driver.js index cb20bb3dd..f1c8d6889 100644 --- a/packages/neo4j-driver/src/driver.js +++ b/packages/neo4j-driver/src/driver.js @@ -67,7 +67,7 @@ class Driver extends CoreDriver { return new RxSession({ session: this._newSession({ defaultAccessMode, - bookmarks, + bookmarkOrBookmarks: bookmarks, database, impersonatedUser, reactive: true, diff --git a/packages/neo4j-driver/test/driver.test.js b/packages/neo4j-driver/test/driver.test.js index d2f45b626..bb71951c6 100644 --- a/packages/neo4j-driver/test/driver.test.js +++ b/packages/neo4j-driver/test/driver.test.js @@ -26,7 +26,9 @@ import { } from '../../bolt-connection/lib/pool/pool-config' import { ServerVersion, VERSION_4_0_0 } from '../src/internal/server-version' import testUtils from './internal/test-utils' -import { json } from 'neo4j-driver-core' +import { json, internal } from 'neo4j-driver-core' + +const { bookmark } = internal // As long as driver creation doesn't touch the network it's fine to run // this as a unit test. @@ -114,6 +116,30 @@ describe('#unit driver', () => { }) ).toThrow() }) + + describe('.rxSession()', () => { + ;[ + [undefined, bookmark.Bookmark.empty()], + [null, bookmark.Bookmark.empty()], + ['bookmark', new bookmark.Bookmark('bookmark')], + [['bookmark'], new bookmark.Bookmark(['bookmark'])], + [ + ['bookmark1', 'bookmark2'], + new bookmark.Bookmark(['bookmark1', 'bookmark2']) + ] + ].forEach(([bookmarks, expectedBookmarks]) => { + driver = neo4j.driver( + `bolt://${sharedNeo4j.hostname}`, + sharedNeo4j.authToken + ) + + it(`should create session using param bookmarks=${bookmark}`, () => { + const session = driver.rxSession({ bookmarks }) + + expect(session.lastBookmark()).toEqual(expectedBookmarks.values()) + }) + }) + }) }) describe('#integration driver', () => { diff --git a/packages/neo4j-driver/test/types/driver.test.ts b/packages/neo4j-driver/test/types/driver.test.ts index c9e2d9ad5..4eabcb798 100644 --- a/packages/neo4j-driver/test/types/driver.test.ts +++ b/packages/neo4j-driver/test/types/driver.test.ts @@ -135,6 +135,15 @@ const rxSession9: RxSession = driver.rxSession({ bookmarks: ['bookmark1', 'bookmark2'] }) +const rxSession10: RxSession = driver.rxSession({ + defaultAccessMode: WRITE, + bookmarks: 'bookmark1' +}) +const rxSession11: RxSession = driver.rxSession({ + defaultAccessMode: WRITE, + bookmarks: ['bookmark1', 'bookmark2'] +}) + rxSession1 .run('RETURN 1') .records() diff --git a/packages/neo4j-driver/test/types/session-rx.test.ts b/packages/neo4j-driver/test/types/session-rx.test.ts index 53675c5a0..83d81587e 100644 --- a/packages/neo4j-driver/test/types/session-rx.test.ts +++ b/packages/neo4j-driver/test/types/session-rx.test.ts @@ -74,7 +74,7 @@ const txConfig7: TransactionConfig = { } const tx1: Observable = rxSession.beginTransaction() -const bookmark: null | string = rxSession.lastBookmark() +const bookmark: string[] = rxSession.lastBookmark() const observable1: Observable = rxSession.readTransaction( (tx: RxTransaction) => { diff --git a/packages/neo4j-driver/types/session-rx.d.ts b/packages/neo4j-driver/types/session-rx.d.ts index 2a629b6b6..a66142216 100644 --- a/packages/neo4j-driver/types/session-rx.d.ts +++ b/packages/neo4j-driver/types/session-rx.d.ts @@ -33,7 +33,7 @@ declare interface RxSession { beginTransaction(config?: TransactionConfig): Observable - lastBookmark(): string | null + lastBookmark(): string[] readTransaction( work: RxTransactionWork,