Skip to content

Commit

Permalink
feat: improve the function based mockdata (#129)
Browse files Browse the repository at this point in the history
* feat: improve the function based mockdata

* fix: small adjustment for tests

* chore: improve code quality

* Update sour-points-rush.md
  • Loading branch information
nlunets authored Jun 7, 2022
1 parent 3e3b257 commit 32c6142
Show file tree
Hide file tree
Showing 19 changed files with 815 additions and 376 deletions.
6 changes: 6 additions & 0 deletions .changeset/sour-points-rush.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
'@sap-ux/fe-mockserver-core': minor
'@sap-ux/ui5-middleware-fe-mockserver': minor
---

Improve the function based mockdata API
31 changes: 24 additions & 7 deletions packages/fe-mockserver-core/src/data/common.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@ import type { IFileLoader } from '../index';

export interface EntitySetInterface {
checkKeyValue(mockData: object, keyValues: object, keyName: string, keyProp?: Property): boolean;
checkFilter(mockData: object, filterExpression: any, tenantId: string): boolean;
checkSearch(mockData: object, searchQueries: string[]): boolean;
checkFilter(mockData: object, filterExpression: any, tenantId: string, odataRequest: ODataRequest): boolean;
checkSearch(mockData: object, searchQueries: string[], odataRequest: ODataRequest): boolean;
executeAction(
actionDefinition: Action,
actionData: object | undefined,
Expand All @@ -19,12 +19,29 @@ export interface EntitySetInterface {
keyValues: KeyDefinitions,
asArray: boolean,
tenantId: string,
dontClone?: boolean,
odataRequest?: ODataRequest
odataRequest: ODataRequest,
dontClone?: boolean
): Promise<any>;
performPOST(
keyValues: KeyDefinitions,
postData: any,
tenantId: string,
odataRequest: ODataRequest,
_updateParent?: boolean
): Promise<any>;
performPATCH(
keyValues: KeyDefinitions,
patchData: object,
tenantId: string,
odataRequest: ODataRequest,
_updateParent?: boolean
): Promise<any>;
performPOST(keyValues: KeyDefinitions, postData: any, tenantId: string, _updateParent?: boolean): Promise<any>;
performPATCH(keyValues: KeyDefinitions, patchData: object, tenantId: string, _updateParent?: boolean): Promise<any>;
performDELETE(keyValues: KeyDefinitions, tenantId: string, _updateParent?: boolean): Promise<void>;
performDELETE(
keyValues: KeyDefinitions,
tenantId: string,
odataRequest: ODataRequest,
_updateParent?: boolean
): Promise<void>;
getParentEntityInterface(tenantId: string): Promise<FileBasedMockData | undefined>;
getEntityInterface(entitySetName: string, tenantId: string): Promise<FileBasedMockData | undefined>;
getMockData(tenantId: string): FileBasedMockData;
Expand Down
23 changes: 15 additions & 8 deletions packages/fe-mockserver-core/src/data/dataAccess.ts
Original file line number Diff line number Diff line change
Expand Up @@ -339,7 +339,8 @@ export class DataAccess implements DataAccessInterface {
requestExpandObject: Record<string, ExpandDefinition>,
tenantId: string,
previousEntitySet: EntitySet | Singleton | undefined,
visitedPaths: string[]
visitedPaths: string[],
odataRequest: ODataRequest
) {
if (data === null) {
return;
Expand All @@ -361,7 +362,7 @@ export class DataAccess implements DataAccessInterface {
if (navProp && !navProp.containsTarget) {
let expandData = dataLine[expandNavProp];
if (!expandData) {
expandData = navEntitySet.performGET(currentKeys, navProp.isCollection, tenantId);
expandData = navEntitySet.performGET(currentKeys, navProp.isCollection, tenantId, odataRequest);
dataLine[expandNavProp] = expandData;
}
const expandDetail = requestExpandObject[expandNavProp];
Expand All @@ -376,7 +377,8 @@ export class DataAccess implements DataAccessInterface {
expandDetail.expand,
tenantId,
targetEntitySet,
[]
[],
odataRequest
);
})
);
Expand Down Expand Up @@ -579,7 +581,7 @@ export class DataAccess implements DataAccessInterface {
targetContainedEntityType,
targetContainedData
)
).performGET(currentKeys, asArray, odataRequest.tenantId, dontClone, odataRequest);
).performGET(currentKeys, asArray, odataRequest.tenantId, odataRequest, dontClone);
},
Promise.resolve({})
);
Expand Down Expand Up @@ -626,7 +628,8 @@ export class DataAccess implements DataAccessInterface {
odataRequest.expandProperties,
odataRequest.tenantId,
previousEntitySet,
visitedPaths
visitedPaths,
odataRequest
);
})
);
Expand All @@ -639,14 +642,14 @@ export class DataAccess implements DataAccessInterface {
currentEntitySet ? currentEntitySet.name : currentEntityType.name
);
data = data.filter((dataLine) => {
return mockEntitySet.checkFilter(dataLine, filterDef, odataRequest.tenantId);
return mockEntitySet.checkFilter(dataLine, filterDef, odataRequest.tenantId, odataRequest);
});
}
// Apply $search
if (odataRequest.searchQuery && Array.isArray(data)) {
const mockEntitySet = await this.getMockEntitySet(currentEntityType.name);
data = data.filter((dataLine) => {
return mockEntitySet.checkSearch(dataLine, odataRequest.searchQuery);
return mockEntitySet.checkSearch(dataLine, odataRequest.searchQuery, odataRequest);
});
}

Expand Down Expand Up @@ -880,6 +883,7 @@ export class DataAccess implements DataAccessInterface {
odataRequest.queryPath[0].keys,
patchData,
odataRequest.tenantId,
odataRequest,
true
);
}
Expand All @@ -899,6 +903,7 @@ export class DataAccess implements DataAccessInterface {
odataRequest.queryPath[0].keys,
false,
odataRequest.tenantId,
odataRequest,
true
);

Expand Down Expand Up @@ -932,6 +937,7 @@ export class DataAccess implements DataAccessInterface {
currentKeys,
postData,
odataRequest.tenantId,
odataRequest,
true
);
} else {
Expand All @@ -953,6 +959,7 @@ export class DataAccess implements DataAccessInterface {
currentKeys,
postData,
odataRequest.tenantId,
odataRequest,
true
);
odataRequest.setContext(`../$metadata#${entitySet.name}/$entity`);
Expand All @@ -972,7 +979,7 @@ export class DataAccess implements DataAccessInterface {
public async deleteData(odataRequest: ODataRequest) {
const entitySetName = odataRequest.queryPath[0].path;
const mockEntitySet = await this.getMockEntitySet(entitySetName);
return mockEntitySet.performDELETE(odataRequest.queryPath[0].keys, odataRequest.tenantId, true);
return mockEntitySet.performDELETE(odataRequest.queryPath[0].keys, odataRequest.tenantId, odataRequest, true);
}
public async getDraftRoot(keyValues: KeyDefinitions, _tenantId: string, entitySetDefinition: EntitySet) {
let data = {};
Expand Down
Loading

0 comments on commit 32c6142

Please sign in to comment.