@@ -100,6 +100,47 @@ describe('customAfter()', function() {
100100 } ) ;
101101} ) ;
102102
103+ describe ( 'parseString()' , function ( ) {
104+ it ( 'returns boolean true for "true" string' , function ( ) {
105+ assert . equal ( qs . parseString ( 'true' ) , true ) ;
106+ } ) ;
107+
108+ it ( 'returns string "true" when boolean parsing is disabled' , function ( ) {
109+ qs . string . toBoolean = false ;
110+ assert . equal ( qs . parseString ( 'true' ) , 'true' ) ;
111+ } ) ;
112+
113+ it ( 'returns boolean false for "flase" string' , function ( ) {
114+ assert . equal ( qs . parseString ( 'false' ) , false ) ;
115+ } ) ;
116+
117+ it ( 'returns string "false" when boolean parsing is disabled' , function ( ) {
118+ qs . string . toBoolean = false ;
119+ assert . equal ( qs . parseString ( 'false' ) , 'false' ) ;
120+ } ) ;
121+
122+ it ( 'returns number for parseable integer' , function ( ) {
123+ assert . equal ( qs . parseString ( '100' ) , 100 ) ;
124+ } ) ;
125+
126+ it ( 'returns string number when number parsing is disabled' , function ( ) {
127+ qs . string . toNumber = false ;
128+ assert . equal ( qs . parseString ( '100' ) , '100' ) ;
129+ } ) ;
130+
131+ it ( 'returns number for zero padded parseable integer' , function ( ) {
132+ assert . equal ( qs . parseString ( '000100' ) , 100 ) ;
133+ } ) ;
134+
135+ it ( 'returns number for parseable float' , function ( ) {
136+ assert . equal ( qs . parseString ( '10.123' ) , 10.123 ) ;
137+ } ) ;
138+
139+ it ( 'returns number for zero padded parseable float' , function ( ) {
140+ assert . equal ( qs . parseString ( '00010.123' ) , 10.123 ) ;
141+ } ) ;
142+ } ) ;
143+
103144describe ( 'parse()' , function ( ) {
104145 describe ( 'parsing' , function ( ) {
105146 describe ( 'key value validation' , function ( ) {
@@ -143,6 +184,17 @@ describe('parse()', function() {
143184 } ) ;
144185 } ) ;
145186
187+ it ( 'return string boolean as boolean' , function ( ) {
188+ query = qs . parse ( {
189+ foo : 'true' ,
190+ bar : 'false'
191+ } ) ;
192+ assert . deepEqual ( query , {
193+ foo : true ,
194+ bar : false
195+ } ) ;
196+ } ) ;
197+
146198 it ( 'returns string integer as number' , function ( ) {
147199 query = qs . parse ( {
148200 navn : '10'
@@ -185,6 +237,17 @@ describe('parse()', function() {
185237 } ) ;
186238 } ) ;
187239
240+ it ( 'return string boolean as boolean' , function ( ) {
241+ query = qs . parse ( {
242+ foo : '!true' ,
243+ bar : '!false'
244+ } ) ;
245+ assert . deepEqual ( query , {
246+ foo : { $ne : true } ,
247+ bar : { $ne : false }
248+ } ) ;
249+ } ) ;
250+
188251 it ( 'returns string integer as number' , function ( ) {
189252 query = qs . parse ( {
190253 navn : '!10'
@@ -289,23 +352,23 @@ describe('parse()', function() {
289352
290353 describe ( '$in / $nin operator' , function ( ) {
291354 it ( 'returns in array query' , function ( ) {
292- var string = 'foo[]=10&foo[]=10.011&foo[]=bar' ;
355+ var string = 'foo[]=10&foo[]=10.011&foo[]=bar&foo[]=true ' ;
293356 var params = require ( 'querystring' ) . parse ( string ) ;
294357
295358 assert . deepEqual ( qs . parse ( params ) , {
296359 foo : {
297- $in : [ 10 , 10.011 , 'bar' ]
360+ $in : [ 10 , 10.011 , 'bar' , true ]
298361 }
299362 } ) ;
300363 } ) ;
301364
302365 it ( 'returns in array query with "qs" parser (GH-06)' , function ( ) {
303- var string = 'foo[]=10&foo[]=10.011&foo[]=bar' ;
366+ var string = 'foo[]=10&foo[]=10.011&foo[]=bar&foo[]=true ' ;
304367 var params = require ( 'qs' ) . parse ( string ) ;
305368
306369 assert . deepEqual ( qs . parse ( params ) , {
307370 foo : {
308- $in : [ 10 , 10.011 , 'bar' ]
371+ $in : [ 10 , 10.011 , 'bar' , true ]
309372 }
310373 } ) ;
311374 } ) ;
@@ -322,23 +385,23 @@ describe('parse()', function() {
322385 } ) ;
323386
324387 it ( 'returns not in array query' , function ( ) {
325- var string = 'foo[]=!10&foo[]=!10.011&foo[]=!bar' ;
388+ var string = 'foo[]=!10&foo[]=!10.011&foo[]=!bar&foo[]=!false ' ;
326389 var params = require ( 'querystring' ) . parse ( string ) ;
327390
328391 assert . deepEqual ( qs . parse ( params ) , {
329392 foo : {
330- $nin : [ 10 , 10.011 , 'bar' ]
393+ $nin : [ 10 , 10.011 , 'bar' , false ]
331394 }
332395 } ) ;
333396 } ) ;
334397
335398 it ( 'returns not in array query with "gs" parser (GH-06)' , function ( ) {
336- var string = 'foo[]=!10&foo[]=!10.011&foo[]=!bar' ;
399+ var string = 'foo[]=!10&foo[]=!10.011&foo[]=!bar&foo[]=!false ' ;
337400 var params = require ( 'qs' ) . parse ( string ) ;
338401
339402 assert . deepEqual ( qs . parse ( params ) , {
340403 foo : {
341- $nin : [ 10 , 10.011 , 'bar' ]
404+ $nin : [ 10 , 10.011 , 'bar' , false ]
342405 }
343406 } ) ;
344407 } ) ;
0 commit comments