add user group filter mocks
This commit is contained in:
@@ -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 => {
|
||||
|
||||
@@ -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));
|
||||
}),
|
||||
];
|
||||
@@ -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];
|
||||
|
||||
Reference in New Issue
Block a user