Skip to content

Commit d34e871

Browse files
pedepwopian
andauthored
fix(kitsu-core): build list queryparams (#781)
* fix(kitsu-core): build list queryparams * remove backend-specific key formatting Co-authored-by: James Harris <wopian@wopian.me>
1 parent 4d99714 commit d34e871

2 files changed

Lines changed: 20 additions & 1 deletion

File tree

packages/kitsu-core/src/query/index.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,8 @@
77
* @private
88
*/
99
function queryFormat (value, key) {
10-
if (value !== null && typeof value === 'object') return query(value, key)
10+
if (value !== null && Array.isArray(value)) return value.map(v => queryFormat(v, key)).join('&')
11+
else if (value !== null && typeof value === 'object') return query(value, key)
1112
else return encodeURIComponent(key) + '=' + encodeURIComponent(value)
1213
}
1314

packages/kitsu-core/src/query/index.spec.js

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,5 +58,23 @@ describe('kitsu-core', () => {
5858
}
5959
})).toEqual('fields%5Babc%5D%5Bdef%5D%5Bghi%5D%5Bjkl%5D=mno')
6060
})
61+
62+
it('builds list parameters', () => {
63+
expect.assertions(1)
64+
expect(query({
65+
filter: {
66+
id_in: [ 1, 2, 3 ]
67+
}
68+
})).toEqual('filter%5Bid_in%5D=1&filter%5Bid_in%5D=2&filter%5Bid_in%5D=3')
69+
})
70+
71+
it('builds nested list parameters', () => {
72+
expect.assertions(1)
73+
expect(query({
74+
filter: {
75+
users: [ { id: 1, type: 'users' }, { id: 2, type: 'users' } ]
76+
}
77+
})).toEqual('filter%5Busers%5D%5Bid%5D=1&filter%5Busers%5D%5Btype%5D=users&filter%5Busers%5D%5Bid%5D=2&filter%5Busers%5D%5Btype%5D=users')
78+
})
6179
})
6280
})

0 commit comments

Comments
 (0)