HEX
Server: Apache/2.4.41 (Ubuntu)
System: Linux ip-172-31-42-149 5.15.0-1084-aws #91~20.04.1-Ubuntu SMP Fri May 2 07:00:04 UTC 2025 aarch64
User: ubuntu (1000)
PHP: 7.4.33
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: /var/www/vhost/disk-apps/pwa.sports-crowd.com/node_modules/needle/test/querystring_spec.js
var should    = require('should'),
	  stringify = require('../lib/querystring').build;

describe('stringify', function() {

	describe('with null', function() {

		it('throws', function() {
			(function() {
				var res = stringify(null);
			}).should.throw();
		})

	})

	describe('with a number', function() {

		it('throws', function() {
			(function() {
				var res = stringify(100);
			}).should.throw();
		})

	})

	describe('with a string', function() {

		describe('that is empty', function() {

			it('throws', function() {
				(function() {
					var res = stringify('');
				}).should.throw();
			})

		})

		describe('that doesnt contain an equal sign', function() {

			it('throws', function() {
				(function() {
					var res = stringify('boomshagalaga');
				}).should.throw();
			})

		})

		describe('that contains an equal sign', function() {

			it('works', function() {
				var res = stringify('hello=123');
				res.should.eql('hello=123');
			})

		})

	})

	describe('with an array', function() {

		describe('with key val objects', function() {

			it('works', function() {
				var res = stringify([ {foo: 'bar'} ]);
				res.should.eql('foo=bar');
			})

		})

		describe('where all elements are strings with an equal sign', function() {

			it('works', function() {
				var res = stringify([ 'bar=123', 'quux=' ]);
				res.should.eql('bar=123&quux=');
			})

		})

		describe('with random words', function() {

			it('throws', function() {
				(function() {
					var res = stringify(['hello', 'there']);
				}).should.throw();
			})

		})

		describe('with integers', function() {

			it('throws', function() {
				(function() {
					var res = stringify([123, 432]);
				}).should.throw();
			})

		})

	})

	describe('with an object', function() {

			it('works', function() {
				var res = stringify({ test: 100 });
				res.should.eql('test=100');
			})

			describe('with object where val is an array', function() {

				it('works', function() {
					var res = stringify({ foo: ['bar', 'baz'] });
					res.should.eql('foo[]=bar&foo[]=baz');
				})

			})

			describe('with object where val is an array of key val objects', function() {

				it('works', function() {
					var res = stringify({ foo: [{'1': 'bar'}, {'2': 'baz'}] });
					res.should.eql('foo[][1]=bar&foo[][2]=baz');
				})

			})

	})

})