add user group filter mocks

This commit is contained in:
Mads Rasmussen
2024-05-15 14:19:23 +02:00
parent 3c831d1c26
commit 3a3cfb085f
3 changed files with 51 additions and 1 deletions

View File

@@ -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<UmbMockUserGroupModel> {
item = new UmbMockEntityItemManager<UmbMockUserGroupModel>(this, itemMapper);
detail = new UmbMockEntityDetailManager<UmbMockUserGroupModel>(this, createMockMapper, detailResponseMapper);
@@ -48,6 +59,23 @@ export class UmbUserGroupMockDB extends UmbEntityMockDbBase<UmbMockUserGroupMode
// Remove duplicates
return Array.from(new Set(sections));
}
filter(options: UserGroupFilterOptions): PagedUserGroupResponseModel {
const allItems = this.getAll();
const filterOptions: UserGroupFilterOptions = {
skip: options.skip || 0,
take: options.take || 25,
filter: options.filter,
};
const filteredItems = allItems.filter((item) => 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 => {

View File

@@ -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));
}),
];

View File

@@ -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];