@@ -6,16 +6,41 @@ const NativeClient = require('../../lib/native')
66const client = new Client ( )
77const nativeClient = new NativeClient ( )
88
9+ // every field of an error the native client reports must be on the javascript one under the
10+ // same name, and with the same value
11+ const compare = ( err , nativeErr ) => {
12+ for ( const key in nativeErr ) {
13+ assert . equal ( err [ key ] , nativeErr [ key ] , `Expected err.${ key } to equal nativeErr.${ key } ` )
14+ }
15+ }
16+
17+ const bothFail = ( text , cb ) => {
18+ client . query ( text , ( err ) => {
19+ nativeClient . query ( text , ( nativeErr ) => {
20+ compare ( err , nativeErr )
21+ cb ( )
22+ } )
23+ } )
24+ }
25+
926client . connect ( )
1027nativeClient . connect ( ( err ) => {
11- client . query ( 'SELECT alsdkfj' , ( err ) => {
12- client . end ( )
13-
14- nativeClient . query ( 'SELECT lkdasjfasd' , ( nativeErr ) => {
15- for ( const key in nativeErr ) {
16- assert . equal ( err [ key ] , nativeErr [ key ] , `Expected err.${ key } to equal nativeErr.${ key } ` )
17- }
18- nativeClient . end ( )
28+ assert ( ! err )
29+ bothFail ( 'SELECT alsdkfj' , ( ) => {
30+ // a duplicate key carries a detail, a misspelt column a hint. A real table rather than a
31+ // temp one, whose schema is named after the connection
32+ const setup =
33+ 'DROP TABLE IF EXISTS native_vs_js_dup; CREATE TABLE native_vs_js_dup (id int PRIMARY KEY); INSERT INTO native_vs_js_dup VALUES (1)'
34+ client . query ( setup , ( err ) => {
35+ assert ( ! err )
36+ bothFail ( 'INSERT INTO native_vs_js_dup VALUES (1)' , ( ) => {
37+ bothFail ( 'SELECT cols FROM (SELECT 1 AS col) t' , ( ) => {
38+ client . query ( 'DROP TABLE native_vs_js_dup' , ( ) => {
39+ client . end ( )
40+ nativeClient . end ( )
41+ } )
42+ } )
43+ } )
1944 } )
2045 } )
2146} )
0 commit comments