forked from OpenFeign/feign
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathQueryTemplateTest.java
More file actions
121 lines (106 loc) · 4.42 KB
/
Copy pathQueryTemplateTest.java
File metadata and controls
121 lines (106 loc) · 4.42 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
/**
* Copyright 2012-2019 The Feign Authors
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
* in compliance with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software distributed under the License
* is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
* or implied. See the License for the specific language governing permissions and limitations under
* the License.
*/
package feign.template;
import static org.assertj.core.api.Assertions.assertThat;
import feign.CollectionFormat;
import feign.Util;
import java.util.Arrays;
import java.util.Collections;
import org.junit.Test;
public class QueryTemplateTest {
@Test
public void templateToQueryString() {
QueryTemplate template =
QueryTemplate.create("name", Arrays.asList("Bob", "James", "Jason"), Util.UTF_8);
assertThat(template.toString()).isEqualToIgnoringCase("name=Bob&name=James&name=Jason");
}
@Test
public void expandSingleValue() {
QueryTemplate template =
QueryTemplate.create("name", Collections.singletonList("{value}"), Util.UTF_8);
String expanded = template.expand(Collections.singletonMap("value", "Magnum P.I."));
assertThat(expanded).isEqualToIgnoringCase("name=Magnum%20P.I.");
}
@Test
public void expandMultipleValues() {
QueryTemplate template =
QueryTemplate.create("name", Arrays.asList("Bob", "James", "Jason"), Util.UTF_8);
String expanded = template.expand(Collections.emptyMap());
assertThat(expanded).isEqualToIgnoringCase("name=Bob&name=James&name=Jason");
}
@Test
public void unresolvedQuery() {
QueryTemplate template =
QueryTemplate.create("name", Collections.singletonList("{value}"), Util.UTF_8);
String expanded = template.expand(Collections.emptyMap());
assertThat(expanded).isNullOrEmpty();
}
@Test
public void unresolvedMultiValueQueryTemplates() {
QueryTemplate template =
QueryTemplate.create("name", Arrays.asList("{bob}", "{james}", "{jason}"), Util.UTF_8);
String expanded = template.expand(Collections.emptyMap());
assertThat(expanded).isNullOrEmpty();
}
@Test
public void explicitNullValuesAreRemoved() {
QueryTemplate template =
QueryTemplate.create("name", Collections.singletonList("{value}"), Util.UTF_8);
String expanded = template.expand(Collections.singletonMap("value", null));
assertThat(expanded).isNullOrEmpty();
}
@Test
public void emptyParameterRemains() {
QueryTemplate template =
QueryTemplate.create("name", Collections.singletonList("{value}"), Util.UTF_8);
String expanded = template.expand(Collections.singletonMap("value", ""));
assertThat(expanded).isEqualToIgnoringCase("name=");
}
@Test
public void collectionFormat() {
QueryTemplate template =
QueryTemplate
.create("name", Arrays.asList("James", "Jason"), Util.UTF_8, CollectionFormat.CSV);
String expanded = template.expand(Collections.emptyMap());
assertThat(expanded).isEqualToIgnoringCase("name=James,Jason");
}
@Test
public void expandName() {
QueryTemplate template =
QueryTemplate.create("{name}", Arrays.asList("James", "Jason"), Util.UTF_8);
String expanded = template.expand(Collections.singletonMap("name", "firsts"));
assertThat(expanded).isEqualToIgnoringCase("firsts=James&firsts=Jason");
}
@Test
public void expandPureParameter() {
QueryTemplate template =
QueryTemplate.create("{name}", Collections.emptyList(), Util.UTF_8);
String expanded = template.expand(Collections.singletonMap("name", "firsts"));
assertThat(expanded).isEqualToIgnoringCase("firsts");
}
@Test
public void expandPureParameterWithSlash() {
QueryTemplate template =
QueryTemplate.create("/path/{name}", Collections.emptyList(), Util.UTF_8);
String expanded = template.expand(Collections.singletonMap("name", "firsts"));
assertThat(expanded).isEqualToIgnoringCase("/path/firsts");
}
@Test
public void expandNameUnresolved() {
QueryTemplate template =
QueryTemplate.create("{parameter}", Arrays.asList("James", "Jason"), Util.UTF_8);
String expanded = template.expand(Collections.singletonMap("name", "firsts"));
assertThat(expanded).isEqualToIgnoringCase("%7Bparameter%7D=James&%7Bparameter%7D=Jason");
}
}