UNPKG

@jitterbit/npdynamodb

Version:

A Node.js Simple Query Builder and ORM for AWS DynamoDB.

100 lines (91 loc) 2.94 kB
'use strict'; var chai = require('chai'); var expect = chai.expect; var Promise = require('bluebird'); var SchemaBuilder = require('../lib/schema/builder'); var Migrator = require('../lib/migrate/migrator'); var npdynamodb = require('../index'); var dynamodb = require('./dynamodb_2012_08_10'); var npd = npdynamodb.createClient(dynamodb); var migrator = new Migrator.Runner({ cwd: __dirname + "/migrations", dynamoClient: dynamodb, migrations: { ProvisionedThroughput: [10, 10], tableName: 'npd_migrations_for_testing' } }); describe('Migrator', function(){ before(function(done){ Promise.all([ npd().rawClient().deleteTable({ TableName: 'test_table1'}), npd().rawClient().deleteTable({ TableName: 'test_table2' }), npd().rawClient().deleteTable({ TableName: 'npd_migrations_for_testing' }) ]) .then(function(){ done(); }) .catch(function(){ done(); }); }); describe('run', function(){ it("Should create test_table1 and test_table2", function(done){ migrator.run().then(function(data){ return Promise.all([ npd().table('test_table1').describe(), npd().table('test_table2').describe(), ]); }) .then(function(tables){ expect(tables[0].Table.TableName).to.equal('test_table1'); expect(tables[1].Table.TableName).to.equal('test_table2'); done(); }) .catch(function(err){ done(err); }); }); }); describe('rollback', function(){ it("Should delete test_table2 and remove value of 20150404071722 from npd_migrations_for_testing", function(done){ migrator.migrator().waitUntilTableActivate("npd_migrations_for_testing") .then(function(){ // 20150819155841_alter_test_table1_2 return migrator.rollback(); }) .then(function(){ // 20150819155840_alter_test_table1 return migrator.rollback(); }) .then(function(){ // 20150819155839_alter_test_table2 return migrator.rollback(); }) .then(function(){ // 20150404071722_create_test_table2 return migrator.rollback(); }) .then(function(){ // wait for the test_table2 deletion return new Promise(function(resolve){ setTimeout(resolve, 2000); }); }) .then(function(){ npd().table('test_table2').describe() .then(function(data){ done(new Error('Here is never called')); }) .catch(function(err){ expect(err.name).to.equal('ResourceNotFoundException'); npd().table('npd_migrations_for_testing').where('version', 20150404071722) .then(function(data){ expect(data.Count).to.equal(0); done(); }); }); }); }); }); });