diff --git a/packages/api-dynamodb-to-elasticsearch/__tests__/event.test.ts b/packages/api-dynamodb-to-elasticsearch/__tests__/event.test.ts index 809695e3ec7..7896a1a35ba 100644 --- a/packages/api-dynamodb-to-elasticsearch/__tests__/event.test.ts +++ b/packages/api-dynamodb-to-elasticsearch/__tests__/event.test.ts @@ -73,7 +73,8 @@ describe("event", () => { }, lambdaContext, request, - reply + reply, + next: jest.fn() }); expect(result).toEqual(null); @@ -86,7 +87,8 @@ describe("event", () => { event, lambdaContext, request, - reply + reply, + next: jest.fn() }); expect(result).toEqual(null); diff --git a/packages/api-dynamodb-to-elasticsearch/__tests__/transfer.test.ts b/packages/api-dynamodb-to-elasticsearch/__tests__/transfer.test.ts new file mode 100644 index 00000000000..3f30a387c25 --- /dev/null +++ b/packages/api-dynamodb-to-elasticsearch/__tests__/transfer.test.ts @@ -0,0 +1,56 @@ +import { createEventHandler, Operations } from "~/index"; +import { createElasticsearchClient } from "@webiny/project-utils/testing/elasticsearch/createClient"; +import { ElasticsearchContext } from "@webiny/api-elasticsearch/types"; +import { Context, LambdaContext, Reply, Request } from "@webiny/handler-aws/types"; +import { marshall } from "@webiny/aws-sdk/client-dynamodb"; +import { PluginsContainer } from "@webiny/plugins"; + +describe("transfer data", () => { + it("should transfer data from event to elasticsearch", async () => { + const event = createEventHandler(); + + const elasticsearch = createElasticsearchClient(); + + const context = { + elasticsearch, + plugins: new PluginsContainer() + } as unknown as ElasticsearchContext & Context; + /** + * Register index which is going to get created, so it can be deleted after the test. + */ + const index = "a-test-index"; + elasticsearch.indices.registerIndex(index); + + const result = await event.cb({ + context, + reply: {} as Reply, + request: {} as Request, + event: { + Records: [ + { + eventName: Operations.INSERT, + dynamodb: { + Keys: marshall({ + PK: "PK_TEST", + SK: "SK_TEST" + }) as any, + NewImage: marshall({ + index, + ignore: false, + data: { + title: "Hello World" + } + }) as any + } + } + ] + }, + lambdaContext: {} as LambdaContext, + next: jest.fn() + }); + + expect(result).toEqual(null); + + await elasticsearch.indices.deleteAll(); + }); +}); diff --git a/packages/api-dynamodb-to-elasticsearch/src/index.ts b/packages/api-dynamodb-to-elasticsearch/src/index.ts index 61ad3c97895..89e4beb5dbb 100644 --- a/packages/api-dynamodb-to-elasticsearch/src/index.ts +++ b/packages/api-dynamodb-to-elasticsearch/src/index.ts @@ -12,7 +12,7 @@ import { ElasticsearchCatClusterHealthStatus } from "@webiny/api-elasticsearch/o import pRetry from "p-retry"; import { NotEnoughRemainingTimeError } from "./NotEnoughRemainingTimeError"; -enum Operations { +export enum Operations { INSERT = "INSERT", MODIFY = "MODIFY", REMOVE = "REMOVE" @@ -220,7 +220,7 @@ export const createEventHandler = () => { const execute = async (): Promise => { const remainingTime = timer.getRemainingSeconds(); const runningTime = MAX_RUNNING_TIME - remainingTime; - const maxWaitingTime = MAX_RUNNING_TIME - 90 - remainingTime; + const maxWaitingTime = remainingTime - 90; if (process.env.DEBUG === "true") { console.debug(