Created
May 5, 2020 08:50
-
-
Save CITGuru/19f5bafd2a6b94087accdb62f6a0c2b2 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const chai = require("chai"); | |
const chaiHttp = require("chai-http"); | |
const expect = chai.expect | |
const baseUrl = "https://store-ordering-api.herokuapp.com" | |
// const baseUrl = "localhost:3200/" | |
chai.use(chaiHttp); | |
describe("Food Ordering API Unit Test", function(){ | |
var token; | |
it('request a token', function(done) { | |
chai.request(baseUrl) | |
.post('/request-token') | |
.end(function (err, res) { | |
expect(res).to.have.status(201); | |
expect(res.body).to.have.property("token"); | |
token = res.body.token; | |
done(); | |
}); | |
}); | |
var orderId; | |
var orderBody = { | |
"name":"Sandine (Milo)", | |
"customer_email":"[email protected]", | |
"customer_name":"Oyetoke Toby", | |
"quantity":5, | |
"customer_address": "Aboru, Lagos" | |
}; | |
it('create a new order', function(done) { | |
chai.request(baseUrl) | |
.post('/new_order') | |
.set("authorization", "Basic "+token) | |
.send(orderBody) | |
.end(function (err, res) { | |
expect(res).to.have.status(200); | |
expect(res.body).to.have.property("data"); | |
expect(res.body.message).to.equal("Order created successfully"); | |
expect(res.body.data.name).to.equal(orderBody.name); | |
expect(res.body.data.quantity).to.equal(orderBody.quantity); | |
orderId = res.body.data._id; | |
done(); | |
}); | |
}); | |
it('get an order', function(done) { | |
chai.request(baseUrl) | |
.get('/orders/'+orderId) | |
.set("authorization", "Basic "+token) | |
.end(function (err, res) { | |
expect(res).to.have.status(200); | |
expect(res.body).to.have.property("_id"); | |
expect(res.body._id).to.equal(orderId); | |
expect(res.body.name).to.equal(orderBody.name); | |
expect(res.body.quantity).to.equal(orderBody.quantity); | |
done(); | |
}); | |
}); | |
it('get all orders', function(done) { | |
chai.request(baseUrl) | |
.get('/orders') | |
.set("authorization", "Basic "+token) | |
.end(function (err, res) { | |
expect(res).to.have.status(200); | |
expect(res.body).to.be.an("array"); | |
const order = res.body.find(o=>o._id==orderId) | |
expect(order).to.be.an("object") | |
expect(order).to.have.property("_id") | |
done(); | |
}); | |
}); | |
var updateOrderBody = { | |
"status": "cancelled" | |
} | |
it('update an order', function(done) { | |
chai.request(baseUrl) | |
.put('/orders/'+orderId) | |
.set("authorization", "Basic "+token) | |
.send(updateOrderBody) | |
.end(function (err, res) { | |
expect(res).to.have.status(200); | |
expect(res.body).to.have.property("data"); | |
expect(res.body.message).to.equal("Updated Succesfully"); | |
expect(res.body.data.status).to.equal(updateOrderBody.status); | |
done(); | |
}); | |
}); | |
it('delete an order', function(done) { | |
chai.request(baseUrl) | |
.delete('/orders/'+orderId) | |
.set("authorization", "Basic "+token) | |
.end(function (err, res) { | |
expect(res).to.have.status(200); | |
expect(res.body).to.have.property("message"); | |
expect(res.body.message).to.equal("Deleted Succesfully"); | |
chai.request(baseUrl) | |
.get('/orders/'+orderId) | |
.set("authorization", "Basic "+token) | |
.end(function (err, res) { | |
expect(res).to.have.status(404); | |
expect(res.body).to.have.property("message"); | |
expect(res.body.message).to.equal("Order not found"); | |
done(); | |
}); | |
}); | |
}); | |
it('filter orders', function(done) { | |
const myToken = "0f8ae605-24b5-4ecf-b260-777a9ba490f5" | |
chai.request(baseUrl) | |
.get('/orders/filter?status=completed') | |
.set("authorization", "Basic "+myToken) | |
.end(function (err, res) { | |
expect(res).to.have.status(200); | |
expect(res.body).to.be.an("array"); | |
res.body.forEach((order)=>{ | |
expect(order.status).to.be.equal("completed") | |
}) | |
done(); | |
}); | |
}) | |
}) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment