diff --git a/tests/e2e/api-core-tests/endpoints/index.js b/tests/e2e/api-core-tests/endpoints/index.js index 859f9042e43..1b36341726a 100644 --- a/tests/e2e/api-core-tests/endpoints/index.js +++ b/tests/e2e/api-core-tests/endpoints/index.js @@ -1,7 +1,9 @@ const { ordersApi } = require('./orders'); const { couponsApi } = require('./coupons'); +const { productsApi } = require('./products'); module.exports = { ordersApi, couponsApi, + productsApi, }; diff --git a/tests/e2e/api-core-tests/endpoints/products.js b/tests/e2e/api-core-tests/endpoints/products.js new file mode 100644 index 00000000000..c7b1b9a730c --- /dev/null +++ b/tests/e2e/api-core-tests/endpoints/products.js @@ -0,0 +1,62 @@ +/** + * Internal dependencies + */ +const { getRequest, postRequest, putRequest, deleteRequest } = require('../utils/request'); + +/** + * WooCommerce Products endpoints. + * + * https://woocommerce.github.io/woocommerce-rest-api-docs/#products + */ +const productsApi = { + name: 'Products', + create: { + name: 'Create a product', + method: 'POST', + path: 'products', + responseCode: 201, + product: async ( productDetails ) => postRequest( 'products', productDetails ), + }, + retrieve: { + name: 'Retrieve a product', + method: 'GET', + path: 'products/', + responseCode: 200, + product: async ( productId ) => getRequest( `products/${productId}` ), + }, + listAll: { + name: 'List all products', + method: 'GET', + path: 'products', + responseCode: 200, + products: async ( productsQuery = {} ) => getRequest( 'products', productsQuery ), + }, + update: { + name: 'Update a product', + method: 'PUT', + path: 'products/', + responseCode: 200, + product: async ( productId, productDetails ) => putRequest( `products/${productId}`, productDetails ), + }, + delete: { + name: 'Delete a product', + method: 'DELETE', + path: 'products/', + responseCode: 200, + payload: { + force: false + }, + product: async ( productId, deletePermanently ) => deleteRequest( `products/${productId}`, deletePermanently ), + }, + batch: { + name: 'Batch update products', + method: 'POST', + path: 'products/batch', + responseCode: 200, + products: async ( batchUpdatePayload ) => postRequest( `products/batch`, batchUpdatePayload ), + }, +}; + +module.exports = { + productsApi, +};