@lifeomic/test-tool-dynamodb
TypeScript icon, indicating that this package has built-in type declarations

5.2.0 • Public • Published

@lifeomic/test-tool-dynamodb

npm Build Status

DynamoDB

Many services use [DynamoDB][dynamodb] as their primary storage solution. Testing service code against a DynamoDB storage layer requires either mocking the DynamoDB interface (using something like [aws-sdk-mock-client][aws-sdk-mock-client]) or pointing the test code at a provisioned DynamoDB instance. AWS has published [DynamoDB Local][dynamodb-local] so that testing can be done without having to use real AWS resources. DynamoDB Local has also been published as a [community docker image][dynamodb-image] making testing even easier to do using tools like [docker-compose][docker-compose] and [dockerode][dockerode].

@lifeomic/test-tool-dynamodb supports both methods of integrating with DynamoDB. For simple unit tests, the dynamoDBTestHooks helper can be used to provision and link DynamoDB docker containers. The helper will define all relevant environment variables and will inject a preconfigured [DyanomDB client][dynamodb-client] into the test context. The setup and tear down will also create and destroy tables, as defined in the schema, between test cases. The helper will also automatically handle port binding differences between regular and nested Docker environments.

@lifeomic/test-tool-dynamodb managed containers are able to join an existing docker-compose network allowing them to reuse an existing DynamoDB container by configuring the test hooks.

dynamoDBTestHooks

config

Attribute Description/type
schemas @aws-sdk/client-dynamodb.CreateTableInput[] for creating tables
useUniqueTables Add a unique identifier to the table name, useful for parallel tests using the same table schema
useLocalDynamoDb Start a Docker instance of the DynamoDB table
dockerDynamoDBConfig Configure the Docker container
dynamoDBClientConfig Optional client configuration
dockerDynamoDBConfig
Attribute Description
inMemory Should we create an in memory only database
dynamoDBClientConfig Optional client configuration

Provides hooks for standard test stages, beforeAll, beforeEach, afterEach, afterAll. The test context will include the following:

Attribute Description/Type
dynamoDBClient @aws-sdk/client-dynamodb.DynamoDBClient
config @aws-sdk/client-dynamodb.DynamoDBClientConfig
tableNamesMap Map of base table name to actual table name. E.g. users to users-abcdef12345
uniqueIdentifier The unique identifier appended to each table name. E.g. abcdef12345

If useUniqueTables is true, dynamically generated table names will be used, in the form of <tableNameProvidedInSchema>-<uuid>. The unique table name can be fetched from the tableNames map. Otherwise, the table name will be the default provided in the schema. This allows tests to be run in parallel.

Readme

Keywords

none

Package Sidebar

Install

npm i @lifeomic/test-tool-dynamodb

Weekly Downloads

488

Version

5.2.0

License

MIT

Unpacked Size

61.8 kB

Total Files

20

Last publish

Collaborators

  • lifeomicdev
  • npm-lifeomicdev-github