Skip to content

Commit 7783c69

Browse files
authored
feat(eventstream-serde-config-resolver): simplify and add tests (#1403)
1 parent 25bcf39 commit 7783c69

File tree

4 files changed

+43
-21
lines changed

4 files changed

+43
-21
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
const base = require("../../jest.config.base.js");
2+
3+
module.exports = {
4+
...base,
5+
};
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
import { resolveEventStreamSerdeConfig } from "./EventStreamSerdeConfig";
2+
3+
describe("resolveEventStreamSerdeConfig", () => {
4+
const eventStreamSerdeProvider = jest.fn();
5+
6+
afterEach(() => {
7+
jest.clearAllMocks();
8+
});
9+
10+
it("sets value returned by eventStreamSerdeProvider", () => {
11+
const mockReturn = "mockReturn";
12+
eventStreamSerdeProvider.mockReturnValueOnce(mockReturn);
13+
14+
const input = { eventStreamSerdeProvider };
15+
expect(resolveEventStreamSerdeConfig(input).eventStreamMarshaller).toStrictEqual(mockReturn);
16+
expect(eventStreamSerdeProvider).toHaveBeenCalledTimes(1);
17+
expect(eventStreamSerdeProvider).toHaveBeenCalledWith(input);
18+
});
19+
});
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
import { EventStreamMarshaller, EventStreamSerdeProvider } from "@aws-sdk/types";
2+
3+
export interface EventStreamSerdeInputConfig {}
4+
5+
export interface EventStreamSerdeResolvedConfig {
6+
eventStreamMarshaller: EventStreamMarshaller;
7+
}
8+
9+
interface PreviouslyResolved {
10+
eventStreamSerdeProvider: EventStreamSerdeProvider;
11+
}
12+
13+
export const resolveEventStreamSerdeConfig = <T>(
14+
input: T & PreviouslyResolved & EventStreamSerdeInputConfig
15+
): T & EventStreamSerdeResolvedConfig => ({
16+
...input,
17+
eventStreamMarshaller: input.eventStreamSerdeProvider(input),
18+
});
+1-21
Original file line numberDiff line numberDiff line change
@@ -1,21 +1 @@
1-
import { Decoder, Encoder, EventStreamMarshaller, EventStreamSerdeProvider } from "@aws-sdk/types";
2-
export interface EventStreamSerdeInputConfig {}
3-
4-
export interface EventStreamSerdeResolvedConfig {
5-
eventStreamMarshaller: EventStreamMarshaller;
6-
}
7-
8-
interface PreviouslyResolved {
9-
utf8Encoder: Encoder;
10-
utf8Decoder: Decoder;
11-
eventStreamSerdeProvider: EventStreamSerdeProvider;
12-
}
13-
14-
export function resolveEventStreamSerdeConfig<T>(
15-
input: T & PreviouslyResolved & EventStreamSerdeInputConfig
16-
): T & EventStreamSerdeResolvedConfig {
17-
return {
18-
...input,
19-
eventStreamMarshaller: input.eventStreamSerdeProvider({ ...input }),
20-
};
21-
}
1+
export * from "./EventStreamSerdeConfig";

0 commit comments

Comments
 (0)