diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/browser-handlers.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/browser-handlers.ts index 014a4e8c61..9cc4f46619 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/browser-handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/browser-handlers.ts @@ -1,4 +1,5 @@ import { handlers as dataTypeHandlers } from './domains/data-type.handlers'; +import { handlers as relationTypeHandlers } from './domains/relation-type.handlers'; import { handlers as documentTypeHandlers } from './domains/document-type.handlers'; import { handlers as installHandlers } from './domains/install.handlers'; import * as manifestsHandlers from './domains/manifests.handlers'; @@ -34,6 +35,7 @@ const handlers = [ ...documentHandlers, ...mediaHandlers, ...dataTypeHandlers, + ...relationTypeHandlers, ...documentTypeHandlers, ...telemetryHandlers, ...publishedStatusHandlers, diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/relation-type.handlers.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/relation-type.handlers.ts new file mode 100644 index 0000000000..dd1bb5acd5 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/relation-type.handlers.ts @@ -0,0 +1,72 @@ +import { rest } from 'msw'; +import { umbRelationTypeData } from '../data/relation-type.data'; +import { umbracoPath } from '@umbraco-cms/utils'; + +// TODO: add schema +export const handlers = [ + rest.delete('/umbraco/backoffice/relation-type/:key', async (req, res, ctx) => { + const key = req.params.key as string; + if (!key) return; + + umbRelationTypeData.delete([key]); + + return res(ctx.status(200)); + }), + + rest.get('/umbraco/management/api/v1/tree/relation-type/root', (req, res, ctx) => { + const rootItems = umbRelationTypeData.getTreeRoot(); + const response = { + total: rootItems.length, + items: rootItems, + }; + return res(ctx.status(200), ctx.json(response)); + }), + + rest.get('/umbraco/management/api/v1/tree/relation-type/children', (req, res, ctx) => { + const parentKey = req.url.searchParams.get('parentKey'); + if (!parentKey) return; + + const children = umbRelationTypeData.getTreeItemChildren(parentKey); + + const response = { + total: children.length, + items: children, + }; + + return res(ctx.status(200), ctx.json(response)); + }), + + rest.get('/umbraco/management/api/v1/tree/relation-type/item', (req, res, ctx) => { + const keys = req.url.searchParams.getAll('key'); + if (!keys) return; + const items = umbRelationTypeData.getTreeItem(keys); + return res(ctx.status(200), ctx.json(items)); + }), + + rest.get(umbracoPath('/relation-type/:key'), (req, res, ctx) => { + const key = req.params.key as string; + if (!key) return; + + const RelationType = umbRelationTypeData.getByKey(key); + + return res(ctx.status(200), ctx.json(RelationType)); + }), + + rest.post(umbracoPath('/relation-type/:key'), async (req, res, ctx) => { + const data = await req.json(); + if (!data) return; + + const saved = umbRelationTypeData.save(data); + + return res(ctx.status(200), ctx.json(saved)); + }), + + rest.put(umbracoPath('/relation-type/:key'), async (req, res, ctx) => { + const data = await req.json(); + if (!data) return; + + const saved = umbRelationTypeData.save(data); + + return res(ctx.status(200), ctx.json(saved)); + }), +];