From 3a3cfb085fb6f98e192b93d78a6aeb9acb3fc8d1 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Wed, 15 May 2024 14:19:23 +0200 Subject: [PATCH] add user group filter mocks --- .../mocks/data/user-group/user-group.db.ts | 28 +++++++++++++++++++ .../handlers/user-group/filter.handlers.ts | 21 ++++++++++++++ .../src/mocks/handlers/user-group/index.ts | 3 +- 3 files changed, 51 insertions(+), 1 deletion(-) create mode 100644 src/Umbraco.Web.UI.Client/src/mocks/handlers/user-group/filter.handlers.ts diff --git a/src/Umbraco.Web.UI.Client/src/mocks/data/user-group/user-group.db.ts b/src/Umbraco.Web.UI.Client/src/mocks/data/user-group/user-group.db.ts index e7583a88a7..60d8f4fbf2 100644 --- a/src/Umbraco.Web.UI.Client/src/mocks/data/user-group/user-group.db.ts +++ b/src/Umbraco.Web.UI.Client/src/mocks/data/user-group/user-group.db.ts @@ -1,3 +1,4 @@ +import { queryFilter } from '../utils.js'; import { UmbEntityMockDbBase } from '../utils/entity/entity-base.js'; import { UmbMockEntityDetailManager } from '../utils/entity/entity-detail.manager.js'; import { UmbMockEntityItemManager } from '../utils/entity/entity-item.manager.js'; @@ -6,12 +7,22 @@ import { data } from './user-group.data.js'; import type { CreateUserGroupRequestModel, DocumentPermissionPresentationModel, + PagedUserGroupResponseModel, UnknownTypePermissionPresentationModel, UserGroupItemResponseModel, UserGroupResponseModel, } from '@umbraco-cms/backoffice/external/backend-api'; import { UmbId } from '@umbraco-cms/backoffice/id'; +interface UserGroupFilterOptions { + skip: number; + take: number; + filter: string; +} + +const userGroupQueryFilter = (filterOptions: UserGroupFilterOptions, item: UmbMockUserGroupModel) => + queryFilter(filterOptions.filter, item.name); + export class UmbUserGroupMockDB extends UmbEntityMockDbBase { item = new UmbMockEntityItemManager(this, itemMapper); detail = new UmbMockEntityDetailManager(this, createMockMapper, detailResponseMapper); @@ -48,6 +59,23 @@ export class UmbUserGroupMockDB extends UmbEntityMockDbBase userGroupQueryFilter(filterOptions, item)); + const totalItems = filteredItems.length; + + const paginatedItems = filteredItems.slice(filterOptions.skip, filterOptions.skip + filterOptions.take); + + return { total: totalItems, items: paginatedItems }; + } } const itemMapper = (item: UmbMockUserGroupModel): UserGroupItemResponseModel => { diff --git a/src/Umbraco.Web.UI.Client/src/mocks/handlers/user-group/filter.handlers.ts b/src/Umbraco.Web.UI.Client/src/mocks/handlers/user-group/filter.handlers.ts new file mode 100644 index 0000000000..931b80e094 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/mocks/handlers/user-group/filter.handlers.ts @@ -0,0 +1,21 @@ +const { rest } = window.MockServiceWorker; +import { umbUserGroupMockDb } from '../../data/user-group/user-group.db.js'; +import { UMB_SLUG } from './slug.js'; +import { umbracoPath } from '@umbraco-cms/backoffice/utils'; + +export const handlers = [ + rest.get(umbracoPath(`/filter${UMB_SLUG}`), (req, res, ctx) => { + const skip = Number(req.url.searchParams.get('skip')); + const take = Number(req.url.searchParams.get('take')); + const filter = req.url.searchParams.get('filter'); + + const options: any = { + skip: skip || undefined, + take: take || undefined, + filter: filter || undefined, + }; + + const response = umbUserGroupMockDb.filter(options); + return res(ctx.status(200), ctx.json(response)); + }), +]; diff --git a/src/Umbraco.Web.UI.Client/src/mocks/handlers/user-group/index.ts b/src/Umbraco.Web.UI.Client/src/mocks/handlers/user-group/index.ts index 8432caafdd..aa9f26c37e 100644 --- a/src/Umbraco.Web.UI.Client/src/mocks/handlers/user-group/index.ts +++ b/src/Umbraco.Web.UI.Client/src/mocks/handlers/user-group/index.ts @@ -1,4 +1,5 @@ import { detailHandlers } from './detail.handlers.js'; import { itemHandlers } from './item.handlers.js'; +import { handlers as filterHandlers } from './filter.handlers.js'; -export const handlers = [...itemHandlers, ...detailHandlers]; +export const handlers = [...itemHandlers, ...filterHandlers, ...detailHandlers];