UNPKG

dynafixtures

Version:

Fixtures for DynamoDB

60 lines (45 loc) 2.08 kB
# Dynafixtures Fixtures for DynamoDB using DynamoDB Local. This package is meant to quickly implement fixtures for DynamoDB. Particularly handy if you want to unit test code that requires AWS DynamoDB. ## Setup and teardown Make sure you have DynamoDB running locally. This is as easy as downloading a file and then running a command. See the [AWS documentation](http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Tools.DynamoDBLocal.html#Tools.DynamoDBLocal.DownloadingAndRunning) for more info. Install the package: ```javascript npm install --save-dev dynafixtures ``` Create fixtures files for tables and records. See the test folder for examples (there are just JSONs for the correct DynamoDB API functions). Dynafixtures uses the `createTable` and `batchWriteItem` API calls of the [AWS DynamoDB API](http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/DynamoDB.html). The easiest way to start is to use the `setup()` and `teardown()` functions. `setup()` is shorthand for `initialize()` and `fixtures()`, e.g. create tables and records in one go. ```javascript var tables = process.cwd() + '/test_tables.json'; var fixtures = [ process.cwd() + '/Forum_fixture.json', process.cwd() + '/fixture2.json' ]; var port = 4567; // Defaults to 4567 if `typeof port` is not a number dynafixtures.setup(tables, fixtures, port, function(err){ if (err) { //Handle error } ); ``` When the tests are completed, run: ```javascript dynafixtures.teardown(function(err){ if (err) { // Handle error } }); ``` ## Using DynamoDB during tests Between setup and teardown (which you should do before and after each test, fits nicely in assert's `before` and `after` functions or). you can access the DynamoDB on your machine using this snippet: ```javascript var aws = require('aws-sdk'); var db = new aws.DynamoDB({ 'accessKeyId': 'a', 'secretAccessKey':'b', 'endpoint':'http://localhost:4567', // Your port here 'region': 'eu-west-1' }); // Now you can do DynamoDB calls using db.scan() or whatever. // ... ```