@wordpress/e2e-test-utils
Version:
End-To-End (E2E) test utils for WordPress.
121 lines (120 loc) • 3.81 kB
JavaScript
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