freeCodeCamp/curriculum/challenges/english/06-quality-assurance/quality-assurance-and-testi.../run-functional-tests-on-an-...

3.2 KiB

id title challengeType forumTopicId
587d824f367417b2b2512c5b Run Functional Tests on an API Response using Chai-HTTP IV - PUT method 2 301591

--description--

As a reminder, this project is being built upon the following starter project on Repl.it, or cloned from GitHub. This exercise is similar to the preceding one. Look at it for the details.

Now that you have seen how it is done, it is your turn to do it from scratch.

--instructions--

Within tests/2_functional-tests.js, alter the 'send {surname: "da Verrazzano"}' test (// #4):

Send the following JSON response as a payload to the /travellers route:

{
  "surname": "da Verrazzano"
}

Check for the following, within a request.end callback:

  1. status
  2. type
  3. body.name
  4. body.surname

Follow the assertion order above - we rely on it. Be sure to remove assert.fail(), once complete.

--hints--

All tests should pass

(getUserInput) =>
  $.get(getUserInput('url') + '/_api/get-tests?type=functional&n=3').then(
    (data) => {
      assert.equal(data.state, 'passed');
    },
    (xhr) => {
      throw new Error(xhr.responseText);
    }
  );

You should test for 'res.status' to be 200

(getUserInput) =>
  $.get(getUserInput('url') + '/_api/get-tests?type=functional&n=3').then(
    (data) => {
      assert.equal(data.assertions[0].method, 'equal');
      assert.equal(data.assertions[0].args[0], 'res.status');
      assert.equal(data.assertions[0].args[1], '200');
    },
    (xhr) => {
      throw new Error(xhr.responseText);
    }
  );

You should test for 'res.type' to be 'application/json'

(getUserInput) =>
  $.get(getUserInput('url') + '/_api/get-tests?type=functional&n=3').then(
    (data) => {
      assert.equal(data.assertions[1].method, 'equal');
      assert.equal(data.assertions[1].args[0], 'res.type');
      assert.match(data.assertions[1].args[1], /('|")application\/json\1/);
    },
    (xhr) => {
      throw new Error(xhr.responseText);
    }
  );

You should test for 'res.body.name' to be 'Giovanni'

(getUserInput) =>
  $.get(getUserInput('url') + '/_api/get-tests?type=functional&n=3').then(
    (data) => {
      assert.equal(data.assertions[2].method, 'equal');
      assert.equal(data.assertions[2].args[0], 'res.body.name');
      assert.match(data.assertions[2].args[1], /('|")Giovanni\1/);
    },
    (xhr) => {
      throw new Error(xhr.responseText);
    }
  );

You should test for 'res.body.surname' to be 'da Verrazzano'

(getUserInput) =>
  $.get(getUserInput('url') + '/_api/get-tests?type=functional&n=3').then(
    (data) => {
      assert.equal(data.assertions[3].method, 'equal');
      assert.equal(data.assertions[3].args[0], 'res.body.surname');
      assert.match(data.assertions[3].args[1], /('|")da Verrazzano\1/);
    },
    (xhr) => {
      throw new Error(xhr.responseText);
    }
  );

--seed--

--solutions--

/**
  Backend challenges don't need solutions, 
  because they would need to be tested against a full working project. 
  Please check our contributing guidelines to learn more.
*/