You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
148 lines
5.2 KiB
148 lines
5.2 KiB
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(200)
|
|
.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(200)
|
|
.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);
|
|
});
|
|
});
|
|
|