@lifeomic/test-tool-dynamodb
v5.2.1
Published
[![npm](https://img.shields.io/npm/v/@lifeomic/test-tool-dynamodb.svg)](https://www.npmjs.com/package/@lifeomic/test-tool-dynamodb) [![Build Status](https://github.com/lifeomic/test-tools/actions/workflows/release.yaml/badge.svg)](https://github.com/lifeo
Downloads
1,107
Readme
@lifeomic/test-tool-dynamodb
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.