UNPKG

@wordpress/e2e-test-utils

Version:
121 lines (120 loc) 3.81 kB
var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __hasOwnProp = Object.prototype.hasOwnProperty; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); var menus_exports = {}; __export(menus_exports, { createMenu: () => createMenu, deleteAllMenus: () => deleteAllMenus }); module.exports = __toCommonJS(menus_exports); var import_rest_api = require("./rest-api"); const menusEndpoint = "/wp/v2/menus"; const menuItemsEndpoint = "/wp/v2/menu-items"; const menuItemObjectRequests = { post: (menuItem) => ({ path: "/wp/v2/posts", method: "POST", data: { title: menuItem.title, status: "publish" } }), page: (menuItem) => ({ path: "/wp/v2/pages", method: "POST", data: { title: menuItem.title, status: "publish" } }) }; const menuItemObjectMatchers = { post: (menuItem, post) => menuItem.title === post.title.raw, page: (menuItem, page) => menuItem.title === page.title.raw }; async function deleteAllMenus() { const menus = await (0, import_rest_api.rest)({ path: menusEndpoint }); await (0, import_rest_api.batch)( menus.map((menu) => ({ method: "DELETE", path: `${menusEndpoint}/${menu.id}?force=true` })) ); } async function createMenu(menu, menuItems) { const menuResponse = await (0, import_rest_api.rest)({ method: "POST", path: menusEndpoint, data: menu }); if (!menuItems?.length) { return; } const objectRequests = menuItems.map((menuItem) => { const getRequest = menuItemObjectRequests[menuItem.object]; return getRequest ? getRequest(menuItem) : void 0; }).filter((request) => !!request); const objectResponses = []; for (const objectRequest of objectRequests) { const objectResponse = await (0, import_rest_api.rest)(objectRequest); objectResponses.push(objectResponse); } const menuItemsResponse = await (0, import_rest_api.batch)( menuItems.map((menuItem) => { const objectMatcher = menuItemObjectMatchers[menuItem.object]; let object; if (objectMatcher) { object = objectResponses.find( (objectResponse) => objectMatcher(menuItem, objectResponse) ); } return { method: "POST", path: menuItemsEndpoint, body: { menus: menuResponse.id, object_id: object?.id, url: object?.link, ...menuItem, parent: void 0 } }; }) ); await (0, import_rest_api.batch)( menuItems.map((menuItem, index) => { const fixtureParentIndex = menuItem?.parent !== void 0; if (!fixtureParentIndex) { return void 0; } const parent = menuItemsResponse.responses[menuItem.parent].body.id; const menuItemResponse = menuItemsResponse.responses[index]; const menuItemId = menuItemResponse.body.id; return { method: "PUT", path: `${menuItemsEndpoint}/${menuItemId}`, body: { ...menuItemResponse.body, parent } }; }).filter((request) => !!request) ); } // Annotate the CommonJS export names for ESM import in node: 0 && (module.exports = { createMenu, deleteAllMenus }); //# sourceMappingURL=menus.js.map