From 6097b566c1da0d131d3b6f97e8c12ab1c07c608a Mon Sep 17 00:00:00 2001 From: espenam Date: Fri, 27 Sep 2024 15:52:30 +0200 Subject: [PATCH] add condition for value instanceof OffsetDateTime and LocalDate in RequestInformation#getSanitizedValues, add test for LocalDate pathParameter resolution --- .../microsoft/kiota/RequestInformation.java | 5 +++++ .../kiota/RequestInformationTest.java | 18 ++++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/components/abstractions/src/main/java/com/microsoft/kiota/RequestInformation.java b/components/abstractions/src/main/java/com/microsoft/kiota/RequestInformation.java index 615d368b..a3afdaa9 100644 --- a/components/abstractions/src/main/java/com/microsoft/kiota/RequestInformation.java +++ b/components/abstractions/src/main/java/com/microsoft/kiota/RequestInformation.java @@ -20,6 +20,7 @@ import java.time.LocalDate; import java.time.LocalTime; import java.time.OffsetDateTime; +import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; @@ -473,6 +474,10 @@ private static Object getSanitizedValues(Object value) { return ((ValuedEnum) value).getValue(); } else if (value instanceof UUID) { return value.toString(); + } else if (value instanceof OffsetDateTime) { + return ((OffsetDateTime) value).format(DateTimeFormatter.ISO_OFFSET_DATE_TIME); + } else if (value instanceof LocalDate) { + return ((LocalDate) value).format(DateTimeFormatter.ISO_LOCAL_DATE); } else { return value; } diff --git a/components/abstractions/src/test/java/com/microsoft/kiota/RequestInformationTest.java b/components/abstractions/src/test/java/com/microsoft/kiota/RequestInformationTest.java index bf1c2914..4b71c3eb 100644 --- a/components/abstractions/src/test/java/com/microsoft/kiota/RequestInformationTest.java +++ b/components/abstractions/src/test/java/com/microsoft/kiota/RequestInformationTest.java @@ -17,6 +17,7 @@ import java.net.URI; import java.net.URISyntaxException; +import java.time.LocalDate; import java.time.OffsetDateTime; import java.time.ZoneOffset; import java.util.ArrayList; @@ -73,6 +74,23 @@ void SetsPathParametersOfDateTimeOffsetType() { assertTrue(uriResult.toString().contains("toDateTime='2022-08-02T00%3A00%3A00Z'")); } + @Test + void SetsPathParametersOfLocalDateType() { + final RequestInformation requestInfo = new RequestInformation(); + requestInfo.httpMethod = HttpMethod.GET; + requestInfo.urlTemplate = "http://localhost/getCalendarView(startLocalDate='{startLocalDate}',endLocalDate='{endLocalDate}')"; + + final LocalDate startLocalDate = LocalDate.of(2022, 8, 1); + final LocalDate endLocalDate = LocalDate.of(2022, 8, 2); + + requestInfo.pathParameters.put("startLocalDate", startLocalDate); + requestInfo.pathParameters.put("endLocalDate", endLocalDate); + + var uriResult = assertDoesNotThrow(() -> requestInfo.getUri()); + assertTrue(uriResult.toString().contains("startLocalDate='2022-08-01'")); + assertTrue(uriResult.toString().contains("endLocalDate='2022-08-02'")); + } + @Test void ExpandQueryParametersAfterPathParams() { // Arrange as the request builders would