[ADF-4522] Metadata value is not rolled back upon error (#5550)

* * initial commit

* * removed breaking change

* * fixed ts

* * fixed minor changes

* * fixed changes

* * minor changes

* * fixed unit test

* * docs added

* * fixed date clear problem

* * fixed unit test
This commit is contained in:
dhrn
2020-03-17 16:17:08 +05:30
committed by GitHub
parent becf45d150
commit d720d36670
18 changed files with 191 additions and 65 deletions

View File

@@ -178,10 +178,11 @@ describe('CardViewBoolItemComponent', () => {
it('should trigger the update event when changing the checkbox', () => {
const cardViewUpdateService = TestBed.get(CardViewUpdateService);
spyOn(cardViewUpdateService, 'update');
const property = { ... component.property };
component.changed(<MatCheckboxChange> { checked: true });
expect(cardViewUpdateService.update).toHaveBeenCalledWith(component.property, true);
expect(cardViewUpdateService.update).toHaveBeenCalledWith(property, true);
});
it('should update the property value after a changed', async(() => {
@@ -198,10 +199,11 @@ describe('CardViewBoolItemComponent', () => {
const cardViewUpdateService = TestBed.get(CardViewUpdateService);
component.property.value = false;
fixture.detectChanges();
const property = { ...component.property };
const disposableUpdate = cardViewUpdateService.itemUpdated$.subscribe(
(updateNotification) => {
expect(updateNotification.target).toBe(component.property);
expect(updateNotification.target).toEqual(property);
expect(updateNotification.changed).toEqual({ boolkey: true });
disposableUpdate.unsubscribe();
done();

View File

@@ -19,6 +19,7 @@ import { Component, Input } from '@angular/core';
import { MatCheckboxChange } from '@angular/material';
import { CardViewBoolItemModel } from '../../models/card-view-boolitem.model';
import { CardViewUpdateService } from '../../services/card-view-update.service';
import { BaseCardView } from '../base-card-view';
@Component({
selector: 'adf-card-view-boolitem',
@@ -26,22 +27,21 @@ import { CardViewUpdateService } from '../../services/card-view-update.service';
styleUrls: ['./card-view-boolitem.component.scss']
})
export class CardViewBoolItemComponent {
@Input()
property: CardViewBoolItemModel;
export class CardViewBoolItemComponent extends BaseCardView<CardViewBoolItemModel> {
@Input()
editable: boolean;
constructor(private cardViewUpdateService: CardViewUpdateService) {}
constructor(cardViewUpdateService: CardViewUpdateService) {
super(cardViewUpdateService);
}
isEditable() {
return this.editable && this.property.editable;
}
changed(change: MatCheckboxChange) {
this.cardViewUpdateService.update(this.property, change.checked );
this.cardViewUpdateService.update(<CardViewBoolItemModel> { ...this.property }, change.checked );
this.property.value = change.checked;
}
}