Jamie Curnow 3 settimane fa
parent
commit
9b7af474bb

+ 45 - 29
test/cypress/plugins/backendApi/client.js → test/cypress/plugins/backendApi/client.mjs

@@ -1,9 +1,9 @@
-const logger  = require('./logger');
-const axios = require('axios').default;
+import axios from "axios";
+import logger from "./logger.mjs";
 
-const BackendApi = function(config, token) {
+const BackendApi = function (config, token) {
 	this.config = config;
-	this.token  = token;
+	this.token = token;
 
 	this.axios = axios.create({
 		baseURL: config.baseUrl,
@@ -14,26 +14,24 @@ const BackendApi = function(config, token) {
 /**
  * @param {string} token
  */
-BackendApi.prototype.setToken = function(token) {
+BackendApi.prototype.setToken = function (token) {
 	this.token = token;
 };
 
 /**
  * @param {bool} returnOnError
  */
-BackendApi.prototype._prepareOptions = function(returnOnError) {
-	let options = {
+BackendApi.prototype._prepareOptions = function (returnOnError) {
+	const options = {
 		headers: {
-			Accept: 'application/json'
-		}
-	}
+			Accept: "application/json",
+		},
+	};
 	if (this.token) {
-		options.headers.Authorization = 'Bearer ' + this.token;
+		options.headers.Authorization = `Bearer ${this.token}`;
 	}
 	if (returnOnError) {
-		options.validateStatus = function () {
-			return true;
-		}
+		options.validateStatus = () => true;
 	}
 	return options;
 };
@@ -44,13 +42,30 @@ BackendApi.prototype._prepareOptions = function(returnOnError) {
  * @param {function} reject
  * @param {bool} returnOnError
  */
-BackendApi.prototype._handleResponse = function(response, resolve, reject, returnOnError) {
-	logger('Response data:', response.data);
-	if (!returnOnError && typeof response.data === 'object' && typeof response.data.error === 'object') {
-		if (typeof response.data === 'object' && typeof response.data.error === 'object' && typeof response.data.error.message !== 'undefined') {
-			reject(new Error(response.data.error.code + ': ' + response.data.error.message));
+BackendApi.prototype._handleResponse = (
+	response,
+	resolve,
+	reject,
+	returnOnError,
+) => {
+	logger("Response data:", response.data);
+	if (
+		!returnOnError &&
+		typeof response.data === "object" &&
+		typeof response.data.error === "object"
+	) {
+		if (
+			typeof response.data === "object" &&
+			typeof response.data.error === "object" &&
+			typeof response.data.error.message !== "undefined"
+		) {
+			reject(
+				new Error(
+					`${response.data.error.code}: ${response.data.error.message}`,
+				),
+			);
 		} else {
-			reject(new Error('Error ' + response.status));
+			reject(new Error(`Error ${response.status}`));
 		}
 	} else {
 		resolve(response.data);
@@ -63,10 +78,10 @@ BackendApi.prototype._handleResponse = function(response, resolve, reject, retur
  * @param {function} reject
  * @param {bool} returnOnError
  */
-BackendApi.prototype._handleError = function(err, resolve, reject, returnOnError) {
-	logger('Axios Error:', err);
+BackendApi.prototype._handleError = (err, resolve, reject, returnOnError) => {
+	logger("Axios Error:", err);
 	if (returnOnError) {
-		resolve(typeof err.response.data !== 'undefined' ? err.response.data : err);
+		resolve(typeof err.response.data !== "undefined" ? err.response.data : err);
 	} else {
 		reject(err);
 	}
@@ -84,11 +99,11 @@ BackendApi.prototype.request = function (method, path, returnOnError, data) {
 	const options = this._prepareOptions(returnOnError);
 
 	return new Promise((resolve, reject) => {
-		let opts = {
+		const opts = {
 			method: method,
 			url: path,
-			...options
-		}
+			...options,
+		};
 		if (data !== undefined && data !== null) {
 			opts.data = data;
 		}
@@ -110,16 +125,17 @@ BackendApi.prototype.request = function (method, path, returnOnError, data) {
  * @returns {Promise<object>}
  */
 BackendApi.prototype.postForm = function (path, form, returnOnError) {
-	logger('POST', this.config.baseUrl + path);
+	logger("POST", this.config.baseUrl + path);
 	const options = this._prepareOptions(returnOnError);
 
 	return new Promise((resolve, reject) => {
 		const opts = {
 			...options,
 			...form.getHeaders(),
-		}
+		};
 
-		this.axios.post(path, form, opts)
+		this.axios
+			.post(path, form, opts)
 			.then((response) => {
 				this._handleResponse(response, resolve, reject, returnOnError);
 			})

+ 0 - 7
test/cypress/plugins/backendApi/logger.js

@@ -1,7 +0,0 @@
-const _ = require("lodash");
-
-module.exports = function() {
-	let arr = _.values(arguments);
-	arr.unshift('[Backend API]');
-	console.log.apply(null, arr);
-};

+ 7 - 0
test/cypress/plugins/backendApi/logger.mjs

@@ -0,0 +1,7 @@
+import _ from "lodash";
+
+export default () => {
+	const arr = _.values(arguments);
+	arr.unshift('[Backend API]');
+	console.log.apply(null, arr);
+};

+ 30 - 14
test/cypress/plugins/backendApi/task.js → test/cypress/plugins/backendApi/task.mjs

@@ -1,13 +1,12 @@
-const fs     = require('fs');
-const FormData = require('form-data');
-const logger = require('./logger');
-const Client = require('./client');
+import fs from "node:fs";
+import FormData from "form-data";
+import Client from "./client.mjs";
+import logger from "./logger.mjs";
 
-module.exports = function (config) {
-	logger('Client Ready using', config.baseUrl);
+export default (config) => {
+	logger("Client Ready using", config.baseUrl);
 
 	return {
-
 		/**
 		 * @param   {object}    options
 		 * @param   {string}    options.path         API path
@@ -18,7 +17,7 @@ module.exports = function (config) {
 		backendApiGet: (options) => {
 			const api = new Client(config);
 			api.setToken(options.token);
-			return api.request('get', options.path, options.returnOnError || false);
+			return api.request("get", options.path, options.returnOnError || false);
 		},
 
 		/**
@@ -32,7 +31,12 @@ module.exports = function (config) {
 		backendApiPost: (options) => {
 			const api = new Client(config);
 			api.setToken(options.token);
-			return api.request('post', options.path, options.returnOnError || false, options.data);
+			return api.request(
+				"post",
+				options.path,
+				options.returnOnError || false,
+				options.data,
+			);
 		},
 
 		/**
@@ -48,8 +52,11 @@ module.exports = function (config) {
 			api.setToken(options.token);
 
 			const form = new FormData();
-			for (let [key, value] of Object.entries(options.files)) {
-				form.append(key, fs.createReadStream(config.fixturesFolder + '/' + value));
+			for (const [key, value] of Object.entries(options.files)) {
+				form.append(
+					key,
+					fs.createReadStream(`${config.fixturesFolder}/${value}`),
+				);
 			}
 			return api.postForm(options.path, form, options.returnOnError || false);
 		},
@@ -65,7 +72,12 @@ module.exports = function (config) {
 		backendApiPut: (options) => {
 			const api = new Client(config);
 			api.setToken(options.token);
-			return api.request('put', options.path, options.returnOnError || false, options.data);
+			return api.request(
+				"put",
+				options.path,
+				options.returnOnError || false,
+				options.data,
+			);
 		},
 
 		/**
@@ -78,7 +90,11 @@ module.exports = function (config) {
 		backendApiDelete: (options) => {
 			const api = new Client(config);
 			api.setToken(options.token);
-			return api.request('delete', options.path, options.returnOnError || false);
-		}
+			return api.request(
+				"delete",
+				options.path,
+				options.returnOnError || false,
+			);
+		},
 	};
 };

+ 15 - 9
test/cypress/plugins/index.mjs

@@ -1,20 +1,26 @@
-import { SwaggerValidation } from '@jc21/cypress-swagger-validation';
-import chalk from 'chalk';
+import { SwaggerValidation } from "@jc21/cypress-swagger-validation";
+import chalk from "chalk";
+import backendTask from "./backendApi/task.mjs";
 
 export default (on, config) => {
 	// Replace swaggerBase config var wildcard
-	if (typeof config.env.swaggerBase !== 'undefined') {
-		config.env.swaggerBase = config.env.swaggerBase.replace('{{baseUrl}}', config.baseUrl);
+	if (typeof config.env.swaggerBase !== "undefined") {
+		config.env.swaggerBase = config.env.swaggerBase.replace(
+			"{{baseUrl}}",
+			config.baseUrl,
+		);
 	}
 
 	// Plugin Events
-	on('task', SwaggerValidation(config));
-	on('task', require('./backendApi/task')(config));
-	on('task', {
+	on("task", SwaggerValidation(config));
+	on("task", backendTask(config));
+	on("task", {
 		log(message) {
-			console.log(`${chalk.cyan.bold('[')}${chalk.blue.bold('LOG')}${chalk.cyan.bold(']')} ${chalk.red.bold(message)}`);
+			console.log(
+				`${chalk.cyan.bold("[")}${chalk.blue.bold("LOG")}${chalk.cyan.bold("]")} ${chalk.red.bold(message)}`,
+			);
 			return null;
-		}
+		},
 	});
 
 	return config;

+ 0 - 0
test/cypress/support/commands.js → test/cypress/support/commands.mjs


+ 1 - 1
test/cypress/support/e2e.js

@@ -1,4 +1,4 @@
-import './commands';
+import './commands.mjs';
 
 Cypress.on('uncaught:exception', (/*err, runnable*/) => {
 	// returning false here prevents Cypress from

+ 5 - 1
test/jsconfig.json

@@ -4,6 +4,10 @@
 		"cypress/**/*.js",
 		"cypress/config/dev.mjs",
 		"cypress/config/ci.mjs",
-		"cypress/plugins/index.mjs"
+		"cypress/plugins/index.mjs",
+		"cypress/plugins/backendApi/task.mjs",
+		"cypress/plugins/backendApi/logger.mjs",
+		"cypress/plugins/backendApi/client.mjs",
+		"cypress/support/commands.mjs"
 	]
 }