Browse Source

add unit tests

master
Nicolas Massé 8 years ago
parent
commit
4a0afc0df8
  1. 6
      package.json
  2. 148
      test/specs.js

6
package.json

@ -3,8 +3,7 @@
"version": "0.0.1",
"description": "A simple API Mockup tool",
"main": "server.js",
"scripts": {
},
"scripts": {},
"author": "Nicolas MASSE",
"repository": "https://github.com/nmasse-itix/API-Mockup.git",
"license": "MIT",
@ -12,5 +11,8 @@
"body-parser": "^1.17.2",
"express": "latest",
"underscore": "^1.8.3"
},
"devDependencies": {
"supertest": "^3.0.0"
}
}

148
test/specs.js

@ -0,0 +1,148 @@
const request = require('supertest');
const assert = require('assert');
describe('server.js tests', function () {
var server = require("../server.js");
it("JSON Home", (done) => {
request(server)
.get('/')
.expect('Content-Type', /^application[/]json/)
.expect(200)
.expect((res) => {
assert.ok(res.body instanceof Object, "body is Object");
assert.ok(res.body.documentation instanceof Object, "body.documentation is Object");
assert.ok(res.body.documentation.GitHub != null, "body.documentation has a GitHub field");
assert.ok(res.body.name != null, "body.name is not null");
assert.ok(res.body.description != null, "body.description is not null");
assert.ok(res.body.endpoints instanceof Object, "body.endpoints is Object");
})
.end(done);
});
it("Default config", (done) => {
request(server)
.get('/config')
.expect('Content-Type', /^application[/]json/)
.expect(200)
.expect((res) => {
assert.ok(res.body instanceof Object, "body is Object");
assert.ok(res.body.things instanceof Object, "body.things is Object");
assert.ok(res.body.things.fields instanceof Object, "body.things.fields has fields");
assert.ok('name' in res.body.things.fields, "body.things.fields has a field named 'name'");
assert.ok('price' in res.body.things.fields, "body.things.fields has a field named 'price'");
})
.end(done);
});
it("By default, the list of things is empty", (done) => {
request(server)
.get('/things/')
.expect('Content-Type', /^application[/]json/)
.expect(200)
.expect((res) => {
assert.ok(res.body instanceof Array, "body is Array");
assert.equal(res.body.length, 0, "body has no item");
})
.end(done);
});
var id = null;
it("We can create a new thing", (done) => {
request(server)
.post('/things/')
.set('Content-Type', "application/json")
.send({ name: "Cat", price: 10 })
.expect('Content-Type', /^application[/]json/)
.expect(201)
.expect((res) => {
assert.ok(res.body instanceof Object, "body is Object");
assert.ok('id' in res.body, "the body contains an id");
id = res.body.id;
})
.end(done);
});
it("The new thing is in the list of things", (done) => {
request(server)
.get('/things/')
.expect('Content-Type', /^application[/]json/)
.expect(200)
.expect((res) => {
assert.ok(res.body instanceof Array, "body is Array");
assert.equal(res.body.length, 1, "body has one item");
assert.equal(res.body[0].name, "Cat", "item[0].name == cat");
assert.equal(res.body[0].price, 10, "item[0].price == 10");
assert.equal(res.body[0].id, id, "ids should be equal");
})
.end(done);
});
it("Query the things by id", (done) => {
request(server)
.get('/things/' + encodeURIComponent(id) + '/')
.expect('Content-Type', /^application[/]json/)
.expect(200)
.expect((res) => {
assert.ok(res.body instanceof Object, "body is Object");
assert.equal(res.body.name, "Cat", "item.name == cat");
assert.equal(res.body.price, 10, "item.price == 10");
assert.equal(res.body.id, id, "ids should be equal");
})
.end(done);
});
it("We can update the thing", (done) => {
request(server)
.put('/things/' + encodeURIComponent(id) + '/')
.set('Content-Type', "application/json")
.send({ name: "Dog", price: 9, id: id })
.expect('Content-Type', /^application[/]json/)
.expect(202)
.expect((res) => {
assert.equal(res.body.name, "Dog", "item.name == dog");
assert.equal(res.body.price, 9, "item.price == 9");
assert.equal(res.body.id, id, "ids should be equal");
})
.end(done);
});
it("Query the things by id and check updated fields", (done) => {
request(server)
.get('/things/' + encodeURIComponent(id) + '/')
.expect('Content-Type', /^application[/]json/)
.expect(200)
.expect((res) => {
assert.ok(res.body instanceof Object, "body is Object");
assert.equal(res.body.name, "Dog", "item.name == dog");
assert.equal(res.body.price, 9, "item.price == 9");
assert.equal(res.body.id, id, "ids should be equal");
})
.end(done);
});
it("We can delete the thing", (done) => {
request(server)
.delete('/things/' + encodeURIComponent(id) + '/')
.expect('Content-Type', /^application[/]json/)
.expect(202)
.expect((res) => {
assert.equal(res.body.name, "Dog", "item.name == dog");
assert.equal(res.body.price, 9, "item.price == 9");
assert.equal(res.body.id, id, "ids should be equal");
})
.end(done);
});
it("Query the things by id and check it has been deleted", (done) => {
request(server)
.get('/things/' + encodeURIComponent(id) + '/')
.expect('Content-Type', /^application[/]json/)
.expect(404)
.expect((res) => {
assert.ok(res.body instanceof Object, "body is Object");
assert.equal(res.body.status, 404, "body.status == 404");
})
.end(done);
});
});
Loading…
Cancel
Save