Skip to content

Instantly share code, notes, and snippets.

@lindslev
Created January 20, 2015 16:46
Show Gist options
  • Select an option

  • Save lindslev/3553b24158213ec0b96a to your computer and use it in GitHub Desktop.

Select an option

Save lindslev/3553b24158213ec0b96a to your computer and use it in GitHub Desktop.
'use strict';
var should = require('should');
var app = require('../../app');
var supertest = require('supertest');
var agent = supertest.agent(app);
var mongoose = require('mongoose');
var HelpTicket = mongoose.model('HelpTicket');
var ticketId;
var User = require('../user/user.model.js');
var user = new User();
var ticket = {
description: 'test help ticket',
requestor: new User({email: 'foo@bar'}),
};
var LoginHelper = require('../../components/login.controller.specHelper.js');
function createHelpTicket() {
return function(done) {
HelpTicket.create(ticket, function(err, ht) {
if(err) return done(err);
ticketId = ht._id;
done();
})
}
}
describe('help tickets',function() {
var session = new LoginHelper(agent, before)
describe('GET all help tickets - /api/helptickets', function() {
it('should respond with JSON array', function(done) {
agent
.get('/api/helptickets')
.set(session.auth)
.expect(200)
.expect('Content-Type', /json/)
.end(function(err, res) {
if (err) return done(err);
res.body.should.be.instanceof(Array);
done();
});
});
});
describe('POST a new help ticket - /api/helptickets', function() {
it('should respond with JSON object', function(done) {
agent
.post('/api/helptickets')
.set(session.auth)
.send(ticket)
.expect(201)
.expect('Content-Type', /json/)
.end(function(err, res) {
if (err) return done(err);
res.body.should.be.instanceof(Object);
res.body.status.should.equal('open');
done();
});
});
});
describe('get a single help ticket - /api/helptickets/:id', function() {
before(createHelpTicket());
it('should respond with JSON object', function(done) {
agent
.get('/api/helptickets/'+ticketId)
.set(session.auth)
.expect('Content-Type', /json/)
.expect(200)
.end(function(err, res) {
if (err) return done(err);
res.body.should.be.instanceof(Object);
done();
});
});
});
describe('assign a single help ticket - /api/helptickets/:id/assign', function() {
before(createHelpTicket());
it('should respond with an assigned help ticket', function(done) {
agent
.put('/api/helptickets/'+ticketId + '/assign')
.set(session.auth)
.send({responder: user})
.expect(200)
.expect('Content-Type', /json/)
.end(function(err, res) {
if (err) return done(err);
res.body.should.be.instanceof(Object);
done();
});
});
});
describe('resolve a single help ticket - /api/helptickets/:id/resolve', function() {
before(createHelpTicket());
it('should respond with the resolved help ticket', function(done) {
agent
.put('/api/helptickets/'+ticketId + '/resolve')
.set(session.auth)
.send({status: 'resolved', closeTime: Date.now()})
.expect(200)
.expect('Content-Type', /json/)
.end(function(err, res) {
if (err) return done(err);
res.body.should.be.instanceof(Object);
res.body.status.should.equal('resolved');
done();
});
});
});
describe('delete a single help ticket - /api/helptickets/:id', function() {
before(createHelpTicket());
it('should respond with 204 status', function(done) {
agent
.delete('/api/helptickets/'+ticketId)
.set(session.auth)
.expect(204)
.end(function(err, res) {
if (err) return done(err);
done();
});
});
});
})
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment