diff --git a/src/Umbraco.Web.UI.Client/src/mocks/browser-handlers.ts b/src/Umbraco.Web.UI.Client/src/mocks/browser-handlers.ts index 7f077a5b6a..dc2ad83479 100644 --- a/src/Umbraco.Web.UI.Client/src/mocks/browser-handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/mocks/browser-handlers.ts @@ -32,7 +32,7 @@ import { handlers as stylesheetHandlers } from './handlers/stylesheet/index.js'; import { handlers as partialViewsHandlers } from './handlers/partial-views.handlers.js'; import { handlers as tagHandlers } from './handlers/tag-handlers.js'; import { handlers as configHandlers } from './handlers/config.handlers.js'; -import { handlers as scriptHandlers } from './handlers/script.handlers.js'; +import { handlers as scriptHandlers } from './handlers/script/index.js'; const handlers = [ serverHandlers.serverVersionHandler, diff --git a/src/Umbraco.Web.UI.Client/src/mocks/handlers/script.handlers.ts b/src/Umbraco.Web.UI.Client/src/mocks/handlers/script.handlers.ts deleted file mode 100644 index d50b96005f..0000000000 --- a/src/Umbraco.Web.UI.Client/src/mocks/handlers/script.handlers.ts +++ /dev/null @@ -1,92 +0,0 @@ -const { rest } = window.MockServiceWorker; -import { RestHandler, MockedRequest, DefaultBodyType } from 'msw'; -import { umbScriptMockDb } from '../data/script/script.db.js'; -import { umbracoPath } from '@umbraco-cms/backoffice/utils'; -import { - CreatePathFolderRequestModel, - CreateScriptRequestModel, - UpdateScriptRequestModel, -} from '@umbraco-cms/backoffice/backend-api'; - -const treeHandlers = [ - rest.get(umbracoPath('/tree/script/root'), (req, res, ctx) => { - const response = umbScriptMockDb.tree.getRoot(); - return res(ctx.status(200), ctx.json(response)); - }), - - rest.get(umbracoPath('/tree/script/children'), (req, res, ctx) => { - const path = req.url.searchParams.get('path'); - if (!path) return res(ctx.status(400)); - const response = umbScriptMockDb.tree.getChildrenOf(path); - return res(ctx.status(200), ctx.json(response)); - }), -]; - -const detailHandlers: RestHandler>[] = [ - rest.get(umbracoPath('/script'), (req, res, ctx) => { - const path = req.url.searchParams.get('path'); - if (!path) return res(ctx.status(400)); - const response = umbScriptMockDb.file.read(path); - return res(ctx.status(200), ctx.json(response)); - }), - - rest.post(umbracoPath('/script'), async (req, res, ctx) => { - const requestBody = (await req.json()) as CreateScriptRequestModel; - if (!requestBody) return res(ctx.status(400, 'no body found')); - const path = umbScriptMockDb.file.create(requestBody); - return res( - ctx.status(200), - ctx.set({ - Location: path, - }), - ); - }), - - rest.delete(umbracoPath('/script'), (req, res, ctx) => { - const path = req.url.searchParams.get('path'); - if (!path) return res(ctx.status(400)); - umbScriptMockDb.file.delete(path); - return res(ctx.status(200)); - }), - - rest.put(umbracoPath('/script'), async (req, res, ctx) => { - const requestBody = (await req.json()) as UpdateScriptRequestModel; - if (!requestBody) return res(ctx.status(400, 'no body found')); - umbScriptMockDb.file.update(requestBody); - return res(ctx.status(200)); - }), -]; - -const itemHandlers: RestHandler>[] = [ - rest.get(umbracoPath('/script/item'), (req, res, ctx) => { - const paths = req.url.searchParams.getAll('paths'); - if (!paths) return res(ctx.status(400, 'no body found')); - const response = umbScriptMockDb.item.getItems(paths); - return res(ctx.status(200), ctx.json(response)); - }), -]; - -const folderHandlers: RestHandler>[] = [ - rest.get(umbracoPath('/script/folder'), (req, res, ctx) => { - const path = req.url.searchParams.get('path'); - if (!path) return res(ctx.status(400)); - const response = umbScriptMockDb.folder.read(path); - return res(ctx.status(200), ctx.json(response)); - }), - - rest.post(umbracoPath('/script/folder'), async (req, res, ctx) => { - const requestBody = (await req.json()) as CreatePathFolderRequestModel; - if (!requestBody) return res(ctx.status(400, 'no body found')); - umbScriptMockDb.folder.create(requestBody); - return res(ctx.status(200)); - }), - - rest.delete(umbracoPath('/script/folder'), (req, res, ctx) => { - const path = req.url.searchParams.get('path'); - if (!path) return res(ctx.status(400)); - umbScriptMockDb.folder.delete(path); - return res(ctx.status(200)); - }), -]; - -export const handlers = [...treeHandlers, ...detailHandlers, ...itemHandlers, ...folderHandlers]; diff --git a/src/Umbraco.Web.UI.Client/src/mocks/handlers/script/detail.handlers.ts b/src/Umbraco.Web.UI.Client/src/mocks/handlers/script/detail.handlers.ts new file mode 100644 index 0000000000..8c19307adc --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/mocks/handlers/script/detail.handlers.ts @@ -0,0 +1,42 @@ +const { rest } = window.MockServiceWorker; +import { umbScriptMockDb } from '../../data/script/script.db.js'; +import { UMB_SLUG } from './slug.js'; +import { CreateStylesheetRequestModel, UpdateStylesheetRequestModel } from '@umbraco-cms/backoffice/backend-api'; +import { umbracoPath } from '@umbraco-cms/backoffice/utils'; + +export const detailHandlers = [ + rest.post(umbracoPath(UMB_SLUG), async (req, res, ctx) => { + const requestBody = (await req.json()) as CreateStylesheetRequestModel; + if (!requestBody) return res(ctx.status(400, 'no body found')); + const path = umbScriptMockDb.file.create(requestBody); + return res( + ctx.status(200), + ctx.set({ + Location: path, + }), + ); + }), + + rest.get(umbracoPath(`${UMB_SLUG}/:path`), (req, res, ctx) => { + const path = req.params.path as string; + if (!path) return res(ctx.status(400)); + const response = umbScriptMockDb.file.read(path); + return res(ctx.status(200), ctx.json(response)); + }), + + rest.delete(umbracoPath(`${UMB_SLUG}/:path`), (req, res, ctx) => { + const path = req.params.path as string; + if (!path) return res(ctx.status(400)); + umbScriptMockDb.file.delete(path); + return res(ctx.status(200)); + }), + + rest.put(umbracoPath(`${UMB_SLUG}/:path`), async (req, res, ctx) => { + const path = req.params.path as string; + if (!path) return res(ctx.status(400)); + const requestBody = (await req.json()) as UpdateStylesheetRequestModel; + if (!requestBody) return res(ctx.status(400, 'no body found')); + umbScriptMockDb.file.update(path, requestBody); + return res(ctx.status(200)); + }), +]; diff --git a/src/Umbraco.Web.UI.Client/src/mocks/handlers/script/folder.handlers.ts b/src/Umbraco.Web.UI.Client/src/mocks/handlers/script/folder.handlers.ts new file mode 100644 index 0000000000..7d07a1a6e9 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/mocks/handlers/script/folder.handlers.ts @@ -0,0 +1,28 @@ +const { rest } = window.MockServiceWorker; +import { umbScriptMockDb } from '../../data/script/script.db.js'; +import { UMB_SLUG } from './slug.js'; +import { CreatePathFolderRequestModel } from '@umbraco-cms/backoffice/backend-api'; +import { umbracoPath } from '@umbraco-cms/backoffice/utils'; + +export const folderHandlers = [ + rest.get(umbracoPath(`${UMB_SLUG}/folder`), (req, res, ctx) => { + const path = req.url.searchParams.get('path'); + if (!path) return res(ctx.status(400)); + const response = umbScriptMockDb.folder.read(path); + return res(ctx.status(200), ctx.json(response)); + }), + + rest.post(umbracoPath(`${UMB_SLUG}/folder`), async (req, res, ctx) => { + const requestBody = (await req.json()) as CreatePathFolderRequestModel; + if (!requestBody) return res(ctx.status(400, 'no body found')); + umbScriptMockDb.folder.create(requestBody); + return res(ctx.status(200)); + }), + + rest.delete(umbracoPath(`${UMB_SLUG}/folder`), (req, res, ctx) => { + const path = req.url.searchParams.get('path'); + if (!path) return res(ctx.status(400)); + umbScriptMockDb.folder.delete(path); + return res(ctx.status(200)); + }), +]; diff --git a/src/Umbraco.Web.UI.Client/src/mocks/handlers/script/index.ts b/src/Umbraco.Web.UI.Client/src/mocks/handlers/script/index.ts new file mode 100644 index 0000000000..d2877a2ff7 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/mocks/handlers/script/index.ts @@ -0,0 +1,6 @@ +import { folderHandlers } from './folder.handlers.js'; +import { treeHandlers } from './tree.handlers.js'; +import { detailHandlers } from './detail.handlers.js'; +import { itemHandlers } from './item.handlers.js'; + +export const handlers = [...treeHandlers, ...itemHandlers, ...folderHandlers, ...detailHandlers]; diff --git a/src/Umbraco.Web.UI.Client/src/mocks/handlers/script/item.handlers.ts b/src/Umbraco.Web.UI.Client/src/mocks/handlers/script/item.handlers.ts new file mode 100644 index 0000000000..9af1b7bc39 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/mocks/handlers/script/item.handlers.ts @@ -0,0 +1,13 @@ +const { rest } = window.MockServiceWorker; +import { umbScriptMockDb } from '../../data/script/script.db.js'; +import { UMB_SLUG } from './slug.js'; +import { umbracoPath } from '@umbraco-cms/backoffice/utils'; + +export const itemHandlers = [ + rest.get(umbracoPath(`${UMB_SLUG}/item`), (req, res, ctx) => { + const paths = req.url.searchParams.getAll('paths'); + if (!paths) return res(ctx.status(400, 'no body found')); + const items = umbScriptMockDb.item.getItems(paths); + return res(ctx.status(200), ctx.json(items)); + }), +]; diff --git a/src/Umbraco.Web.UI.Client/src/mocks/handlers/script/slug.ts b/src/Umbraco.Web.UI.Client/src/mocks/handlers/script/slug.ts new file mode 100644 index 0000000000..98125fd55d --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/mocks/handlers/script/slug.ts @@ -0,0 +1 @@ +export const UMB_SLUG = '/script'; diff --git a/src/Umbraco.Web.UI.Client/src/mocks/handlers/script/tree.handlers.ts b/src/Umbraco.Web.UI.Client/src/mocks/handlers/script/tree.handlers.ts new file mode 100644 index 0000000000..06b9ba886d --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/mocks/handlers/script/tree.handlers.ts @@ -0,0 +1,18 @@ +const { rest } = window.MockServiceWorker; +import { umbScriptMockDb } from '../../data/script/script.db.js'; +import { UMB_SLUG } from './slug.js'; +import { umbracoPath } from '@umbraco-cms/backoffice/utils'; + +export const treeHandlers = [ + rest.get(umbracoPath(`/tree${UMB_SLUG}/root`), (req, res, ctx) => { + const response = umbScriptMockDb.tree.getRoot(); + return res(ctx.status(200), ctx.json(response)); + }), + + rest.get(umbracoPath(`/tree${UMB_SLUG}/children`), (req, res, ctx) => { + const path = req.url.searchParams.get('path'); + if (!path) return res(ctx.status(400)); + const response = umbScriptMockDb.tree.getChildrenOf(path); + return res(ctx.status(200), ctx.json(response)); + }), +]; diff --git a/src/Umbraco.Web.UI.Client/src/mocks/handlers/stylesheet/item.handlers.ts b/src/Umbraco.Web.UI.Client/src/mocks/handlers/stylesheet/item.handlers.ts index 46129a69c9..de53cda151 100644 --- a/src/Umbraco.Web.UI.Client/src/mocks/handlers/stylesheet/item.handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/mocks/handlers/stylesheet/item.handlers.ts @@ -1,9 +1,10 @@ const { rest } = window.MockServiceWorker; import { umbStylesheetData } from '../../data/stylesheet/stylesheet.db.js'; +import { UMB_SLUG } from './slug.js'; import { umbracoPath } from '@umbraco-cms/backoffice/utils'; export const itemHandlers = [ - rest.get(umbracoPath('/stylesheet/item'), (req, res, ctx) => { + rest.get(umbracoPath(`${UMB_SLUG}/item`), (req, res, ctx) => { const paths = req.url.searchParams.getAll('paths'); if (!paths) return res(ctx.status(400, 'no body found')); const items = umbStylesheetData.item.getItems(paths);