Skip to content

Commit

Permalink
feat(eventstream-serde-config-resolver): simplify and add tests (#1403)
Browse files Browse the repository at this point in the history
  • Loading branch information
trivikr committed Aug 6, 2020
1 parent 25bcf39 commit 7783c69
Show file tree
Hide file tree
Showing 4 changed files with 43 additions and 21 deletions.
5 changes: 5 additions & 0 deletions packages/eventstream-serde-config-resolver/jest.config.js
@@ -0,0 +1,5 @@
const base = require("../../jest.config.base.js");

module.exports = {
...base,
};
@@ -0,0 +1,19 @@
import { resolveEventStreamSerdeConfig } from "./EventStreamSerdeConfig";

describe("resolveEventStreamSerdeConfig", () => {
const eventStreamSerdeProvider = jest.fn();

afterEach(() => {
jest.clearAllMocks();
});

it("sets value returned by eventStreamSerdeProvider", () => {
const mockReturn = "mockReturn";
eventStreamSerdeProvider.mockReturnValueOnce(mockReturn);

const input = { eventStreamSerdeProvider };
expect(resolveEventStreamSerdeConfig(input).eventStreamMarshaller).toStrictEqual(mockReturn);
expect(eventStreamSerdeProvider).toHaveBeenCalledTimes(1);
expect(eventStreamSerdeProvider).toHaveBeenCalledWith(input);
});
});
@@ -0,0 +1,18 @@
import { EventStreamMarshaller, EventStreamSerdeProvider } from "@aws-sdk/types";

export interface EventStreamSerdeInputConfig {}

export interface EventStreamSerdeResolvedConfig {
eventStreamMarshaller: EventStreamMarshaller;
}

interface PreviouslyResolved {
eventStreamSerdeProvider: EventStreamSerdeProvider;
}

export const resolveEventStreamSerdeConfig = <T>(
input: T & PreviouslyResolved & EventStreamSerdeInputConfig
): T & EventStreamSerdeResolvedConfig => ({
...input,
eventStreamMarshaller: input.eventStreamSerdeProvider(input),
});
22 changes: 1 addition & 21 deletions packages/eventstream-serde-config-resolver/src/index.ts
@@ -1,21 +1 @@
import { Decoder, Encoder, EventStreamMarshaller, EventStreamSerdeProvider } from "@aws-sdk/types";
export interface EventStreamSerdeInputConfig {}

export interface EventStreamSerdeResolvedConfig {
eventStreamMarshaller: EventStreamMarshaller;
}

interface PreviouslyResolved {
utf8Encoder: Encoder;
utf8Decoder: Decoder;
eventStreamSerdeProvider: EventStreamSerdeProvider;
}

export function resolveEventStreamSerdeConfig<T>(
input: T & PreviouslyResolved & EventStreamSerdeInputConfig
): T & EventStreamSerdeResolvedConfig {
return {
...input,
eventStreamMarshaller: input.eventStreamSerdeProvider({ ...input }),
};
}
export * from "./EventStreamSerdeConfig";

0 comments on commit 7783c69

Please sign in to comment.