Skip to content

Instantly share code, notes, and snippets.

@tsongas
Last active August 29, 2015 14:21
Show Gist options
  • Save tsongas/127663aee9c674eb5559 to your computer and use it in GitHub Desktop.
Save tsongas/127663aee9c674eb5559 to your computer and use it in GitHub Desktop.
var chai = require('chai');
var chaiHttp = require('chai-http');
var server = require('../server.js');
var should = chai.should();
var app = server.app;
var storage = server.storage;
chai.use(chaiHttp);
describe('Shopping List', function() {
it('should list items on GET', function(done) {
chai.request(app)
.get('/items')
.end(function(err, res) {
should.equal(err, null);
res.should.have.status(200);
res.should.be.json;
res.body.should.be.a('array');
res.body.should.have.length(3);
res.body[0].should.be.a('object');
res.body[0].should.have.property('id');
res.body[0].should.have.property('name');
res.body[0].id.should.be.a('number');
res.body[0].name.should.be.a('string');
res.body[0].name.should.equal('Broad beans');
res.body[1].name.should.equal('Tomatoes');
res.body[2].name.should.equal('Peppers');
done();
});
});
it('should add an item on post', function(done) {
chai.request(app)
.post('/items')
.send({'name': 'Kale'})
.end(function(err, res) {
should.equal(err, null);
res.should.have.status(201);
res.should.be.json;
res.body.should.be.a('object');
res.body.should.have.property('name');
res.body.should.have.property('id');
res.body.name.should.be.a('string');
res.body.id.should.be.a('number');
res.body.name.should.equal('Kale');
res.body.id.should.equal(3);
storage.items.should.be.a('array');
storage.items.should.have.length(4);
storage.items[3].should.be.a('object');
storage.items[3].should.have.property('id');
storage.items[3].should.have.property('name');
storage.items[3].id.should.be.a('number');
storage.items[3].id.should.equal(3);
storage.items[3].name.should.be.a('string');
storage.items[3].name.should.equal('Kale');
done();
});
});
it('should edit an item on put', function(done) {
chai.request(app)
.put('/items/3')
.send({'name': 'Spork'})
.end(function(err, res) {
should.equal(err, null);
res.should.have.status(200);
res.should.be.json;
res.body.should.be.a('object');
res.body.should.have.property('name');
res.body.should.have.property('id');
res.body.name.should.be.a('string');
res.body.id.should.be.a('number');
res.body.name.should.equal('Spork');
res.body.id.should.equal(3);
storage.items.should.be.a('array');
storage.items.should.have.length(4);
storage.items[3].should.be.a('object');
storage.items[3].should.have.property('id');
storage.items[3].should.have.property('name');
storage.items[3].id.should.be.a('number');
storage.items[3].id.should.equal(3);
storage.items[3].name.should.be.a('string');
storage.items[3].name.should.equal('Spork');
done();
});
});
it('should add a new item on put', function(done) {
chai.request(app)
.put('/items/999')
.send({'name': 'Milkshake'})
.end(function(err, res) {
should.equal(err, null);
res.should.have.status(200);
res.should.be.json;
res.body.should.be.a('object');
res.body.should.have.property('name');
res.body.should.have.property('id');
res.body.name.should.be.a('string');
res.body.id.should.be.a('number');
res.body.name.should.equal('Milkshake');
res.body.id.should.equal(4);
storage.items.should.be.a('array');
storage.items.should.have.length(5);
storage.items[4].should.be.a('object');
storage.items[4].should.have.property('id');
storage.items[4].should.have.property('name');
storage.items[4].id.should.be.a('number');
storage.items[4].id.should.equal(4);
storage.items[4].name.should.be.a('string');
storage.items[4].name.should.equal('Milkshake');
done();
});
});
it('should delete an item on delete', function(done) {
chai.request(app)
.delete('/items/1')
.end(function(err, res) {
should.equal(err, null);
res.should.have.status(200);
res.should.be.json;
res.body.should.be.a('object');
res.body.should.have.property('name');
res.body.should.have.property('id');
res.body.name.should.be.a('string');
res.body.id.should.be.a('number');
res.body.name.should.equal('Tomatoes');
res.body.id.should.equal(1);
storage.items.should.be.a('array');
storage.items.should.have.length(4);
storage.items[0].should.be.a('object');
storage.items[0].should.have.property('id');
storage.items[0].should.have.property('name');
storage.items[0].id.should.be.a('number');
storage.items[0].id.should.equal(0);
storage.items[0].name.should.be.a('string');
storage.items[0].name.should.equal('Broad beans');
storage.items[1].id.should.equal(2);
storage.items[1].name.should.equal('Peppers');
storage.items[2].id.should.equal(3);
storage.items[2].name.should.equal('Spork');
storage.items[3].id.should.equal(4);
storage.items[3].name.should.equal('Milkshake');
done();
});
});
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment