|
| 1 | +const createTableParams = require('./create-table.json') |
| 2 | + |
| 3 | +// Include dynalite and config server (use in memory) |
| 4 | +const dynalite = require('dynalite') |
| 5 | +const dynaliteServer = dynalite({ |
| 6 | + createTableMs: 0, |
| 7 | + updateTableMs: 0, |
| 8 | + deleteTableMs: 0 |
| 9 | +}) |
| 10 | + |
| 11 | +const AWS = require('aws-sdk') |
| 12 | + |
| 13 | +// Create DynamoDB connection to dynalite |
| 14 | +const DynamoDB = new AWS.DynamoDB({ |
| 15 | + endpoint: 'http://localhost:4567', |
| 16 | + region: 'us-east-1', |
| 17 | + credentials: new AWS.Credentials({ accessKeyId: 'test', secretAccessKey: 'test' }) |
| 18 | +}) |
| 19 | + |
| 20 | +// Create our document client |
| 21 | +const DocumentClient = new AWS.DynamoDB.DocumentClient({ |
| 22 | + endpoint: 'http://localhost:4567', |
| 23 | + region: 'us-east-1', |
| 24 | + credentials: new AWS.Credentials({ accessKeyId: 'test', secretAccessKey: 'test' }) |
| 25 | +}) |
| 26 | + |
| 27 | +// Start up Dynalite on port 4567 |
| 28 | +beforeAll(async () => { |
| 29 | + // Listen on port 4567 |
| 30 | + await new Promise((resolve,reject) => { |
| 31 | + dynaliteServer.listen(4567, function(err) { |
| 32 | + if (err) reject(err) |
| 33 | + console.log('Dynalite started on port 4567') |
| 34 | + resolve(true) |
| 35 | + }) |
| 36 | + }) |
| 37 | + |
| 38 | + // Create test tables |
| 39 | + await DynamoDB.createTable(Object.assign(createTableParams,{ TableName: 'test-table'})).promise() |
| 40 | + // let data = await DynamoDB.listTables().promise() |
| 41 | + // console.log('TABLES:',data); |
| 42 | +}) |
| 43 | + |
| 44 | +afterAll(async () => { |
| 45 | + await DynamoDB.deleteTable({ TableName: 'test-table'}).promise() |
| 46 | + // let data = await DynamoDB.listTables().promise() |
| 47 | + // console.log('TABLES:',data); |
| 48 | + dynaliteServer.close() |
| 49 | +}) |
| 50 | + |
| 51 | +const { Model } = require('../index') |
| 52 | + |
| 53 | +// Define main model for testing |
| 54 | +const TestModel = new Model('TestModel',require('./models/test-model')) |
| 55 | + |
| 56 | +// Define simple model for testing |
| 57 | +const SimpleModel = new Model('SimpleModel',require('./models/simple-model')) |
| 58 | + |
| 59 | +// Define simple model wity sortKey for testing |
| 60 | +const SimpleModelSk = new Model('SimpleModelSk',require('./models/simple-model-sk')) |
| 61 | + |
| 62 | +// Define simple model for testing |
| 63 | +const SimpleModelReq = new Model('SimpleModelReq',require('./models/simple-model-req')) |
| 64 | + |
| 65 | + |
| 66 | +describe('put',()=>{ |
| 67 | + |
| 68 | + it('creates basic item',async () => { |
| 69 | + |
| 70 | + // Generate params |
| 71 | + let params = TestModel.put({ pk: 'test-pk', sk: 'test-sk' }) |
| 72 | + |
| 73 | + // Put to DynamoDB |
| 74 | + await DocumentClient.put(params).promise() |
| 75 | + |
| 76 | + // Grab item from DynamoDB |
| 77 | + let getParams = TestModel.get({ pk: 'test-pk', sk: 'test-sk' }) |
| 78 | + let get = await DocumentClient.get(getParams).promise() |
| 79 | + // console.log(get); |
| 80 | + |
| 81 | + // Simple test |
| 82 | + expect(get.Item.pk).toBe('test-pk') |
| 83 | + |
| 84 | + }) |
| 85 | + |
| 86 | +}) |
0 commit comments