mirror of
https://github.com/Alfresco/alfresco-content-app.git
synced 2025-05-12 17:04:46 +00:00
[ACS-9369] Resolved issues where visibility rules with a single element array would log errors (#4416)
* [ACS-9369] Resolved issues where visibility rules with a single element array would log errors * [ACS-9369] Improved rule array filtering logic * [ACS-9369] Added type to variable
This commit is contained in:
parent
34c52ac42f
commit
4e33f1126d
@ -1087,6 +1087,16 @@ describe('AppExtensionService', () => {
|
|||||||
expect(service.evaluateRule('rule1')).toBeTrue();
|
expect(service.evaluateRule('rule1')).toBeTrue();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('should evaluate list of rules', () => {
|
||||||
|
extensions.setEvaluators({
|
||||||
|
rule1: () => true,
|
||||||
|
rule2: () => true,
|
||||||
|
rule3: () => true
|
||||||
|
});
|
||||||
|
|
||||||
|
expect(service.evaluateRule(['rule1', 'rule2', 'rule3'])).toBeTrue();
|
||||||
|
});
|
||||||
|
|
||||||
it('should not evaluate missing rule and return [false] by default', () => {
|
it('should not evaluate missing rule and return [false] by default', () => {
|
||||||
expect(service.evaluateRule('missing')).toBeFalse();
|
expect(service.evaluateRule('missing')).toBeFalse();
|
||||||
});
|
});
|
||||||
|
@ -532,11 +532,18 @@ export class AppExtensionService implements RuleContext {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// todo: move to ADF/RuleService
|
// todo: move to ADF/RuleService
|
||||||
evaluateRule(ruleId: string, ...args: any[]): boolean {
|
evaluateRule(ruleId: string | string[], ...args: any[]): boolean {
|
||||||
const evaluator = this.getEvaluator(ruleId);
|
let evaluatorList: RuleEvaluator[] = [];
|
||||||
|
if (Array.isArray(ruleId)) {
|
||||||
if (evaluator) {
|
evaluatorList = ruleId.filter((rule) => !!this.getEvaluator(rule)).map((rule) => this.getEvaluator(rule));
|
||||||
return evaluator(this, ...args);
|
} else {
|
||||||
|
const evaluator = this.getEvaluator(ruleId);
|
||||||
|
if (evaluator) {
|
||||||
|
evaluatorList.push(evaluator);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (evaluatorList?.length > 0) {
|
||||||
|
return evaluatorList.every((evaluator) => evaluator(this, ...args));
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user