mock get request

This commit is contained in:
Julia Gru
2023-07-19 11:56:04 +02:00
parent 1babaff610
commit c36e2f2996
3 changed files with 77 additions and 6 deletions

View File

@@ -1,6 +1,7 @@
import { UmbEntityData } from './entity.data.js';
import { createFileSystemTreeItem } from './utils.js';
import { createFileSystemTreeItem, createTextFileItem } from './utils.js';
import {
CreateTextFileViewModelBaseModel,
FileSystemTreeItemPresentationModel,
PagedFileSystemTreeItemPresentationModel,
PartialViewResponseModel,
@@ -8,10 +9,11 @@ import {
SnippetItemResponseModel,
} from '@umbraco-cms/backoffice/backend-api';
type PartialViewsDataItem = PartialViewResponseModel & FileSystemTreeItemPresentationModel;
type PartialViewsDataItem = PartialViewResponseModel & FileSystemTreeItemPresentationModel & { id: string };
export const treeData: Array<PartialViewsDataItem> = [
{
id: 'blockgrid',
path: 'blockgrid',
isFolder: true,
name: 'blockgrid',
@@ -19,6 +21,7 @@ export const treeData: Array<PartialViewsDataItem> = [
hasChildren: true,
},
{
id: 'blocklist',
path: 'blocklist',
isFolder: true,
name: 'blocklist',
@@ -26,6 +29,7 @@ export const treeData: Array<PartialViewsDataItem> = [
hasChildren: true,
},
{
id: 'grid',
path: 'grid',
isFolder: true,
name: 'grid',
@@ -33,6 +37,7 @@ export const treeData: Array<PartialViewsDataItem> = [
hasChildren: true,
},
{
id: 'blockgrid/area.cshtml',
path: 'blockgrid/area.cshtml',
isFolder: false,
name: 'area.cshtml',
@@ -51,6 +56,7 @@ export const treeData: Array<PartialViewsDataItem> = [
`,
},
{
id: 'blockgrid/items.cshtml',
path: 'blockgrid/items.cshtml',
isFolder: false,
name: 'items.cshtml',
@@ -59,6 +65,7 @@ export const treeData: Array<PartialViewsDataItem> = [
content: '@inherits Umbraco.Cms.Web.Common.Views.UmbracoViewPage',
},
{
id: 'blocklist/default.cshtml',
path: 'blocklist/default.cshtml',
isFolder: false,
name: 'default.cshtml',
@@ -78,7 +85,8 @@ export const treeData: Array<PartialViewsDataItem> = [
`,
},
{
path: 'grid/editors',
id: 'grid/embed.cshtm',
path: 'grid/embed.cshtm',
isFolder: false,
name: 'embed.cshtml',
type: 'partial-view',
@@ -97,6 +105,7 @@ export const treeData: Array<PartialViewsDataItem> = [
`,
},
{
id: 'grid/default.cshtml',
path: 'grid/default.cshtml',
isFolder: false,
name: 'items.cshtml',
@@ -341,4 +350,30 @@ class UmbPartialViewSnippetsData extends UmbEntityData<SnippetItemResponseModel>
}
}
export const umbPartialViewSnippetsData = new UmbPartialViewSnippetsData();
class UmbPartialViewsData extends UmbEntityData<PartialViewResponseModel> {
constructor() {
super(treeData);
}
getPartialView(path: string): PartialViewResponseModel | undefined {
debugger;
return createTextFileItem(this.data.find((item) => item.path === path));
}
insertPartialView(item: CreateTextFileViewModelBaseModel) {
const newItem: PartialViewsDataItem = {
...item,
path: `${item.parentPath}/${item.name}.cshtml}`,
id: `${item.parentPath}/${item.name}.cshtml}`,
isFolder: false,
hasChildren: false,
type: 'partial-view',
};
this.insert(newItem);
return newItem;
}
}
export const umbPartialViewSnippetsData = new UmbPartialViewSnippetsData();
export const umbPartialViewsData = new UmbPartialViewsData();

View File

@@ -7,6 +7,7 @@ import type {
DocumentTypeResponseModel,
FileSystemTreeItemPresentationModel,
DocumentResponseModel,
TextFileResponseModelBaseModel,
} from '@umbraco-cms/backoffice/backend-api';
export const createEntityTreeItem = (item: any): EntityTreeItemResponseModel => {
@@ -73,3 +74,9 @@ export const createFileSystemTreeItem = (item: any): FileSystemTreeItemPresentat
isFolder: item.isFolder,
};
};
export const createTextFileItem = (item: any): TextFileResponseModelBaseModel => ({
path: item.path,
name: item.name,
content: item.content,
});

View File

@@ -1,7 +1,8 @@
const { rest } = window.MockServiceWorker;
import { RestHandler, MockedRequest, DefaultBodyType } from 'msw';
import { umbPartialViewsTreeData } from '../data/partial-views.data.js';
import { umbPartialViewsData, umbPartialViewsTreeData } from '../data/partial-views.data.js';
import { umbracoPath } from '@umbraco-cms/backoffice/utils';
import { CreateTextFileViewModelBaseModel } from '@umbraco-cms/backoffice/backend-api';
const treeHandlers = [
rest.get(umbracoPath('/tree/partial-view/root'), (req, res, ctx) => {
@@ -26,7 +27,35 @@ const treeHandlers = [
}),
];
const detailHandlers: RestHandler<MockedRequest<DefaultBodyType>>[] = [];
const detailHandlers: RestHandler<MockedRequest<DefaultBodyType>>[] = [
rest.get(umbracoPath('/partial-view'), (req, res, ctx) => {
debugger;
const path = decodeURIComponent(req.url.searchParams.get('path') ?? '').replace('-cshtml', '.cshtml');
if (!path) return res(ctx.status(400));
const response = umbPartialViewsData.getPartialView(path);
return res(ctx.status(200), ctx.json(response));
}),
rest.post(umbracoPath('/partial-view'), (req, res, ctx) => {
const requestBody = req.json() as CreateTextFileViewModelBaseModel;
if (!requestBody) return res(ctx.status(400, 'no body found'));
const response = umbPartialViewsData.insertPartialView(requestBody);
return res(ctx.status(200), ctx.json(response));
}),
rest.delete(umbracoPath('/partial-view'), (req, res, ctx) => {
const path = req.url.searchParams.get('path');
if (!path) return res(ctx.status(400));
const response = umbPartialViewsData.delete([path]);
return res(ctx.status(200), ctx.json(response));
}),
rest.put(umbracoPath('/partial-view'), (req, res, ctx) => {
const requestBody = req.json() as CreateTextFileViewModelBaseModel;
if (!requestBody) return res(ctx.status(400, 'no body found'));
const response = umbPartialViewsData.updateData(requestBody);
return res(ctx.status(200));
}),
];
const folderHandlers: RestHandler<MockedRequest<DefaultBodyType>>[] = [];
export const handlers = [...treeHandlers, ...detailHandlers, ...folderHandlers]