mirror of
https://github.com/Alfresco/alfresco-ng2-components.git
synced 2025-06-30 18:15:11 +00:00
Fix reules event filtering when no form is provided (#7592)
This commit is contained in:
parent
039f167b75
commit
6174f8e100
@ -26,6 +26,7 @@ import { FormModel } from '../components/widgets/core/form.model';
|
|||||||
import { FormRulesEvent } from '../events/form-rules.event';
|
import { FormRulesEvent } from '../events/form-rules.event';
|
||||||
import { FormEvent } from '../events/form.event';
|
import { FormEvent } from '../events/form.event';
|
||||||
import { FormService } from '../services/form.service';
|
import { FormService } from '../services/form.service';
|
||||||
|
import { getTestScheduler } from 'jasmine-marbles';
|
||||||
|
|
||||||
class CustomRuleManager extends FormRulesManager<any> {
|
class CustomRuleManager extends FormRulesManager<any> {
|
||||||
protected getRules() {
|
protected getRules() {
|
||||||
@ -76,20 +77,36 @@ describe('Form Rules', () => {
|
|||||||
expect(customRuleManager.initialize).toHaveBeenCalled();
|
expect(customRuleManager.initialize).toHaveBeenCalled();
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should send the form loaded event when initialized', async (done) => {
|
it('should send the form loaded event when initialized', () => {
|
||||||
const rulesManager = new CustomRuleManager(formService);
|
const rulesManager = new CustomRuleManager(formService);
|
||||||
const getRulesSpy = spyOn<any>(rulesManager, 'getRules').and.returnValue({});
|
const getRulesSpy = spyOn<any>(rulesManager, 'getRules').and.returnValue({});
|
||||||
|
const handleRuleEventSpy = spyOn<any>(rulesManager, 'handleRuleEvent');
|
||||||
const formModel = new FormModel({ id: 'mock' }, {}, false);
|
const formModel = new FormModel({ id: 'mock' }, {}, false);
|
||||||
const formEvent = new FormEvent(formModel);
|
const formEvent = new FormEvent(formModel);
|
||||||
const event = new FormRulesEvent('formLoaded', formEvent);
|
const event = new FormRulesEvent('formLoaded', formEvent);
|
||||||
|
|
||||||
formService.formRulesEvent.subscribe(formRulesEvent => {
|
rulesManager.initialize(formModel);
|
||||||
expect(formRulesEvent).toEqual(event);
|
getTestScheduler().flush();
|
||||||
done();
|
|
||||||
|
expect(getRulesSpy).toHaveBeenCalled();
|
||||||
|
expect(handleRuleEventSpy).toHaveBeenCalledWith(event, {});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('should not receive the form event when event has no form', () => {
|
||||||
|
const rulesManager = new CustomRuleManager(formService);
|
||||||
|
spyOn<any>(rulesManager, 'getRules').and.returnValue({});
|
||||||
|
const handleRuleEventSpy = spyOn<any>(rulesManager, 'handleRuleEvent');
|
||||||
|
const formModel = new FormModel({ id: 'mock' }, {}, false);
|
||||||
|
const formEvent = new FormEvent(new FormModel(null));
|
||||||
|
const event = new FormRulesEvent('formLoaded', formEvent);
|
||||||
|
|
||||||
rulesManager.initialize(formModel);
|
rulesManager.initialize(formModel);
|
||||||
expect(getRulesSpy).toHaveBeenCalled();
|
|
||||||
|
formService.formRulesEvent.next(event);
|
||||||
|
|
||||||
|
getTestScheduler().flush();
|
||||||
|
|
||||||
|
expect(handleRuleEventSpy).not.toHaveBeenCalledWith(event, jasmine.anything());
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -53,7 +53,7 @@ export abstract class FormRulesManager<T> {
|
|||||||
if (!!rules) {
|
if (!!rules) {
|
||||||
this.formService.formRulesEvent
|
this.formService.formRulesEvent
|
||||||
.pipe(
|
.pipe(
|
||||||
filter(event => !!event.form.id && event.form.id === formModel?.id),
|
filter(event => !!event?.form?.id && event.form.id === formModel?.id),
|
||||||
takeUntil(this.onDestroy$)
|
takeUntil(this.onDestroy$)
|
||||||
).subscribe(event => {
|
).subscribe(event => {
|
||||||
this.handleRuleEvent(event, rules);
|
this.handleRuleEvent(event, rules);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user