From 01c5e8709103a679573a1dbb1a17bf89d0f34255 Mon Sep 17 00:00:00 2001 From: Gioele Cantoni Date: Fri, 20 Dec 2024 15:55:51 +0100 Subject: [PATCH 1/2] tests and query trim --- package.json | 2 +- src/drivers/protocol.ts | 4 ++++ test/statement.test.ts | 19 +++++++++---------- 3 files changed, 14 insertions(+), 11 deletions(-) diff --git a/package.json b/package.json index a79014d..14901af 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@sqlitecloud/drivers", - "version": "1.0.345", + "version": "1.0.354", "description": "SQLiteCloud drivers for Typescript/Javascript in edge, web and node clients", "main": "./lib/index.js", "types": "./lib/index.d.ts", diff --git a/src/drivers/protocol.ts b/src/drivers/protocol.ts index ae9238d..5ecd473 100644 --- a/src/drivers/protocol.ts +++ b/src/drivers/protocol.ts @@ -335,6 +335,10 @@ export function popData(buffer: Buffer): { data: SQLiteCloudDataTypes | SQLiteCl /** Format a command to be sent via SCSP protocol */ export function formatCommand(command: SQLiteCloudCommand): string { + // core returns null if there's a space after the semi column + // we want to maintain a compatibility with the standard sqlite3 driver + command.query = command.query.trim() + if (command.parameters && command.parameters.length > 0) { // by SCSP the string paramenters in the array are zero-terminated return serializeCommand([command.query, ...(command.parameters || [])], true) diff --git a/test/statement.test.ts b/test/statement.test.ts index 2fa07ae..9822927 100644 --- a/test/statement.test.ts +++ b/test/statement.test.ts @@ -190,7 +190,6 @@ it('Statement.each without bindings', done => { statement.each(4, rowCallback, completeCallback) }) - it('Statement.get', done => { const chinook = getChinookDatabase() expect(chinook).toBeDefined() @@ -226,7 +225,6 @@ it('Statement.get without bindings', done => { }) }) - it('Statement.run', done => { const chinook = getChinookDatabase() expect(chinook).toBeDefined() @@ -268,7 +266,7 @@ it('Statement.run - insert', done => { }) }) -it('Statement.run - insert with empty space after semicolon returns null', done => { +it("Statement.run - insert with empty space after semicolon shouldn't return null", done => { // create simple "people" database that we can write in... const database = getTestingDatabase(error => { expect(error).toBeNull() @@ -277,14 +275,14 @@ it('Statement.run - insert with empty space after semicolon returns null', done // @ts-ignore statement.run('John Wayne', 73, 'Horse Riding', (error, results) => { - expect(results).toBeNull() + expect(results).not.toBeNull() + expect(results).toBe('OK') done() }) }) }) - it('Statement.run - update', done => { const database = getTestingDatabase(error => { expect(error).toBeNull() @@ -300,7 +298,7 @@ it('Statement.run - update', done => { }) }) -it('Statement.run - update with empty space after semicolon returns null', done => { +it("Statement.run - update with empty space after semicolon shouldn't return null", done => { const database = getTestingDatabase(error => { expect(error).toBeNull() @@ -308,7 +306,8 @@ it('Statement.run - update with empty space after semicolon returns null', done // @ts-ignore statement.run('John Wayne', 1, (error, results) => { - expect(results).toBeNull() + expect(results).not.toBeNull() + expect(results).toBe('OK') done() }) @@ -330,7 +329,7 @@ it('Statement.run - delete', done => { }) }) -it('Statement.run - delete with empty space after semicolon returns null', done => { +it("Statement.run - delete with empty space after semicolon shouldn't return null", done => { const database = getTestingDatabase(error => { expect(error).toBeNull() @@ -338,10 +337,10 @@ it('Statement.run - delete with empty space after semicolon returns null', done // @ts-ignore statement.run(1, (error, results) => { - expect(results).toBeNull() + expect(results).not.toBeNull() + expect(results).toBe('OK') done() }) }) }) - From b768c76d24773fa704d10fec1831bcaed87e47fb Mon Sep 17 00:00:00 2001 From: Gioele Cantoni Date: Fri, 20 Dec 2024 17:15:47 +0100 Subject: [PATCH 2/2] fix statement test --- package-lock.json | 4 ++-- test/statement.test.ts | 7 ++++--- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index 6285ae0..f2ac3ea 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@sqlitecloud/drivers", - "version": "1.0.345", + "version": "1.0.354", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@sqlitecloud/drivers", - "version": "1.0.345", + "version": "1.0.354", "license": "MIT", "dependencies": { "@craftzdog/react-native-buffer": "^6.0.5", diff --git a/test/statement.test.ts b/test/statement.test.ts index 9822927..362e468 100644 --- a/test/statement.test.ts +++ b/test/statement.test.ts @@ -276,7 +276,8 @@ it("Statement.run - insert with empty space after semicolon shouldn't return nul // @ts-ignore statement.run('John Wayne', 73, 'Horse Riding', (error, results) => { expect(results).not.toBeNull() - expect(results).toBe('OK') + expect(results.lastID).toBeGreaterThan(1) + expect(results.changes).toBe(1) done() }) @@ -307,7 +308,7 @@ it("Statement.run - update with empty space after semicolon shouldn't return nul // @ts-ignore statement.run('John Wayne', 1, (error, results) => { expect(results).not.toBeNull() - expect(results).toBe('OK') + expect(results.changes).toBe(1) done() }) @@ -338,7 +339,7 @@ it("Statement.run - delete with empty space after semicolon shouldn't return nul // @ts-ignore statement.run(1, (error, results) => { expect(results).not.toBeNull() - expect(results).toBe('OK') + expect(results.changes).toBe(1) done() })