Skip to content

Commit 6aa22ef

Browse files
committed
Adding LocationKindController and EndpointInput, updating swagger generated classes by adding CwmsIdLocationKind.
Adding unit tests for LocationKindController and EndpointInput
1 parent 1bdaf35 commit 6aa22ef

7 files changed

Lines changed: 5008 additions & 3717 deletions

File tree

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
/*
2+
* Copyright (c) 2025. Hydrologic Engineering Center (HEC).
3+
* United States Army Corps of Engineers
4+
* All Rights Reserved. HEC PROPRIETARY/CONFIDENTIAL.
5+
* Source may not be released without written approval from HEC
6+
*/
7+
8+
package mil.army.usace.hec.cwms.data.api.client.controllers;
9+
10+
import mil.army.usace.hec.cwms.data.api.client.model.CwmsIdLocationKind;
11+
import mil.army.usace.hec.cwms.data.api.client.model.RadarObjectMapper;
12+
import mil.army.usace.hec.cwms.http.client.ApiConnectionInfo;
13+
import mil.army.usace.hec.cwms.http.client.HttpRequestBuilderImpl;
14+
import mil.army.usace.hec.cwms.http.client.HttpRequestResponse;
15+
import mil.army.usace.hec.cwms.http.client.request.HttpRequestExecutor;
16+
17+
import java.io.IOException;
18+
import java.util.List;
19+
20+
public final class LocationKindController {
21+
private static final String LOCATION_KIND_ENDPOINT = "locations/with-kind";
22+
23+
public List<CwmsIdLocationKind> retrieveLocationsWithKind(ApiConnectionInfo apiConnectionInfo, LocationKindEndpointInput.GetAll input) throws IOException {
24+
HttpRequestExecutor executor = new HttpRequestBuilderImpl(apiConnectionInfo, LOCATION_KIND_ENDPOINT)
25+
.addEndpointInput(input)
26+
.get();
27+
try (HttpRequestResponse response = executor.execute()) {
28+
return RadarObjectMapper.mapJsonToListOfObjects(response.getBody(), CwmsIdLocationKind.class);
29+
}
30+
}
31+
}
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
/*
2+
* Copyright (c) 2025. Hydrologic Engineering Center (HEC).
3+
* United States Army Corps of Engineers
4+
* All Rights Reserved. HEC PROPRIETARY/CONFIDENTIAL.
5+
* Source may not be released without written approval from HEC
6+
*/
7+
8+
package mil.army.usace.hec.cwms.data.api.client.controllers;
9+
10+
import mil.army.usace.hec.cwms.http.client.EndpointInput;
11+
import mil.army.usace.hec.cwms.http.client.HttpRequestBuilder;
12+
13+
import static mil.army.usace.hec.cwms.data.api.client.controllers.CdaEndpointConstants.ACCEPT_HEADER_JSON;
14+
import static mil.army.usace.hec.cwms.data.api.client.controllers.CdaEndpointConstants.ACCEPT_QUERY_HEADER;
15+
16+
public final class LocationKindEndpointInput {
17+
18+
static final String OFFICE_QUERY_PARAMETER = "office";
19+
static final String NAMES_QUERY_PARAMETER = "names";
20+
static final String LOCATION_KIND_LIKE_QUERY_PARAMETER = "location-kind-like";
21+
22+
private LocationKindEndpointInput() {
23+
throw new AssertionError("Factory class");
24+
}
25+
26+
public static GetAll getAll() {
27+
return new GetAll();
28+
}
29+
30+
public static class GetAll extends EndpointInput {
31+
private String office;
32+
private String names;
33+
private String locationKindLike;
34+
35+
public GetAll() {
36+
}
37+
38+
public GetAll locationKindLike(String locationKindLike) {
39+
this.locationKindLike = locationKindLike;
40+
return this;
41+
}
42+
43+
public GetAll names(String names) {
44+
this.names = names;
45+
return this;
46+
}
47+
48+
public GetAll office(String office) {
49+
this.office = office;
50+
return this;
51+
}
52+
53+
@Override
54+
protected HttpRequestBuilder addInputParameters(HttpRequestBuilder httpRequestBuilder) {
55+
return httpRequestBuilder.addQueryParameter(OFFICE_QUERY_PARAMETER, office)
56+
.addQueryParameter(NAMES_QUERY_PARAMETER, names)
57+
.addQueryParameter(LOCATION_KIND_LIKE_QUERY_PARAMETER, locationKindLike)
58+
.addQueryHeader(ACCEPT_QUERY_HEADER, ACCEPT_HEADER_JSON);
59+
}
60+
}
61+
}
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
/*
2+
* Copyright (c) 2025. Hydrologic Engineering Center (HEC).
3+
* United States Army Corps of Engineers
4+
* All Rights Reserved. HEC PROPRIETARY/CONFIDENTIAL.
5+
* Source may not be released without written approval from HEC
6+
*/
7+
8+
package mil.army.usace.hec.cwms.data.api.client.controllers;
9+
10+
import mil.army.usace.hec.cwms.data.api.client.model.CwmsIdLocationKind;
11+
import org.junit.jupiter.api.Test;
12+
13+
import java.util.List;
14+
15+
import static org.junit.jupiter.api.Assertions.*;
16+
17+
class TestLocationKindController extends TestController {
18+
private static final String TEST_ALL_LOCATION_KIND_MOCK_DATA = "radar/v1/json/locations_with_kinds.json";
19+
20+
@Test
21+
void testOptionalLocationKindController() throws Exception {
22+
String collect = readJsonFile(TEST_ALL_LOCATION_KIND_MOCK_DATA);
23+
mockHttpServer.enqueue(collect);
24+
mockHttpServer.start();
25+
LocationKindEndpointInput.GetAll input = new LocationKindEndpointInput.GetAll();
26+
List<CwmsIdLocationKind> kinds = new LocationKindController().retrieveLocationsWithKind(buildConnectionInfo(), input);
27+
assertNotNull(kinds);
28+
}
29+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
/*
2+
* Copyright (c) 2025. Hydrologic Engineering Center (HEC).
3+
* United States Army Corps of Engineers
4+
* All Rights Reserved. HEC PROPRIETARY/CONFIDENTIAL.
5+
* Source may not be released without written approval from HEC
6+
*/
7+
8+
package mil.army.usace.hec.cwms.data.api.client.controllers;
9+
10+
import org.junit.jupiter.api.Test;
11+
12+
import static mil.army.usace.hec.cwms.data.api.client.controllers.CdaEndpointConstants.ACCEPT_HEADER_JSON;
13+
import static mil.army.usace.hec.cwms.data.api.client.controllers.CdaEndpointConstants.ACCEPT_QUERY_HEADER;
14+
import static mil.army.usace.hec.cwms.data.api.client.controllers.LocationKindEndpointInput.LOCATION_KIND_LIKE_QUERY_PARAMETER;
15+
import static mil.army.usace.hec.cwms.data.api.client.controllers.LocationKindEndpointInput.NAMES_QUERY_PARAMETER;
16+
import static mil.army.usace.hec.cwms.data.api.client.controllers.LocationKindEndpointInput.OFFICE_QUERY_PARAMETER;
17+
import static org.junit.jupiter.api.Assertions.*;
18+
19+
class TestLocationKindEndpointInput {
20+
private static final String TEST_OFFICE = "SPK";
21+
private static final String TEST_NAMES = "LOC_TEST";
22+
private static final String TEST_LOCATION_KIND_LIKE = "SITE";
23+
24+
@Test
25+
void testGetAll() {
26+
MockHttpRequestBuilder mockHttpRequestBuilder = new MockHttpRequestBuilder();
27+
LocationKindEndpointInput.GetAll input = LocationKindEndpointInput.getAll();
28+
input.locationKindLike(TEST_LOCATION_KIND_LIKE)
29+
.names(TEST_NAMES)
30+
.office(TEST_OFFICE);
31+
32+
input.addInputParameters(mockHttpRequestBuilder);
33+
assertEquals(TEST_OFFICE, mockHttpRequestBuilder.getQueryParameter(OFFICE_QUERY_PARAMETER));
34+
assertEquals(TEST_NAMES, mockHttpRequestBuilder.getQueryParameter(NAMES_QUERY_PARAMETER));
35+
assertEquals(TEST_LOCATION_KIND_LIKE, mockHttpRequestBuilder.getQueryParameter(LOCATION_KIND_LIKE_QUERY_PARAMETER));
36+
assertEquals(ACCEPT_HEADER_JSON, mockHttpRequestBuilder.getQueryHeader(ACCEPT_QUERY_HEADER));
37+
}
38+
39+
@Test
40+
void testGetAllPlain() {
41+
MockHttpRequestBuilder mockHttpRequestBuilder = new MockHttpRequestBuilder();
42+
LocationKindEndpointInput.GetAll input = LocationKindEndpointInput.getAll();
43+
44+
input.addInputParameters(mockHttpRequestBuilder);
45+
assertNull(mockHttpRequestBuilder.getQueryParameter(OFFICE_QUERY_PARAMETER));
46+
assertNull(mockHttpRequestBuilder.getQueryParameter(NAMES_QUERY_PARAMETER));
47+
assertNull(mockHttpRequestBuilder.getQueryParameter(LOCATION_KIND_LIKE_QUERY_PARAMETER));
48+
assertEquals(ACCEPT_HEADER_JSON, mockHttpRequestBuilder.getQueryHeader(ACCEPT_QUERY_HEADER));
49+
}
50+
}

0 commit comments

Comments
 (0)