Skip to content

Commit ce7f51d

Browse files
committed
✅ Add tests for searchParams utils
1 parent 41c127a commit ce7f51d

File tree

3 files changed

+47
-1
lines changed

3 files changed

+47
-1
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
import { getValidSearchParams, encodeParamsToSearchParams } from '../searchParams';
2+
3+
describe('getValidSearchParams', () => {
4+
it('returns params without null, undefined or empty string', () => {
5+
const params = new URLSearchParams({
6+
a: 'null',
7+
b: 'undefined',
8+
c: '',
9+
d: 'foo',
10+
});
11+
12+
const validParams = getValidSearchParams(params);
13+
14+
expect(validParams.has('d')).toBe(true);
15+
expect(Array.from(validParams.entries()).length).toBe(1);
16+
});
17+
});
18+
19+
describe.only('encodeParamsToSearchParams', () => {
20+
it(`returns undefined if undefined params received`, () => {
21+
expect(encodeParamsToSearchParams()).toBe(undefined);
22+
});
23+
24+
it(`returns received params if they're instace of URLSearchParams`, () => {
25+
const params = new URLSearchParams();
26+
expect(encodeParamsToSearchParams(params)).toBe(params);
27+
});
28+
29+
// TODO:
30+
it.skip(`encodes object literal to an instance of URLSearchParams`, () => {
31+
const params = {
32+
a: 1,
33+
b: ['a', 'b'],
34+
c: 'foo',
35+
};
36+
37+
// TODO: continue here
38+
// const result = encodeParamsToSearchParams(params);
39+
});
40+
});

packages/@ackee/antonio-core/src/modules/request/utils/url/index.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ export function createRequestUrl(
2424

2525
const url = joinUrlChunks(requestConfig.baseURL, requestUrl);
2626

27-
const searchParams = encodeParamsToSearchParams(requestConfig.params || requestConfig.params);
27+
const searchParams = encodeParamsToSearchParams(requestConfig.params);
2828
url.search = getValidSearchParams(searchParams).toString();
2929

3030
return url.toString();

packages/@ackee/antonio-core/src/modules/request/utils/url/searchParams.ts

+6
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ const isValidSearchParam = (value: string) => {
44
return value !== 'undefined' && value !== 'null' && value !== '';
55
};
66

7+
// TODO: add test
78
export function getValidSearchParams(searchParams?: URLSearchParams): URLSearchParams {
89
const validSearchParams = new URLSearchParams();
910

@@ -18,6 +19,7 @@ export function getValidSearchParams(searchParams?: URLSearchParams): URLSearchP
1819
return validSearchParams;
1920
}
2021

22+
// TODO: add test
2123
export function encodeParamsToSearchParams(params?: RequestSearchParams): URLSearchParams | undefined {
2224
if (params === undefined) {
2325
return;
@@ -27,6 +29,10 @@ export function encodeParamsToSearchParams(params?: RequestSearchParams): URLSea
2729
return params;
2830
}
2931

32+
// TODO: if requestCOnfig contains paramsSerializer
33+
// BE might require array items to have been suffixed with `[]`:
34+
// ['includeTag[]', 1], not only ['includeTag', 1] (e.g. on Expenses)
35+
3036
const searchParams = new URLSearchParams();
3137

3238
for (const [name, value] of Object.entries(params)) {

0 commit comments

Comments
 (0)