update folder mocks and handlers to new endpoints

This commit is contained in:
Mads Rasmussen
2024-01-08 15:16:30 +01:00
parent 26976b292a
commit b1841a53ad
10 changed files with 88 additions and 65 deletions

View File

@@ -1,8 +1,11 @@
import { UmbFileSystemMockDbBase } from './file-system-base.js';
import { CreatePathFolderRequestModel, PathFolderModelBaseModel } from '@umbraco-cms/backoffice/backend-api';
import {
FileSystemCreateRequestModelBaseModel,
FileSystemResponseModelBaseModel,
} from '@umbraco-cms/backoffice/backend-api';
export class UmbMockFileSystemFolderManager<
MockItemType extends PathFolderModelBaseModel & { path: string; isFolder: boolean },
MockItemType extends FileSystemResponseModelBaseModel & { isFolder: boolean },
> {
#db: UmbFileSystemMockDbBase<MockItemType>;
@@ -10,17 +13,21 @@ export class UmbMockFileSystemFolderManager<
this.#db = db;
}
create(request: CreatePathFolderRequestModel) {
const newFolder: MockItemType = {
path: request.parentPath ? `${request.parentPath}/${request.name}` : request.name,
parenPath: request.parentPath || null,
create(request: FileSystemCreateRequestModelBaseModel) {
const path = request.parentPath ? `${request.parentPath}/${request.name}` : request.name;
const newFolder = {
path,
parent: request.parentPath ? { path: request.parentPath } : null,
name: request.name,
hasChildren: false,
isFolder: true,
content: '',
};
} as unknown as MockItemType;
this.#db.create(newFolder);
return path;
}
read(path: string) {
@@ -39,10 +46,11 @@ export class UmbMockFileSystemFolderManager<
}
}
#defaultReadMapper = (item: MockItemType): PathFolderModelBaseModel & { path: string } => {
#defaultReadMapper = (item: MockItemType): FileSystemResponseModelBaseModel => {
return {
name: item.name,
path: item.path,
name: item.name,
parent: item.parent,
};
};
}

View File

@@ -10,7 +10,7 @@ export const detailHandlers = [
if (!requestBody) return res(ctx.status(400, 'no body found'));
const path = umbPartialViewMockDB.file.create(requestBody);
return res(
ctx.status(200),
ctx.status(201),
ctx.set({
Location: path,
}),

View File

@@ -1,26 +1,32 @@
const { rest } = window.MockServiceWorker;
import { umbPartialViewMockDB } from '../../data/partial-view/partial-view.db.js';
import { UMB_SLUG } from './slug.js';
import { CreatePathFolderRequestModel } from '@umbraco-cms/backoffice/backend-api';
import { CreatePartialViewFolderRequestModel } 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');
rest.post(umbracoPath(`${UMB_SLUG}/folder`), async (req, res, ctx) => {
const requestBody = (await req.json()) as CreatePartialViewFolderRequestModel;
if (!requestBody) return res(ctx.status(400, 'no body found'));
const path = umbPartialViewMockDB.folder.create(requestBody);
return res(
ctx.status(201),
ctx.set({
Location: path,
}),
);
}),
rest.get(umbracoPath(`${UMB_SLUG}/folder/:path`), (req, res, ctx) => {
const path = req.params.path as string;
if (!path) return res(ctx.status(400));
const response = umbPartialViewMockDB.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'));
umbPartialViewMockDB.folder.create(requestBody);
return res(ctx.status(200));
}),
rest.delete(umbracoPath(`${UMB_SLUG}/folder`), (req, res, ctx) => {
const path = req.url.searchParams.get('path');
rest.delete(umbracoPath(`${UMB_SLUG}/folder/:path`), (req, res, ctx) => {
const path = req.params.path as string;
if (!path) return res(ctx.status(400));
umbPartialViewMockDB.folder.delete(path);
return res(ctx.status(200));

View File

@@ -31,7 +31,7 @@ const detailHandlers: RestHandler<MockedRequest<DefaultBodyType>>[] = [
if (!requestBody) return res(ctx.status(400, 'no body found'));
const path = umbPartialViewMockDB.file.create(requestBody);
return res(
ctx.status(200),
ctx.status(201),
ctx.set({
Location: path,
}),

View File

@@ -10,7 +10,7 @@ export const detailHandlers = [
if (!requestBody) return res(ctx.status(400, 'no body found'));
const path = umbScriptMockDb.file.create(requestBody);
return res(
ctx.status(200),
ctx.status(201),
ctx.set({
Location: path,
}),

View File

@@ -1,26 +1,32 @@
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 { CreateScriptFolderRequestModel } 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');
rest.post(umbracoPath(`${UMB_SLUG}/folder`), async (req, res, ctx) => {
const requestBody = (await req.json()) as CreateScriptFolderRequestModel;
if (!requestBody) return res(ctx.status(400, 'no body found'));
const path = umbScriptMockDb.folder.create(requestBody);
return res(
ctx.status(201),
ctx.set({
Location: path,
}),
);
}),
rest.get(umbracoPath(`${UMB_SLUG}/folder/:path`), (req, res, ctx) => {
const path = req.params.path as string;
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');
rest.delete(umbracoPath(`${UMB_SLUG}/folder/:path`), (req, res, ctx) => {
const path = req.params.path as string;
if (!path) return res(ctx.status(400));
umbScriptMockDb.folder.delete(path);
return res(ctx.status(200));

View File

@@ -10,7 +10,7 @@ export const detailHandlers = [
if (!requestBody) return res(ctx.status(400, 'no body found'));
const path = umbStylesheetData.file.create(requestBody);
return res(
ctx.status(200),
ctx.status(201),
ctx.set({
Location: path,
}),

View File

@@ -1,26 +1,33 @@
const { rest } = window.MockServiceWorker;
import { umbStylesheetData } from '../../data/stylesheet/stylesheet.db.js';
import { UMB_SLUG } from './slug.js';
import { CreatePathFolderRequestModel } from '@umbraco-cms/backoffice/backend-api';
import { CreateStylesheetFolderRequestModel } 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');
rest.post(umbracoPath(`${UMB_SLUG}/folder`), async (req, res, ctx) => {
const requestBody = (await req.json()) as CreateStylesheetFolderRequestModel;
if (!requestBody) return res(ctx.status(400, 'no body found'));
const path = umbStylesheetData.folder.create(requestBody);
return res(
ctx.status(201),
ctx.set({
Location: path,
}),
);
}),
rest.get(umbracoPath(`${UMB_SLUG}/folder/:path`), (req, res, ctx) => {
const path = req.params.path as string;
if (!path) return res(ctx.status(400));
const response = umbStylesheetData.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'));
umbStylesheetData.folder.create(requestBody);
return res(ctx.status(200));
}),
rest.delete(umbracoPath(`${UMB_SLUG}/folder`), (req, res, ctx) => {
const path = req.url.searchParams.get('path');
rest.delete(umbracoPath(`${UMB_SLUG}/folder/:path`), (req, res, ctx) => {
const path = req.params.path as string;
if (!path) return res(ctx.status(400));
umbStylesheetData.folder.delete(path);
return res(ctx.status(200));

View File

@@ -36,7 +36,7 @@ export class UmbScriptFolderServerDataSource implements UmbFolderDataSource {
const { data, error } = await tryExecuteAndNotify(
this.#host,
ScriptResource.getScriptFolder({
ScriptResource.getScriptFolderByPath({
path,
}),
);
@@ -44,7 +44,7 @@ export class UmbScriptFolderServerDataSource implements UmbFolderDataSource {
if (data) {
const mappedData = {
unique: this.#serverPathUniqueSerializer.toUnique(data.path),
parentUnique: this.#serverPathUniqueSerializer.toParentUnique(data.path),
parentUnique: data.parent ? this.#serverPathUniqueSerializer.toUnique(data.parent.path) : null,
name: data.name,
};
@@ -71,17 +71,15 @@ export class UmbScriptFolderServerDataSource implements UmbFolderDataSource {
name: args.name,
};
const { error } = await tryExecuteAndNotify(
const { data, error } = await tryExecuteAndNotify(
this.#host,
ScriptResource.postScriptFolder({
requestBody,
}),
);
if (!error) {
/* TODO: investigate why we don't get the location header as part of data,
so we don't have to construct the path ourselves */
const newPath = parentPath ? `${parentPath}/${args.name}` : args.name;
if (data) {
const newPath = this.#serverPathUniqueSerializer.toUnique(data);
return this.read(newPath);
}
@@ -101,7 +99,7 @@ export class UmbScriptFolderServerDataSource implements UmbFolderDataSource {
return tryExecuteAndNotify(
this.#host,
ScriptResource.deleteScriptFolder({
ScriptResource.deleteScriptFolderByPath({
path,
}),
);

View File

@@ -36,7 +36,7 @@ export class UmbStylesheetFolderServerDataSource implements UmbFolderDataSource
const { data, error } = await tryExecuteAndNotify(
this.#host,
StylesheetResource.getStylesheetFolder({
StylesheetResource.getStylesheetFolderByPath({
path,
}),
);
@@ -44,7 +44,7 @@ export class UmbStylesheetFolderServerDataSource implements UmbFolderDataSource
if (data) {
const mappedData = {
unique: this.#serverPathUniqueSerializer.toUnique(data.path),
parentUnique: this.#serverPathUniqueSerializer.toParentUnique(data.path),
parentUnique: data.parent ? this.#serverPathUniqueSerializer.toUnique(data.parent.path) : null,
name: data.name,
};
@@ -71,17 +71,15 @@ export class UmbStylesheetFolderServerDataSource implements UmbFolderDataSource
name: args.name,
};
const { error } = await tryExecuteAndNotify(
const { data, error } = await tryExecuteAndNotify(
this.#host,
StylesheetResource.postStylesheetFolder({
requestBody,
}),
);
if (!error) {
/* TODO: investigate why we don't get the location header as part of data,
so we don't have to construct the path ourselves */
const newPath = parentPath ? `${parentPath}/${args.name}` : args.name;
if (data) {
const newPath = this.#serverPathUniqueSerializer.toUnique(data);
return this.read(newPath);
}
@@ -101,7 +99,7 @@ export class UmbStylesheetFolderServerDataSource implements UmbFolderDataSource
return tryExecuteAndNotify(
this.#host,
StylesheetResource.deleteStylesheetFolder({
StylesheetResource.deleteStylesheetFolderByPath({
path,
}),
);