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();
|
||||
});
|
||||
|
||||
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', () => {
|
||||
expect(service.evaluateRule('missing')).toBeFalse();
|
||||
});
|
||||
|
@ -532,11 +532,18 @@ export class AppExtensionService implements RuleContext {
|
||||
}
|
||||
|
||||
// todo: move to ADF/RuleService
|
||||
evaluateRule(ruleId: string, ...args: any[]): boolean {
|
||||
const evaluator = this.getEvaluator(ruleId);
|
||||
|
||||
if (evaluator) {
|
||||
return evaluator(this, ...args);
|
||||
evaluateRule(ruleId: string | string[], ...args: any[]): boolean {
|
||||
let evaluatorList: RuleEvaluator[] = [];
|
||||
if (Array.isArray(ruleId)) {
|
||||
evaluatorList = ruleId.filter((rule) => !!this.getEvaluator(rule)).map((rule) => this.getEvaluator(rule));
|
||||
} else {
|
||||
const evaluator = this.getEvaluator(ruleId);
|
||||
if (evaluator) {
|
||||
evaluatorList.push(evaluator);
|
||||
}
|
||||
}
|
||||
if (evaluatorList?.length > 0) {
|
||||
return evaluatorList.every((evaluator) => evaluator(this, ...args));
|
||||
}
|
||||
|
||||
return false;
|
||||
|
Loading…
x
Reference in New Issue
Block a user