Skip to content

Commit 28ceccb

Browse files
committed
Add test case parameters
1 parent 4716b3e commit 28ceccb

1 file changed

Lines changed: 68 additions & 24 deletions

File tree

datamodel/odata-client/src/test/java/com/sap/cloud/sdk/datamodel/odata/client/request/ODataNextLinkTest.java

Lines changed: 68 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import lombok.Builder;
1919
import lombok.RequiredArgsConstructor;
2020
import lombok.Setter;
21+
import lombok.ToString;
2122
import lombok.experimental.Accessors;
2223
import org.apache.http.HttpResponse;
2324
import org.apache.http.HttpVersion;
@@ -51,6 +52,7 @@ class ODataNextLinkTest
5152
@AllArgsConstructor
5253
@Accessors( fluent = true )
5354
@Setter
55+
@ToString( includeFieldNames = false, exclude = { "with", "expects" } )
5456
static class QueryParameterCase
5557
{
5658
final String label;
@@ -75,26 +77,68 @@ static class Expectation
7577
}
7678
}
7779

78-
static QueryParameterCase[] QUERY_PARAMETERS_CASES =
79-
{
80-
// case 1: query-parameters from destination uri, destination properties, next-link and odata-request are distinct
81-
QueryParameterCase
82-
.named("DISTINCT")
83-
.with(
84-
QueryParameterCase.Setup
85-
.builder()
86-
.destinationQuery("dest1=one&dest2=two")
87-
.propertiesQuery("prop1=one&prop2=two")
88-
.initialQuery("odata1=one&odata2=two")
89-
.nextLinkQuery("next1=one&next2=two")
90-
.build())
91-
.expects(
92-
QueryParameterCase.Expectation
93-
.builder()
94-
.initialQuerySent("dest1=one&dest2=two&odata1=one&odata2=two&prop1=one&prop2=two")
95-
.nextLinkQueryParsed("$skiptoken=42&next1=one&next2=two")
96-
.nextLinkQuerySent("dest1=one&dest2=two&$skiptoken=42&next1=one&next2=two&prop1=one&prop2=two")
97-
.build()) };
80+
private static QueryParameterCase[] QUERY_PARAMETERS_CASES =
81+
{
82+
// case 1: query-parameters from destination uri, destination properties, next-link and odata-request are distinct
83+
QueryParameterCase
84+
.named("DISTINCT")
85+
.with(
86+
QueryParameterCase.Setup
87+
.builder()
88+
.destinationQuery("dest1=one&dest2=two")
89+
.propertiesQuery("prop1=one&prop2=two")
90+
.initialQuery("odata1=one&odata2=two")
91+
.nextLinkQuery("next1=one&next2=two")
92+
.build())
93+
.expects(
94+
QueryParameterCase.Expectation
95+
.builder()
96+
.initialQuerySent("dest1=one&dest2=two&odata1=one&odata2=two&prop1=one&prop2=two")
97+
.nextLinkQueryParsed("$skiptoken=42&next1=one&next2=two")
98+
.nextLinkQuerySent("dest1=one&dest2=two&$skiptoken=42&next1=one&next2=two&prop1=one&prop2=two")
99+
.build()),
100+
// case 2: query-parameters from destination uri, destination properties, next-link and odata-request with equal values
101+
QueryParameterCase
102+
.named("EQUAL")
103+
.with(
104+
QueryParameterCase.Setup
105+
.builder()
106+
.destinationQuery("dest1=one&dest2=two")
107+
.propertiesQuery("prop1=one&prop2=two")
108+
.initialQuery("odata1=one&odata2=two")
109+
.nextLinkQuery("next1=one&dest1=one&prop1=one&odata1=one")
110+
.build())
111+
.expects(
112+
QueryParameterCase.Expectation
113+
.builder()
114+
.initialQuerySent("dest1=one&dest2=two&odata1=one&odata2=two&prop1=one&prop2=two")
115+
.nextLinkQueryParsed("$skiptoken=42&next1=one&odata1=one")
116+
.nextLinkQuerySent("dest1=one&dest2=two&$skiptoken=42&next1=one&odata1=one&prop1=one&prop2=two")
117+
.build()),
118+
// case 3: query-parameters from next link may be in conflict with destination uri or destination properties
119+
QueryParameterCase
120+
.named("CONFLICT")
121+
.with(
122+
QueryParameterCase.Setup
123+
.builder()
124+
.destinationQuery("dest1=one&dest2=two")
125+
.propertiesQuery("prop1=one&prop2=two")
126+
.initialQuery("odata1=one&odata2=two")
127+
.nextLinkQuery("next1=eins&dest1=eins&prop1=eins&odata1=eins")
128+
.build())
129+
.expects(
130+
QueryParameterCase.Expectation
131+
.builder()
132+
.initialQuerySent("dest1=one&dest2=two&odata1=one&odata2=two&prop1=one&prop2=two")
133+
.nextLinkQueryParsed("$skiptoken=42&next1=eins&dest1=eins&prop1=eins&odata1=eins")
134+
.nextLinkQuerySent(
135+
"dest1=one&dest2=two" // destination parameters
136+
+ "&$skiptoken=42&next1=eins&dest1=eins&prop1=eins&odata1=eins" // next-link parameters
137+
+ "&prop1=one&prop2=two" // properties parameters
138+
)
139+
.build()),
140+
141+
};
98142

99143
@ParameterizedTest
100144
@FieldSource( "QUERY_PARAMETERS_CASES" )
@@ -119,7 +163,7 @@ void testRemoveDuplicateQueryArguments1( @Nonnull final QueryParameterCase testC
119163
// TEST SETUP: construct destination and HttpClient
120164
final String destinationUrl = wiremock.baseUrl() + "/?" + testCase.with.destinationQuery;
121165
final DefaultHttpDestination.Builder destinationBuilder = DefaultHttpDestination.builder(destinationUrl);
122-
for (final String queryArg : testCase.with.propertiesQuery.split("&")) {
166+
for( final String queryArg : testCase.with.propertiesQuery.split("&") ) {
123167
final String[] queryArgParts = queryArg.split("=", 2);
124168
destinationBuilder.property("URL.queries." + queryArgParts[0], queryArgParts[1]);
125169
}
@@ -147,7 +191,7 @@ void testRemoveDuplicateQueryArguments1( @Nonnull final QueryParameterCase testC
147191
void testRemoveDuplicateQueryArguments()
148192
{
149193
final ODataRequestGeneric request =
150-
new ODataRequestRead("/v1/foo/bar/", "endpoint", "blub=42", ODataProtocol.V2);
194+
new ODataRequestRead("/v1/path/to/", "endpoint", "blub=42", ODataProtocol.V2);
151195

152196
final HttpResponse httpResponse = new BasicHttpResponse(HttpVersion.HTTP_1_1, 200, "Ok");
153197
httpResponse.setEntity(new StringEntity(PAYLOAD_NEXT_LINK, ContentType.APPLICATION_JSON));
@@ -158,13 +202,13 @@ void testRemoveDuplicateQueryArguments()
158202
final Destination dest1 = DefaultHttpDestination.builder(baseUrl).property("URL.queries.foo", "bar").build();
159203
final HttpClient client1 = HttpClientAccessor.getHttpClient(dest1);
160204
final ODataRequestResultGeneric result1 = new ODataRequestResultGeneric(request, httpResponse, client1);
161-
assertThat(result1.getNextLink()).contains("/v1/foo/bar/endpoint?$skiptoken=s3cReT-t0k3n");
205+
assertThat(result1.getNextLink()).contains("/v1/path/to/endpoint?$skiptoken=s3cReT-t0k3n");
162206

163207
// case 2: query parameters are NOT EQUAL in destination and in nextLink -> retain query parameter
164208
final Destination dest2 = DefaultHttpDestination.builder(baseUrl).property("URL.queries.foo", "baz").build();
165209
final HttpClient client2 = HttpClientAccessor.getHttpClient(dest2);
166210
final ODataRequestResultGeneric result2 = new ODataRequestResultGeneric(request, httpResponse, client2);
167-
assertThat(result2.getNextLink()).contains("/v1/foo/bar/endpoint?$skiptoken=s3cReT-t0k3n&foo=bar");
211+
assertThat(result2.getNextLink()).contains("/v1/path/to/endpoint?$skiptoken=s3cReT-t0k3n&foo=bar");
168212
}
169213

170214
@Test

0 commit comments

Comments
 (0)