[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:
swapnil-verma-gl 2025-02-27 17:20:43 +05:30 committed by GitHub
parent 34c52ac42f
commit 4e33f1126d
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 22 additions and 5 deletions

View File

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

View File

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