methods/urlRedirections/saveUrlRedirectionTest.js

import FormData from 'form-data'
import { buildAPIUrl, buildAuthHeader } from '../../utils'

/**
 * Saves a URL Redirection Test
 * @memberof AgilityManagement.Client.UrlRedirections
 * @param {Object} requestParams - The paramaters for the API request.

 * @param {Number} requestParams.urlRedirectionID - The id of the redirection.
 * @param {Boolean} requestParams.passed - Whether the test passed or not
 * @param {String} requestParams.testResult - A string representing the test result in human readable form.
 * @returns {Promise} - No return value.
 * @example
 *
 * import agilityMgmt from '@agility/content-management'
 *
 * #Create a new instance API client
 * const api = agilityMgmt.getApi({
 *   location: 'MyLocation',
 *   websiteName: 'MyWebsiteName',
 *   securityKey: 'MySecurityKey'
 * });
 *
 * api.saveUrlRedirectionTest({
 *  urlRedirectionID: urlRedirectionIDtoUpdate,
 *  passed: true,
 *  testResult: "- 301 to /dest-url"
 * })
 * .then(function() {
 * 	 console.log("updated test");
 * })
 * .catch(function(error) {
 *  #handle error
 * });
 *
 *
*/

function saveUrlRedirectionTest(requestParams) {

	validateRequestParams(requestParams);

	let testStatus = 1; //fail
	if (requestParams.passed === true) testStatus = 2;

	const args = {
		"urlRedirectionID": requestParams.urlRedirectionID
	}

	const methodName = "SaveUrlRedirectionTest";

	const form = new FormData()
	form.append("testResult", requestParams.testResult);
	form.append("testStatus", testStatus)


	const req = {
		url: buildAPIUrl({ methodName, args }),
		method: 'post',
		baseURL: this.config.baseURL,
		headers: { ... buildAuthHeader({config:this.config, methodName, args}), ... form.getHeaders() },
		data: form
	};

	return this.makeRequest(req);
}

function validateRequestParams(requestParams) {
	if (!requestParams.urlRedirectionID) {
		throw new TypeError('You must include a urlRedirectionID in your request params.')
	} else if (requestParams.urlRedirectionID < 1) {
		throw new TypeError('You must include a urlRedirectionID greater than 0 in your request params.')
	} else if (! requestParams.testResult) {
		throw new TypeError('You must include a testResult string in your request params.')
	} else if (! (requestParams.passed === true || requestParams.passed === false)) {
		throw new TypeError('You must include a true or false value for passed in your request params.')
	} else {
		return;
	}
}

export default saveUrlRedirectionTest;