@@ -184,7 +184,7 @@ describe('Select Builder', () => {
184184 where : [ 'field = true' , 'active = false' ] ,
185185 } ) ,
186186 ] ) {
187- expect ( result . query ) . toEqual ( 'SELECT * FROM testTable WHERE field = true AND active = false LIMIT 1' )
187+ expect ( result . query ) . toEqual ( 'SELECT * FROM testTable WHERE ( field = true) AND ( active = false) LIMIT 1' )
188188 expect ( result . arguments ) . toEqual ( undefined )
189189 expect ( result . fetchType ) . toEqual ( 'ONE' )
190190 }
@@ -526,7 +526,7 @@ describe('Select Builder', () => {
526526 . where ( 'test = ?' , 123 )
527527 . getQueryAll ( ) ,
528528 ] ) {
529- expect ( result . query ) . toEqual ( 'SELECT * FROM testTable WHERE field = ? AND test = ?' )
529+ expect ( result . query ) . toEqual ( 'SELECT * FROM testTable WHERE ( field = ?) AND ( test = ?) ' )
530530 expect ( result . arguments ) . toEqual ( [ 'test' , 123 ] )
531531 expect ( result . fetchType ) . toEqual ( 'ALL' )
532532 }
@@ -551,7 +551,7 @@ describe('Select Builder', () => {
551551 . groupBy ( 'type' )
552552 . getQueryAll ( ) ,
553553 ] ) {
554- expect ( result . query ) . toEqual ( 'SELECT * FROM testTable WHERE field = ?1 AND test = ?2 GROUP BY type' )
554+ expect ( result . query ) . toEqual ( 'SELECT * FROM testTable WHERE ( field = ?1) AND ( test = ?2) GROUP BY type' )
555555 expect ( result . arguments ) . toEqual ( [ 'test' , 123 ] )
556556 expect ( result . fetchType ) . toEqual ( 'ALL' )
557557 }
@@ -577,7 +577,7 @@ describe('Select Builder', () => {
577577 . groupBy ( 'day' )
578578 . getQueryAll ( ) ,
579579 ] ) {
580- expect ( result . query ) . toEqual ( 'SELECT * FROM testTable WHERE field = ?1 AND test = ?2 GROUP BY type, day' )
580+ expect ( result . query ) . toEqual ( 'SELECT * FROM testTable WHERE ( field = ?1) AND ( test = ?2) GROUP BY type, day' )
581581 expect ( result . arguments ) . toEqual ( [ 'test' , 123 ] )
582582 expect ( result . fetchType ) . toEqual ( 'ALL' )
583583 }
@@ -605,7 +605,7 @@ describe('Select Builder', () => {
605605 . getQueryAll ( ) ,
606606 ] ) {
607607 expect ( result . query ) . toEqual (
608- 'SELECT * FROM testTable WHERE field = ?1 AND test = ?2 GROUP BY type HAVING COUNT(trackid) > 15'
608+ 'SELECT * FROM testTable WHERE ( field = ?1) AND ( test = ?2) GROUP BY type HAVING COUNT(trackid) > 15'
609609 )
610610 expect ( result . arguments ) . toEqual ( [ 'test' , 123 ] )
611611 expect ( result . fetchType ) . toEqual ( 'ALL' )
@@ -635,7 +635,7 @@ describe('Select Builder', () => {
635635 . getQueryAll ( ) ,
636636 ] ) {
637637 expect ( result . query ) . toEqual (
638- 'SELECT * FROM testTable WHERE field = ?1 AND test = ?2 GROUP BY type HAVING COUNT(trackid) > 15 AND COUNT(trackid) < 30'
638+ 'SELECT * FROM testTable WHERE ( field = ?1) AND ( test = ?2) GROUP BY type HAVING COUNT(trackid) > 15 AND COUNT(trackid) < 30'
639639 )
640640 expect ( result . arguments ) . toEqual ( [ 'test' , 123 ] )
641641 expect ( result . fetchType ) . toEqual ( 'ALL' )
@@ -663,7 +663,9 @@ describe('Select Builder', () => {
663663 . orderBy ( 'id' )
664664 . getQueryAll ( ) ,
665665 ] ) {
666- expect ( result . query ) . toEqual ( 'SELECT * FROM testTable WHERE field = ?1 AND test = ?2 GROUP BY type ORDER BY id' )
666+ expect ( result . query ) . toEqual (
667+ 'SELECT * FROM testTable WHERE (field = ?1) AND (test = ?2) GROUP BY type ORDER BY id'
668+ )
667669 expect ( result . arguments ) . toEqual ( [ 'test' , 123 ] )
668670 expect ( result . fetchType ) . toEqual ( 'ALL' )
669671 }
@@ -692,7 +694,7 @@ describe('Select Builder', () => {
692694 . getQueryAll ( ) ,
693695 ] ) {
694696 expect ( result . query ) . toEqual (
695- 'SELECT * FROM testTable WHERE field = ?1 AND test = ?2 GROUP BY type ORDER BY id, timestamp'
697+ 'SELECT * FROM testTable WHERE ( field = ?1) AND ( test = ?2) GROUP BY type ORDER BY id, timestamp'
696698 )
697699 expect ( result . arguments ) . toEqual ( [ 'test' , 123 ] )
698700 expect ( result . fetchType ) . toEqual ( 'ALL' )
@@ -725,7 +727,7 @@ describe('Select Builder', () => {
725727 . getQueryAll ( ) ,
726728 ] ) {
727729 expect ( result . query ) . toEqual (
728- 'SELECT * FROM testTable WHERE field = ?1 AND test = ?2 GROUP BY type ORDER BY id ASC, timestamp DESC'
730+ 'SELECT * FROM testTable WHERE ( field = ?1) AND ( test = ?2) GROUP BY type ORDER BY id ASC, timestamp DESC'
729731 )
730732 expect ( result . arguments ) . toEqual ( [ 'test' , 123 ] )
731733 expect ( result . fetchType ) . toEqual ( 'ALL' )
@@ -756,10 +758,35 @@ describe('Select Builder', () => {
756758 . getQueryAll ( ) ,
757759 ] ) {
758760 expect ( result . query ) . toEqual (
759- 'SELECT * FROM testTable WHERE field = ?1 AND test = ?2 GROUP BY type LIMIT 10 OFFSET 15'
761+ 'SELECT * FROM testTable WHERE ( field = ?1) AND ( test = ?2) GROUP BY type LIMIT 10 OFFSET 15'
760762 )
761763 expect ( result . arguments ) . toEqual ( [ 'test' , 123 ] )
762764 expect ( result . fetchType ) . toEqual ( 'ALL' )
763765 }
764766 } )
767+
768+ test ( 'select with multiple where with OR conditions' , async ( ) => {
769+ for ( const result of [
770+ new QuerybuilderTest ( ) . fetchAll ( {
771+ tableName : 'testTable' ,
772+ fields : '*' ,
773+ where : {
774+ conditions : [ 'field = ?1 OR test = ?2' , 'test = ?3 OR field = ?4' ] ,
775+ params : [ 'test' , 123 , 456 , 'test' ] ,
776+ } ,
777+ } ) ,
778+ new QuerybuilderTest ( )
779+ . select ( 'testTable' )
780+ . fields ( '*' )
781+ . where ( 'field = ?1 OR test = ?2' , [ 'test' , 123 ] )
782+ . where ( 'test = ?3 OR field = ?4' , [ 456 , 'test' ] )
783+ . getQueryAll ( ) ,
784+ ] ) {
785+ expect ( result . query ) . toEqual (
786+ 'SELECT * FROM testTable WHERE (field = ?1 OR test = ?2) AND (test = ?3 OR field = ?4)'
787+ )
788+ expect ( result . arguments ) . toEqual ( [ 'test' , 123 , 456 , 'test' ] )
789+ expect ( result . fetchType ) . toEqual ( 'ALL' )
790+ }
791+ } )
765792} )
0 commit comments