Skip to content

Commit dadf9db

Browse files
dreyksljharb
authored andcommitted
[Tests] parse: add passing arrayFormat tests
1 parent df0cb44 commit dadf9db

File tree

1 file changed

+32
-0
lines changed

1 file changed

+32
-0
lines changed

test/parse.js

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,38 @@ test('parse()', function (t) {
3232
st.end();
3333
});
3434

35+
t.test('arrayFormat: brackets allows only explicit arrays', function (st) {
36+
st.deepEqual(qs.parse('a[]=b&a[]=c', { arrayFormat: 'brackets' }), { a: ['b', 'c'] });
37+
st.deepEqual(qs.parse('a[0]=b&a[1]=c', { arrayFormat: 'brackets' }), { a: ['b', 'c'] });
38+
st.deepEqual(qs.parse('a=b,c', { arrayFormat: 'brackets' }), { a: 'b,c' });
39+
st.deepEqual(qs.parse('a=b&a=c', { arrayFormat: 'brackets' }), { a: ['b', 'c'] });
40+
st.end();
41+
});
42+
43+
t.test('arrayFormat: indices allows only indexed arrays', function (st) {
44+
st.deepEqual(qs.parse('a[]=b&a[]=c', { arrayFormat: 'indices' }), { a: ['b', 'c'] });
45+
st.deepEqual(qs.parse('a[0]=b&a[1]=c', { arrayFormat: 'indices' }), { a: ['b', 'c'] });
46+
st.deepEqual(qs.parse('a=b,c', { arrayFormat: 'indices' }), { a: 'b,c' });
47+
st.deepEqual(qs.parse('a=b&a=c', { arrayFormat: 'indices' }), { a: ['b', 'c'] });
48+
st.end();
49+
});
50+
51+
t.test('arrayFormat: comma allows only comma-separated arrays', function (st) {
52+
st.deepEqual(qs.parse('a[]=b&a[]=c', { arrayFormat: 'comma' }), { a: ['b', 'c'] });
53+
st.deepEqual(qs.parse('a[0]=b&a[1]=c', { arrayFormat: 'comma' }), { a: ['b', 'c'] });
54+
st.deepEqual(qs.parse('a=b,c', { arrayFormat: 'comma' }), { a: 'b,c' });
55+
st.deepEqual(qs.parse('a=b&a=c', { arrayFormat: 'comma' }), { a: ['b', 'c'] });
56+
st.end();
57+
});
58+
59+
t.test('arrayFormat: repeat allows only repeated values', function (st) {
60+
st.deepEqual(qs.parse('a[]=b&a[]=c', { arrayFormat: 'repeat' }), { a: ['b', 'c'] });
61+
st.deepEqual(qs.parse('a[0]=b&a[1]=c', { arrayFormat: 'repeat' }), { a: ['b', 'c'] });
62+
st.deepEqual(qs.parse('a=b,c', { arrayFormat: 'repeat' }), { a: 'b,c' });
63+
st.deepEqual(qs.parse('a=b&a=c', { arrayFormat: 'repeat' }), { a: ['b', 'c'] });
64+
st.end();
65+
});
66+
3567
t.test('allows enabling dot notation', function (st) {
3668
st.deepEqual(qs.parse('a.b=c'), { 'a.b': 'c' });
3769
st.deepEqual(qs.parse('a.b=c', { allowDots: true }), { a: { b: 'c' } });

0 commit comments

Comments
 (0)