lpio
Version:
The last dashboard app you'll ever need
111 lines (97 loc) • 3.88 kB
JavaScript
var assert = require("chai").assert;
var Q = require('q');
var request = require('superagent');
var Promise = require('promise');
var agent = require('superagent-promise')(require('superagent'), Promise);
var log = require('../log');
var config = require('../config');
var server = require('../server');
var base_url = "http://localhost:"+config.app_settings.port;
var test_widget_id = null;
describe('LinchPin API',function(){
before(function(done){
server.start()
.then(function(){
done();
});
});
describe('CRUD widget',function(){
it('should be able to create a new widget',function(done){
agent.post(base_url+'/v1/widget',{
name: 'My first widget',
dashboards:[],
html:'',
js:'',
css:''
})
.then(function(response){
log.info({res:response.body});
assert.isObject(response.body);
assert.equal(response.body.status,"ok","Status should be ok");
test_widget_id = response.body.data.id;
assert.isAbove(test_widget_id.length,5,"id should be at least 5 chars:"+test_widget_id);
done();
})
.catch(function(err){
done(err);
})
});
it('should be able to retrieve the widget',function(done){
agent.get(base_url+'/v1/widget/'+test_widget_id)
.then(function(response){
log.info({res:response.body});
assert.isObject(response.body);
assert.isArray(response.body.dashboards);
assert.equal(response.body._id,test_widget_id);
done();
})
.catch(function(err){
done(err);
})
});
it('should be able to update the widget',function(done){
agent.put(base_url+'/v1/widget/'+test_widget_id,{
name:"Another name",
dashboards:[],
html:'',
js:'',
css:''
})
.then(function(response){
log.info({res:response.body});
assert.isObject(response.body);
assert.equal(response.body.status,"ok","Status should be ok");
return agent.get(base_url+'/v1/widget/'+test_widget_id)
})
.then(function(response){
assert.isObject(response.body);
assert.isArray(response.body.dashboards);
assert.equal(response.body._id,test_widget_id);
assert.equal(response.body.name,"Another name");
done();
})
.catch(function(err){
done(err);
})
});
it('should be able to delete the widget',function(done){
agent.del(base_url+'/v1/widget/'+test_widget_id)
.then(function(response){
log.info({res:response.body});
assert.isObject(response.body);
assert.equal(response.body.status,"ok","Status should be ok");
return agent.get(base_url+'/v1/widget/'+test_widget_id)
})
.then(function(response){
done(new Error("Should not be found"));
})
.catch(function(err){
if(err.status == 404){
done();
} else {
done(err);
}
});
});
});
});