Skip to content

Commit 108e2bb

Browse files
committed
draft: implements missing types
Signed-off-by: Vincent Biret <vibiret@microsoft.com>
1 parent a07008b commit 108e2bb

File tree

2 files changed

+7
-5
lines changed

2 files changed

+7
-5
lines changed

packages/abstractions/src/requestInformation.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -240,7 +240,7 @@ export class RequestInformation implements RequestInformationSetContent {
240240
};
241241

242242
private normalizeValue(value: unknown): unknown {
243-
if (value instanceof DateOnly || value instanceof TimeOnly) {
243+
if (value instanceof DateOnly || value instanceof TimeOnly || value instanceof Duration) {
244244
return value.toString();
245245
}
246246
if (value instanceof Date) {

packages/abstractions/test/common/requestInformation.ts

+6-4
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88
import { assert, describe, it } from "vitest";
99

10-
import { DateOnly, HttpMethod, type Guid, type Parsable, parseGuidString, type RequestAdapter, RequestInformation, type SerializationWriter, type SerializationWriterFactory, TimeOnly } from "../../src";
10+
import { DateOnly, HttpMethod, type Guid, type Parsable, parseGuidString, type RequestAdapter, RequestInformation, type SerializationWriter, type SerializationWriterFactory, TimeOnly, Duration } from "../../src";
1111
import { MultipartBody } from "../../src/multipartBody";
1212
import { TestEnum } from "./store/testEnum";
1313

@@ -25,6 +25,8 @@ interface GetQueryParameters {
2525
endTime?: TimeOnly;
2626
endDate?: DateOnly;
2727
timeStamp?: Date;
28+
time?: TimeOnly;
29+
duration?: Duration;
2830
}
2931

3032
const getQueryParameterMapper: Record<string, string> = {
@@ -221,13 +223,13 @@ describe("RequestInformation", () => {
221223
});
222224

223225
it("should correctly handle custom type in query/path parameter", () => {
224-
const expected: string = `http://localhost/users/33933a8d-32bb-c6a8-784a-f60b5a1dd66a/2021-12-12?objectId=83afbf49-5583-152c-d7fb-176105d518bc&startDate=2021-12-12&startTime=23%3A12%3A00.0000000&timeStamp=2024-06-11T00%3A00%3A00.000Z`;
226+
const expected: string = `http://localhost/users/33933a8d-32bb-c6a8-784a-f60b5a1dd66a/2021-12-12?objectId=83afbf49-5583-152c-d7fb-176105d518bc&startDate=2021-12-12&startTime=23%3A12%3A00.0000000&timeStamp=2024-06-11T00%3A00%3A00.000Z&duration=P1D&time=23:12:00.0000000`;
225227
const requestInformation = new RequestInformation(HttpMethod.GET);
226228
requestInformation.pathParameters["baseurl"] = baseUrl;
227229
requestInformation.pathParameters["userId"] = parseGuidString("33933a8d-32bb-c6a8-784a-f60b5a1dd66a");
228230
requestInformation.pathParameters["date"] = DateOnly.parse("2021-12-12");
229-
requestInformation.urlTemplate = "http://localhost/users/{userId}/{date}{?objectId,startDate,startTime,endDate,endTime,timeStamp}";
230-
requestInformation.setQueryStringParametersFromRawObject<GetQueryParameters>({ objectId: parseGuidString("83afbf49-5583-152c-d7fb-176105d518bc"), startDate: new DateOnly({ year: 2021, month: 12, day: 12 }), startTime: new TimeOnly({ hours: 23, minutes: 12 }), timeStamp: new Date("2024-06-11T00:00:00.000Z") }, getQueryParameterMapper);
231+
requestInformation.urlTemplate = "http://localhost/users/{userId}/{date}{?objectId,startDate,startTime,endDate,endTime,timeStamp,duration}";
232+
requestInformation.setQueryStringParametersFromRawObject<GetQueryParameters>({ objectId: parseGuidString("83afbf49-5583-152c-d7fb-176105d518bc"), startDate: new DateOnly({ year: 2021, month: 12, day: 12 }), startTime: new TimeOnly({ hours: 23, minutes: 12 }), timeStamp: new Date("2024-06-11T00:00:00.000Z"), duration: Duration.parse("P1D"), time: TimeOnly.parse("23:12:00.0000000") }, getQueryParameterMapper);
231233
assert.equal(requestInformation.URL, expected);
232234
});
233235

0 commit comments

Comments
 (0)