Here is the code that works for deleting and recreating the table when I run it in node directly.
// module.exports = function () {
const vogels = require('vogels');
if ( process.env.NODE_ENV === "development") {
vogels.AWS.config.update({ accessKeyId: "myKeyId", secretAccessKey: "secretKey", region: "us-west-2" });
vogels.dynamoDriver(new vogels.AWS.DynamoDB({ endpoint: 'http://localhost:8000' }));
} else if (process.env.NODE_ENV === "test") {
vogels.AWS.config.update({ accessKeyId: "myKeyId", secretAccessKey: "secretKey", region: "us-west-2" });
vogels.dynamoDriver(new vogels.AWS.DynamoDB({ endpoint: 'http://localhost:8001' }));
} else {
vogels.AWS.config.update({accessKeyId: process.env.AWS_ACCESS_KEY, secretAccessKey: process.env.AWS_SECRET_KEY, region: process.env.AWS_REGION});
}
function wait(ms){
var start = new Date().getTime();
var end = start;
while(end < start + ms) {
end = new Date().getTime();
}
}
const DeliveryOrder = require("../api/models/DeliveryOrder");
vogels.createTables({
}, function(err) {
if (err) {
console.log('Error creating tables: ', err);
} else {
console.log('First creation');
DeliveryOrder.deleteTable(function(err) {
if (err) {
console.log('Error deleting table: ', err);
} else {
console.log('Table has been deleted');
vogels.createTables({
}, function(err) {
if (err) {
console.log('Error creating tables: ', err);
} else {
console.log('Tables have been created');
}
});
}
});
}
});
Any code that I write inside the tests which deal with the db directly work only randomly. If I were to assume this is because of the asyncronous nature of javascript, this is how tests are written when we use mongoose(mongoDB). I am slightly at a loss on figuring out what is going on.
The very same code that does not work when I run it in mocha it. Here is the code:
//During the test the env variable is set to test
process.env.NODE_ENV = 'test'; //Just being safe.
let vogels = require('vogels');
// console.log(vogels);
vogels.AWS.config.update({ accessKeyId: "myKeyId", secretAccessKey: "secretKey", region: "us-west-2" });
vogels.dynamoDriver(new vogels.AWS.DynamoDB({ endpoint: 'http://localhost:8001' }));
let chai = require('chai');
let chaiHttp = require('chai-http');
let server = require('../server');
let should = chai.should();
const DeliveryOrder = require("../api/models/DeliveryOrder");
const _ = require('lodash');
chai.use(chaiHttp);
vogels.createTables({
}, function(err) {
if (err) {
console.log('Error creating tables: ', err);
} else {
console.log('First creation');
DeliveryOrder.deleteTable(function(err) {
if (err) {
console.log('Error deleting table: ', err);
} else {
console.log('Table has been deleted');
vogels.createTables({
}, function(err) {
if (err) {
console.log('Error creating tables: ', err);
} else {
console.log('Tables have been created');
}
});
}
});
}
});