Line data Source code
1 : import 'package:dio/dio.dart';
2 : import 'package:dio/src/parameter.dart';
3 : import 'package:test/test.dart';
4 :
5 1 : void main() {
6 1 : var data = {
7 : 'a': '你好',
8 1 : 'b': [5, '6'],
9 1 : 'c': {
10 : 'd': 8,
11 1 : 'e': {
12 : 'a': 5,
13 1 : 'b': [66, 8]
14 : }
15 : }
16 : };
17 2 : test('#url encode default ', () {
18 : // a=你好&b=5&b=6&c[d]=8&c[e][a]=5&c[e][b]=66&c[e][b]=8
19 : var result =
20 : 'a=%E4%BD%A0%E5%A5%BD&b=5&b=6&c%5Bd%5D=8&c%5Be%5D%5Ba%5D=5&c%5Be%5D%5Bb%5D=66&c%5Be%5D%5Bb%5D=8';
21 2 : expect(Transformer.urlEncodeMap(data), result);
22 : });
23 2 : test('#url encode csv', () {
24 : // a=你好&b=5,6&c[d]=8&c[e][a]=5&c[e][b]=66,8
25 : var result =
26 : 'a=%E4%BD%A0%E5%A5%BD&b=5%2C6&c%5Bd%5D=8&c%5Be%5D%5Ba%5D=5&c%5Be%5D%5Bb%5D=66%2C8';
27 2 : expect(Transformer.urlEncodeMap(data, ListFormat.csv), result);
28 : });
29 2 : test('#url encode ssv', () {
30 : // a=你好&b=5+6&c[d]=8&c[e][a]=5&c[e][b]=66+8
31 : var result =
32 : 'a=%E4%BD%A0%E5%A5%BD&b=5+6&c%5Bd%5D=8&c%5Be%5D%5Ba%5D=5&c%5Be%5D%5Bb%5D=66+8';
33 2 : expect(Transformer.urlEncodeMap(data, ListFormat.ssv), result);
34 : });
35 2 : test('#url encode tsv', () {
36 : // a=你好&b=5\t6&c[d]=8&c[e][a]=5&c[e][b]=66\t8
37 : var result =
38 : 'a=%E4%BD%A0%E5%A5%BD&b=5%5Ct6&c%5Bd%5D=8&c%5Be%5D%5Ba%5D=5&c%5Be%5D%5Bb%5D=66%5Ct8';
39 2 : expect(Transformer.urlEncodeMap(data, ListFormat.tsv), result);
40 : });
41 2 : test('#url encode pipe', () {
42 : //a=你好&b=5|6&c[d]=8&c[e][a]=5&c[e][b]=66|8
43 : var result =
44 : 'a=%E4%BD%A0%E5%A5%BD&b=5%7C6&c%5Bd%5D=8&c%5Be%5D%5Ba%5D=5&c%5Be%5D%5Bb%5D=66%7C8';
45 2 : expect(Transformer.urlEncodeMap(data, ListFormat.pipes), result);
46 : });
47 :
48 2 : test('#url encode multi', () {
49 : //a=你好&b[]=5&b[]=6&c[d]=8&c[e][a]=5&c[e][b][]=66&c[e][b][]=8
50 : var result =
51 : 'a=%E4%BD%A0%E5%A5%BD&b%5B%5D=5&b%5B%5D=6&c%5Bd%5D=8&c%5Be%5D%5Ba%5D=5&c%5Be%5D%5Bb%5D%5B%5D=66&c%5Be%5D%5Bb%5D%5B%5D=8';
52 2 : expect(Transformer.urlEncodeMap(data, ListFormat.multiCompatible), result);
53 : });
54 :
55 2 : test('#url encode multi2', () {
56 1 : var data = {
57 : 'a': 'string',
58 : 'b': 'another_string',
59 1 : 'z': ['string'],
60 : };
61 : // a=string&b=another_string&z[]=string
62 : var result = 'a=string&b=another_string&z%5B%5D=string';
63 2 : expect(Transformer.urlEncodeMap(data, ListFormat.multiCompatible), result);
64 : });
65 :
66 2 : test('#url encode custom', () {
67 : //a=你好&b=5|6&c[d]=8&c[e][a]=5&c[e][b]=foo,bar&c[e][c]=foo+bar&c[e][d][]=foo&c[e][d][]=bar&c[e][e]=foo\tbar
68 : var result =
69 : 'a=%E4%BD%A0%E5%A5%BD&b=5%7C6&c%5Bd%5D=8&c%5Be%5D%5Ba%5D=5&c%5Be%5D%5Bb%5D=foo%2Cbar&c%5Be%5D%5Bc%5D=foo+bar&c%5Be%5D%5Bd%5D%5B%5D=foo&c%5Be%5D%5Bd%5D%5B%5D=bar&c%5Be%5D%5Be%5D=foo%5Ctbar';
70 1 : expect(
71 1 : Transformer.urlEncodeMap(
72 1 : {
73 : 'a': '你好',
74 2 : 'b': ListParam<int>([5, 6], ListFormat.pipes),
75 1 : 'c': {
76 : 'd': 8,
77 1 : 'e': {
78 : 'a': 5,
79 2 : 'b': ListParam<String>(['foo', 'bar'], ListFormat.csv),
80 2 : 'c': ListParam<String>(['foo', 'bar'], ListFormat.ssv),
81 2 : 'd': ListParam<String>(['foo', 'bar'], ListFormat.multi),
82 2 : 'e': ListParam<String>(['foo', 'bar'], ListFormat.tsv),
83 : },
84 : },
85 : },
86 : ListFormat.multiCompatible,
87 : ),
88 : result,
89 : );
90 : });
91 : }
|