5.2.0 • Published 4 months ago

@lifeomic/test-tool-dynamodb v5.2.0

Weekly downloads
-
License
MIT
Repository
github
Last release
4 months ago

@lifeomic/test-tool-dynamodb

npm Build Status

DynamoDB

Many services use 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) or pointing the test code at a provisioned DynamoDB instance. AWS has published 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 making testing even easier to do using tools like docker-compose and 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 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

AttributeDescription/type
schemas@aws-sdk/client-dynamodb.CreateTableInput[] for creating tables
useUniqueTablesAdd a unique identifier to the table name, useful for parallel tests using the same table schema
useLocalDynamoDbStart a Docker instance of the DynamoDB table
dockerDynamoDBConfigConfigure the Docker container
dynamoDBClientConfigOptional client configuration
dockerDynamoDBConfig
AttributeDescription
inMemoryShould we create an in memory only database
dynamoDBClientConfigOptional client configuration

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

AttributeDescription/Type
dynamoDBClient@aws-sdk/client-dynamodb.DynamoDBClient
config@aws-sdk/client-dynamodb.DynamoDBClientConfig
tableNamesMapMap of base table name to actual table name. E.g. users to users-abcdef12345
uniqueIdentifierThe 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.

5.2.0

4 months ago

5.1.1

4 months ago

5.1.0

8 months ago

5.0.0

8 months ago

4.1.3

11 months ago

4.1.2

1 year ago

4.1.1

1 year ago

4.1.0

1 year ago

3.3.1

2 years ago

4.0.0

2 years ago

3.3.0

2 years ago

3.2.0

2 years ago

3.1.0

2 years ago