import AWS from "aws-sdk"; import AWSMock from "aws-sdk-mock"; import sinon from "sinon"; export async function mockDynamoCampaigns(campaigns: Record) { AWSMock.setSDKInstance(AWS); const fakes = { getItem: sinon.fake((params: any, callback: any) => { const key = params.Key._id.S; callback(null, { Item: { _id: { S: key }, value: { S: JSON.stringify(campaigns[key]) } }, }); }), batchGetItem: sinon.fake((params: any, callback: any) => { const tableName = Object.keys(params.RequestItems)[0]; const keys = params.RequestItems[tableName].Keys.map((k: any) => k._id.S); const items = keys .map((k: any) => { return campaigns[k] ? { _id: { S: k }, value: { S: JSON.stringify(campaigns[k]) } } : null; }) .filter((i: any) => !!i); callback(null, { Responses: { [tableName]: items, }, }); }), }; AWSMock.mock("DynamoDB", "getItem", fakes.getItem); AWSMock.mock("DynamoDB", "batchGetItem", fakes.batchGetItem); return fakes; }