dynoga
Version:
**Dynoga** is a light library for use DynamoDB with javascript objects
143 lines (126 loc) • 4.55 kB
text/coffeescript
Assert = require "assert"
Dynoga = require "../lib/dynoga"
# Configuration
db = new Dynoga
endpoint: "http://localhost:8000"
accessKeyId: process.env.METIDIA_ACCESS_KEY_ID
secretAccessKey: process.env.METIDIA_SECRET_ACCESS_KEY
region: "eu-west-1"
describe "dynoga", () ->
beforeEach (done) ->
# Delete table
db.dynamo.deleteTable
TableName: "dynoga-test"
(deleteErr, data) ->
# Create table
db.dynamo.createTable
TableName: "dynoga-test"
AttributeDefinitions: [
{
AttributeName: "userID"
AttributeType: "S"
},{
AttributeName: "id"
AttributeType: "S"
}
]
KeySchema: [
{
AttributeName: "userID"
KeyType: "HASH"
}, {
AttributeName: "id"
KeyType: "RANGE"
}
]
ProvisionedThroughput:
ReadCapacityUnits: 10
WriteCapacityUnits: 10
done
describe "create", () ->
it "should create a new insert in bdd", (done) ->
input =
id: "1"
userID: "test"
age: 50
sexualSlaves: ["poney", "barby", "Mr slave", "bibou"]
db.create "dynoga-test", input, (err, data) ->
if err then console.log err
Assert.deepEqual data, input
do done
it "should generate an id", (done) ->
db.create "dynoga-test", {userID: "test"}, (err, data) ->
if err then console.log err
Assert.equal typeof data.id, "string"
do done
it "should ignore empty string", (done) ->
input =
id: "1"
userID: "test"
age: 20
optional: ""
db.create "dynoga-test", input, (err, data) ->
if err then console.log err
delete input.optional
Assert.deepEqual data, input
do done
describe "read", () ->
it "should return same object as saved", (done) ->
input =
id: "1"
userID: "test"
age: 50
sexualSlaves: ["poney", "barby", "Mr slave", "bibou"]
db.create "dynoga-test", input, (err, createData) ->
db.read "dynoga-test", {id: "1", userID: "test"}, (err, readData) ->
if err then console.log err
delete input._createTimeStamp
Assert.deepEqual readData, input
do done
it "should return the collection", (done) ->
expected = [
{id: "2", userID: "test"}
{id: "1", userID: "test"}
{id: "3", userID: "test"}
{id: "4", userID: "test"}
{id: "5", userID: "test"}
]
db.create "dynoga-test", {id: "2", userID: "test"}, (err, data) ->
db.create "dynoga-test", {id: "1", userID: "test"}, (err, data) ->
db.create "dynoga-test", {id: "3", userID: "test"}, (err, data) ->
db.create "dynoga-test", {id: "4", userID: "test"}, (err, data) ->
db.create "dynoga-test", {id: "5", userID: "test"}, (err, data) ->
db.read "dynoga-test", {userID: "test"}, (err, collection) ->
Assert.deepEqual collection, expected
do done
describe "update", () ->
it "should return the updated object", (done) ->
input =
id: "1"
userID: "test"
age: 50
sexualSlaves: ["poney", "barby", "Mr slave", "bibou"]
expected =
id: "1"
userID: "test"
age: 40
sexualSlaves: ["poney", "barby", "Mr slave", "bibou"]
db.create "dynoga-test", input, (err, createData) ->
db.update "dynoga-test", {id: "1", userID: "test", age: 40}, (err, updatedata) ->
if err then console.log err
Assert.deepEqual updatedata, expected
do done
describe "delete", () ->
it "should return deleted object and delete it", (done) ->
input =
id: "1"
userID: "test"
age: 50
sexualSlaves: ["poney", "barby", "Mr slave", "bibou"]
db.create "dynoga-test", input, (err, createData) ->
db.delete "dynoga-test", {id: "1", userID: "test"}, (err, deleteData) ->
delete input._createTimeStamp
Assert.deepEqual deleteData, input
db.read "dynoga-test", {id: "1", userID: "test"}, (err, readData) ->
Assert.strictEqual readData, undefined
do done