mirror of
https://github.com/Alfresco/alfresco-ng2-components.git
synced 2025-07-24 17:32:15 +00:00
[MNT-24082] fix aspect overwriting from dialog (#9390)
* [MNT-24082] fix aspect overwriting from dialog * [MNT-24028] address comments, improve unit tests
This commit is contained in:
committed by
GitHub
parent
ca892fc8fa
commit
9e4569d7ca
@@ -152,7 +152,7 @@ describe('AspectListComponent', () => {
|
|||||||
spyOn(aspectListService, 'getCustomAspects').and.returnValue(of(customAspectListMock));
|
spyOn(aspectListService, 'getCustomAspects').and.returnValue(of(customAspectListMock));
|
||||||
spyOn(aspectListService, 'getVisibleAspects').and.returnValue(['frs:AspectOne']);
|
spyOn(aspectListService, 'getVisibleAspects').and.returnValue(['frs:AspectOne']);
|
||||||
nodeService = TestBed.inject(NodesApiService);
|
nodeService = TestBed.inject(NodesApiService);
|
||||||
spyOn(nodeService, 'getNode').and.returnValue(of({ id: 'fake-node-id', aspectNames: ['frs:AspectOne'] } as any));
|
spyOn(nodeService, 'getNode').and.returnValue(of({ id: 'fake-node-id', aspectNames: ['frs:AspectOne', 'stored:aspect'] } as any));
|
||||||
component.nodeId = 'fake-node-id';
|
component.nodeId = 'fake-node-id';
|
||||||
loader = TestbedHarnessEnvironment.loader(fixture);
|
loader = TestbedHarnessEnvironment.loader(fixture);
|
||||||
});
|
});
|
||||||
@@ -187,69 +187,71 @@ describe('AspectListComponent', () => {
|
|||||||
expect(noNameAspect.innerText).toBe('cst:nonamedAspect');
|
expect(noNameAspect.innerText).toBe('cst:nonamedAspect');
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should show the details when a row is clicked', async () => {
|
it('should show aspect`s properties in expanded aspect panel', async () => {
|
||||||
const panel = await loader.getHarness(MatExpansionPanelHarness);
|
const panel = await loader.getHarness(MatExpansionPanelHarness);
|
||||||
await panel.expand();
|
|
||||||
expect(await panel.getDescription()).not.toBeNull();
|
expect(await panel.getDescription()).not.toBeNull();
|
||||||
|
|
||||||
const table = await panel.getHarness(MatTableHarness);
|
const table = await panel.getHarness(MatTableHarness);
|
||||||
const [row1, row2] = await table.getRows();
|
const [row1, row2] = await table.getRows();
|
||||||
const [r1c1, r1c2, r1c3] = await row1.getCells();
|
const [r1c1, r1c2, r1c3] = await row1.getCells();
|
||||||
|
const [r2c1, r2c2, r2c3] = await row2.getCells();
|
||||||
expect(await r1c1.getText()).toBe('channelPassword');
|
expect(await r1c1.getText()).toBe('channelPassword');
|
||||||
expect(await r1c2.getText()).toBe('The authenticated channel password');
|
expect(await r1c2.getText()).toBe('The authenticated channel password');
|
||||||
expect(await r1c3.getText()).toBe('d:propA');
|
expect(await r1c3.getText()).toBe('d:propA');
|
||||||
|
|
||||||
const [r2c1, r2c2, r2c3] = await row2.getCells();
|
|
||||||
expect(await r2c1.getText()).toBe('channelUsername');
|
expect(await r2c1.getText()).toBe('channelUsername');
|
||||||
expect(await r2c2.getText()).toBe('The authenticated channel username');
|
expect(await r2c2.getText()).toBe('The authenticated channel username');
|
||||||
expect(await r2c3.getText()).toBe('d:propB');
|
expect(await r2c3.getText()).toBe('d:propB');
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should show as checked the node properties', async () => {
|
it('should show node aspects as checked', async () => {
|
||||||
const panel = await loader.getHarness(MatExpansionPanelHarness);
|
const panel = await loader.getHarness(MatExpansionPanelHarness);
|
||||||
await panel.expand();
|
|
||||||
|
|
||||||
const checkbox = await panel.getHarness(MatCheckboxHarness);
|
const checkbox = await panel.getHarness(MatCheckboxHarness);
|
||||||
expect(await checkbox.isChecked()).toBe(true);
|
expect(await checkbox.isChecked()).toBe(true);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should remove aspects unchecked', async () => {
|
it('should add checked and remove unchecked aspects', async () => {
|
||||||
const panel = await loader.getAllHarnesses(MatExpansionPanelHarness);
|
const panel = (await loader.getAllHarnesses(MatExpansionPanelHarness))[1];
|
||||||
await panel[1].expand();
|
const checkbox = await panel.getHarness(MatCheckboxHarness);
|
||||||
|
|
||||||
const checkbox = await panel[1].getHarness(MatCheckboxHarness);
|
|
||||||
expect(await checkbox.isChecked()).toBe(false);
|
expect(await checkbox.isChecked()).toBe(false);
|
||||||
|
|
||||||
await checkbox.toggle();
|
await checkbox.toggle();
|
||||||
|
|
||||||
expect(component.nodeAspects.length).toBe(2);
|
expect(component.nodeAspects.length).toBe(2);
|
||||||
expect(component.nodeAspects[1]).toBe('frs:SecondAspect');
|
expect(component.nodeAspects[1]).toBe('frs:SecondAspect');
|
||||||
|
|
||||||
await checkbox.toggle();
|
await checkbox.toggle();
|
||||||
|
|
||||||
expect(component.nodeAspects.length).toBe(1);
|
expect(component.nodeAspects.length).toBe(1);
|
||||||
expect(component.nodeAspects[0]).toBe('frs:AspectOne');
|
expect(component.nodeAspects[0]).toBe('frs:AspectOne');
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should reset the properties on reset', async () => {
|
it('should reset aspects on reset', async () => {
|
||||||
const panel = await loader.getAllHarnesses(MatExpansionPanelHarness);
|
const panel = (await loader.getAllHarnesses(MatExpansionPanelHarness))[1];
|
||||||
await panel[1].expand();
|
const checkbox = await panel.getHarness(MatCheckboxHarness);
|
||||||
|
|
||||||
const checkbox = await panel[1].getHarness(MatCheckboxHarness);
|
|
||||||
expect(await checkbox.isChecked()).toBe(false);
|
expect(await checkbox.isChecked()).toBe(false);
|
||||||
|
|
||||||
await checkbox.toggle();
|
await checkbox.toggle();
|
||||||
|
|
||||||
expect(component.nodeAspects.length).toBe(2);
|
expect(component.nodeAspects.length).toBe(2);
|
||||||
|
|
||||||
component.reset();
|
component.reset();
|
||||||
expect(component.nodeAspects.length).toBe(1);
|
expect(component.nodeAspects.length).toBe(1);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should clear all the properties on clear', async () => {
|
it('should clear all aspects on clear', async () => {
|
||||||
expect(component.nodeAspects.length).toBe(1);
|
expect(component.nodeAspects.length).toBe(1);
|
||||||
component.clear();
|
component.clear();
|
||||||
expect(component.nodeAspects.length).toBe(0);
|
expect(component.nodeAspects.length).toBe(0);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('should store not listed aspects and emit all aspects on value change', async () => {
|
||||||
|
const storedAspect = ['stored:aspect'];
|
||||||
|
expect(component.notDisplayedAspects).toEqual(storedAspect);
|
||||||
|
|
||||||
|
spyOn(component.valueChanged, 'emit');
|
||||||
|
const panel = (await loader.getAllHarnesses(MatExpansionPanelHarness))[1];
|
||||||
|
const checkbox = await panel.getHarness(MatCheckboxHarness);
|
||||||
|
await checkbox.toggle();
|
||||||
|
fixture.detectChanges();
|
||||||
|
expect(component.valueChanged.emit).toHaveBeenCalledWith(['frs:AspectOne', 'frs:SecondAspect', ...storedAspect]);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('with excluded aspects', () => {
|
describe('with excluded aspects', () => {
|
||||||
|
@@ -47,6 +47,7 @@ export class AspectListComponent implements OnInit, OnDestroy {
|
|||||||
aspects$: Observable<AspectEntry[]> = null;
|
aspects$: Observable<AspectEntry[]> = null;
|
||||||
nodeAspects: string[] = [];
|
nodeAspects: string[] = [];
|
||||||
nodeAspectStatus: string[] = [];
|
nodeAspectStatus: string[] = [];
|
||||||
|
notDisplayedAspects: string[] = [];
|
||||||
hasEqualAspect: boolean = true;
|
hasEqualAspect: boolean = true;
|
||||||
|
|
||||||
private onDestroy$ = new Subject<boolean>();
|
private onDestroy$ = new Subject<boolean>();
|
||||||
@@ -71,7 +72,8 @@ export class AspectListComponent implements OnInit, OnDestroy {
|
|||||||
tap(([node, customAspects]) => {
|
tap(([node, customAspects]) => {
|
||||||
this.nodeAspects = node.aspectNames.filter((aspect) => this.aspectListService.getVisibleAspects().includes(aspect) || customAspects.includes(aspect));
|
this.nodeAspects = node.aspectNames.filter((aspect) => this.aspectListService.getVisibleAspects().includes(aspect) || customAspects.includes(aspect));
|
||||||
this.nodeAspectStatus = [ ...this.nodeAspects ];
|
this.nodeAspectStatus = [ ...this.nodeAspects ];
|
||||||
this.valueChanged.emit(this.nodeAspects);
|
this.notDisplayedAspects = node.aspectNames.filter((aspect) => !this.aspectListService.getVisibleAspects().includes(aspect) && !customAspects.includes(aspect));
|
||||||
|
this.valueChanged.emit([...this.nodeAspects, ...this.notDisplayedAspects]);
|
||||||
}),
|
}),
|
||||||
concatMap(() => this.aspectListService.getAspects()),
|
concatMap(() => this.aspectListService.getAspects()),
|
||||||
takeUntil(this.onDestroy$));
|
takeUntil(this.onDestroy$));
|
||||||
@@ -94,14 +96,14 @@ export class AspectListComponent implements OnInit, OnDestroy {
|
|||||||
this.nodeAspects.splice(this.nodeAspects.indexOf(prefixedName), 1);
|
this.nodeAspects.splice(this.nodeAspects.indexOf(prefixedName), 1);
|
||||||
}
|
}
|
||||||
this.updateEqualityOfAspectList();
|
this.updateEqualityOfAspectList();
|
||||||
this.valueChanged.emit(this.nodeAspects);
|
this.valueChanged.emit([...this.nodeAspects, ...this.notDisplayedAspects]);
|
||||||
}
|
}
|
||||||
|
|
||||||
reset() {
|
reset() {
|
||||||
if (this.nodeAspectStatus && this.nodeAspectStatus.length > 0) {
|
if (this.nodeAspectStatus && this.nodeAspectStatus.length > 0) {
|
||||||
this.nodeAspects.splice(0, this.nodeAspects.length, ...this.nodeAspectStatus);
|
this.nodeAspects.splice(0, this.nodeAspects.length, ...this.nodeAspectStatus);
|
||||||
this.hasEqualAspect = true;
|
this.hasEqualAspect = true;
|
||||||
this.valueChanged.emit(this.nodeAspects);
|
this.valueChanged.emit([...this.nodeAspects, ...this.notDisplayedAspects]);
|
||||||
} else {
|
} else {
|
||||||
this.clear();
|
this.clear();
|
||||||
}
|
}
|
||||||
@@ -110,7 +112,7 @@ export class AspectListComponent implements OnInit, OnDestroy {
|
|||||||
clear() {
|
clear() {
|
||||||
this.nodeAspects = [];
|
this.nodeAspects = [];
|
||||||
this.updateEqualityOfAspectList();
|
this.updateEqualityOfAspectList();
|
||||||
this.valueChanged.emit(this.nodeAspects);
|
this.valueChanged.emit([...this.nodeAspects, ...this.notDisplayedAspects]);
|
||||||
}
|
}
|
||||||
|
|
||||||
getId(aspect: any): string {
|
getId(aspect: any): string {
|
||||||
|
Reference in New Issue
Block a user