Skip to content

Commit 1375fe7

Browse files
committed
add dynalite sample test for #9
1 parent 52fe570 commit 1375fe7

File tree

2 files changed

+112
-0
lines changed

2 files changed

+112
-0
lines changed

__tests__/create-table.json

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
{
2+
"AttributeDefinitions": [
3+
{
4+
"AttributeName": "pk",
5+
"AttributeType": "S"
6+
},
7+
{
8+
"AttributeName": "sk",
9+
"AttributeType": "S"
10+
}
11+
],
12+
"KeySchema": [
13+
{
14+
"AttributeName": "pk",
15+
"KeyType": "HASH"
16+
},
17+
{
18+
"AttributeName": "sk",
19+
"KeyType": "RANGE"
20+
}
21+
],
22+
"ProvisionedThroughput": {
23+
"ReadCapacityUnits": 5,
24+
"WriteCapacityUnits": 5
25+
}
26+
}

__tests__/put.int.test.js

Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
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

Comments
 (0)