Run Functional Tests on an API Response using Chai-HTTP III - PUT method
Problem Explanation
To begin, open the file “tests/2_functional_tests.js” and locate the test ‘send {surname: “Colombo”}’
Hints
Hint 1
Using the example above, look at the assertions and how they are making comparisons between the expected and actual values of the response
Hint 2
You need to use .send() to attach the payload {surname: 'Colombo'}
to the request
Hint 3
Replace the assert.fail()
statement with your own tests checking for status, type, body.name, and body.surname in that order. Remember, all of these values are contained in the response (res
), and you should expect the response to be of type 'application/json'
.
Solutions
Solution 1 (Click to Show/Hide)
test('send {surname: "Colombo"}', function(done) {
// we setup the request for you...
chai
.request(server)
.put('/travellers')
/** send {surname: 'Colombo'} here **/
.send({ surname: 'Colombo' })
// .send({...})
.end(function(err, res) {
/** your tests here **/
assert.equal(res.status, 200, 'response status should be 200');
assert.equal(res.type, 'application/json', 'Response should be json');
assert.equal(
res.body.name,
'Cristoforo',
'res.body.name should be "Christoforo"'
);
assert.equal(
res.body.surname,
'Colombo',
'res.body.surname should be "Colombo"'
);
done(); // Never forget the 'done()' callback...
});
});