fix for unit test cases

This commit is contained in:
Yasa-Nataliya
2023-07-26 17:08:47 +00:00
parent b4e541161d
commit 7e13faf645
5 changed files with 38 additions and 148 deletions

View File

@@ -466,11 +466,4 @@ describe('CategoriesManagementComponent', () => {
component.removeCategory(categoryToRemove); component.removeCategory(categoryToRemove);
expect(component.categories.length).toBe(0); expect(component.categories.length).toBe(0);
})); }));
it('should toggle categoryNameControl visibility', () => {
component.categoryNameControlVisible = true;
expect(component.categoryNameControlVisible).toBe(true);
component.categoryNameControlVisible = false;
expect(component.categoryNameControlVisible).toBe(false);
});
}); });

View File

@@ -83,9 +83,7 @@ export class CategoriesManagementComponent implements OnInit, OnDestroy {
set categoryNameControlVisible(categoryNameControlVisible: boolean) { set categoryNameControlVisible(categoryNameControlVisible: boolean) {
this._categoryNameControlVisible = categoryNameControlVisible; this._categoryNameControlVisible = categoryNameControlVisible;
if (categoryNameControlVisible) { if (categoryNameControlVisible) {
setTimeout(() => {
this.categoryNameInputElement.nativeElement.scrollIntoView(); this.categoryNameInputElement.nativeElement.scrollIntoView();
});
this._existingCategoriesPanelVisible = true; this._existingCategoriesPanelVisible = true;
} else { } else {
this._existingCategoriesPanelVisible = false; this._existingCategoriesPanelVisible = false;

View File

@@ -33,7 +33,10 @@ import { TranslateModule } from '@ngx-translate/core';
import { CardViewContentUpdateService } from '../../../common/services/card-view-content-update.service'; import { CardViewContentUpdateService } from '../../../common/services/card-view-content-update.service';
import { PropertyGroup } from '../../interfaces/property-group.interface'; import { PropertyGroup } from '../../interfaces/property-group.interface';
import { PropertyDescriptorsService } from '../../services/property-descriptors.service'; import { PropertyDescriptorsService } from '../../services/property-descriptors.service';
import { AllowableOperationsEnum, CategoriesManagementComponent, CategoriesManagementMode, CategoryService, TagsCreatorComponent, TagsCreatorMode, TagService } from '@alfresco/adf-content-services'; import { CategoriesManagementComponent, CategoriesManagementMode, CategoryService, TagsCreatorComponent, TagsCreatorMode, TagService } from '@alfresco/adf-content-services';
import { MatIconModule } from '@angular/material/icon';
import { MatExpansionModule, MatExpansionPanel } from '@angular/material/expansion';
import { MatDividerModule } from '@angular/material/divider';
describe('ContentMetadataComponent', () => { describe('ContentMetadataComponent', () => {
let component: ContentMetadataComponent; let component: ContentMetadataComponent;
@@ -76,25 +79,7 @@ describe('ContentMetadataComponent', () => {
fixture.detectChanges(); fixture.detectChanges();
}; };
const findGenralInfoSaveButton = (): HTMLButtonElement => fixture.debugElement.query(By.css('[data-automation-id=save-generalInfo-metadata]')).nativeElement;
const findTagsSaveButton = (): HTMLButtonElement => fixture.debugElement.query(By.css('[data-automation-id=save-tags-metadata]')).nativeElement;
const findSaveButton = (): HTMLButtonElement => fixture.debugElement.query(By.css('[data-automation-id=save-metadata]')).nativeElement; const findSaveButton = (): HTMLButtonElement => fixture.debugElement.query(By.css('[data-automation-id=save-metadata]')).nativeElement;
const findSCategorieSaveButton = (): HTMLButtonElement => fixture.debugElement.query(By.css('[data-automation-id=save-categories-metadata]')).nativeElement;
const clickOnGenralInfoSave = () => {
findGenralInfoSaveButton().click();
fixture.detectChanges();
};
const clickOnTagsSave = () => {
findTagsSaveButton().click();
fixture.detectChanges();
};
const clickOnCategoriesSave = () => {
findSCategorieSaveButton().click();
fixture.detectChanges();
};
const clickOnSave = () => { const clickOnSave = () => {
findSaveButton().click(); findSaveButton().click();
@@ -122,7 +107,11 @@ describe('ContentMetadataComponent', () => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [ imports: [
TranslateModule.forRoot(), TranslateModule.forRoot(),
ContentTestingModule ContentTestingModule,
MatIconModule,
MatExpansionModule,
MatExpansionPanel,
MatDividerModule
], ],
providers: [ providers: [
{ {
@@ -190,14 +179,6 @@ describe('ContentMetadataComponent', () => {
expect(component.editable).toBe(false); expect(component.editable).toBe(false);
}); });
it('should have editableTags input param as false by default', () => {
expect(component.editableTags).toBe(false);
});
it('should have editableCategories input param as false by default', () => {
expect(component.editableCategories).toBe(false);
});
it('should have displayEmpty input param as false by default', () => { it('should have displayEmpty input param as false by default', () => {
expect(component.displayEmpty).toBe(false); expect(component.displayEmpty).toBe(false);
}); });
@@ -257,8 +238,8 @@ describe('ContentMetadataComponent', () => {
fixture.detectChanges(); fixture.detectChanges();
await fixture.whenStable(); await fixture.whenStable();
clickOnGenralInfoSave(); const mockEvent = new Event('click');
component.saveGeneralInfoChanges(mockEvent);
await fixture.whenStable(); await fixture.whenStable();
expect(component.node).toEqual(expectedNode); expect(component.node).toEqual(expectedNode);
expect(nodesApiService.updateNode).toHaveBeenCalled(); expect(nodesApiService.updateNode).toHaveBeenCalled();
@@ -293,7 +274,7 @@ describe('ContentMetadataComponent', () => {
expect(tagService.assignTagsToNode).toHaveBeenCalledWith(node.id, [tag1, tag2]); expect(tagService.assignTagsToNode).toHaveBeenCalledWith(node.id, [tag1, tag2]);
}); });
it('should call getTagsByNodeId on TagService on save click', () => { it('should call getTagsByNodeId on TagService on save click', fakeAsync( () => {
component.editableTags = true; component.editableTags = true;
component.displayTags = true; component.displayTags = true;
const property = { key: 'properties.property-key', value: 'original-value' } as CardViewBaseItemModel; const property = { key: 'properties.property-key', value: 'original-value' } as CardViewBaseItemModel;
@@ -306,6 +287,7 @@ describe('ContentMetadataComponent', () => {
spyOn(tagService, 'assignTagsToNode').and.returnValue(of({})); spyOn(tagService, 'assignTagsToNode').and.returnValue(of({}));
updateService.update(property, 'updated-value'); updateService.update(property, 'updated-value');
tick(600);
fixture.detectChanges(); fixture.detectChanges();
findTagsCreator().tagsChange.emit([tagPaging.list.entries[0].entry.tag, 'New tag 3']); findTagsCreator().tagsChange.emit([tagPaging.list.entries[0].entry.tag, 'New tag 3']);
@@ -314,7 +296,7 @@ describe('ContentMetadataComponent', () => {
component.saveTagsChanges(mockEvent); component.saveTagsChanges(mockEvent);
expect(tagService.getTagsByNodeId).toHaveBeenCalledWith(node.id); expect(tagService.getTagsByNodeId).toHaveBeenCalledWith(node.id);
}); }));
it('should throw error on unsuccessful save', fakeAsync(() => { it('should throw error on unsuccessful save', fakeAsync(() => {
const logService: LogService = TestBed.inject(LogService); const logService: LogService = TestBed.inject(LogService);
@@ -333,13 +315,13 @@ describe('ContentMetadataComponent', () => {
spyOn(nodesApiService, 'updateNode').and.returnValue(throwError(new Error('My bad'))); spyOn(nodesApiService, 'updateNode').and.returnValue(throwError(new Error('My bad')));
fixture.detectChanges(); fixture.detectChanges();
fixture.whenStable().then(() => clickOnGenralInfoSave()); fixture.whenStable().then(() => clickOnSave());
discardPeriodicTasks(); discardPeriodicTasks();
flush(); flush();
})); }));
it('should open the confirm dialog when content type is changed', fakeAsync(() => { it('should open the confirm dialog when content type is changed', fakeAsync(() => {
component.editableGeneralInfo = true; component.editable = true;
const property = { key: 'nodeType', value: 'ft:sbiruli' } as CardViewBaseItemModel; const property = { key: 'nodeType', value: 'ft:sbiruli' } as CardViewBaseItemModel;
const expectedNode = { ...node, nodeType: 'ft:sbiruli' }; const expectedNode = { ...node, nodeType: 'ft:sbiruli' };
spyOn(contentMetadataService, 'openConfirmDialog').and.returnValue(of(true)); spyOn(contentMetadataService, 'openConfirmDialog').and.returnValue(of(true));
@@ -350,7 +332,7 @@ describe('ContentMetadataComponent', () => {
fixture.detectChanges(); fixture.detectChanges();
tick(100); tick(100);
clickOnGenralInfoSave(); clickOnSave();
tick(100); tick(100);
expect(component.node).toEqual(expectedNode); expect(component.node).toEqual(expectedNode);
@@ -359,7 +341,7 @@ describe('ContentMetadataComponent', () => {
discardPeriodicTasks(); discardPeriodicTasks();
})); }));
it('should call removeTag and assignTagsToNode on TagService after confirming confirmation dialog when content type is changed', () => { it('should call removeTag and assignTagsToNode on TagService after confirming confirmation dialog when content type is changed', fakeAsync(() => {
component.editableTags = true; component.editableTags = true;
component.displayTags = true; component.displayTags = true;
const property = { key: 'nodeType', value: 'ft:sbiruli' } as CardViewBaseItemModel; const property = { key: 'nodeType', value: 'ft:sbiruli' } as CardViewBaseItemModel;
@@ -375,23 +357,26 @@ describe('ContentMetadataComponent', () => {
const tagName2 = 'New tag 3'; const tagName2 = 'New tag 3';
updateService.update(property, 'ft:poppoli'); updateService.update(property, 'ft:poppoli');
tick(600);
fixture.detectChanges(); fixture.detectChanges();
findTagsCreator().tagsChange.emit([tagName1, tagName2]); findTagsCreator().tagsChange.emit([tagName1, tagName2]);
tick(100);
fixture.detectChanges(); fixture.detectChanges();
const mockEvent = new Event('click'); const mockEvent = new Event('click');
component.saveTagsChanges(mockEvent); component.saveTagsChanges(mockEvent);
tick(100);
const tag1 = new TagBody(); const tag1 = new TagBody();
tag1.tag = tagName1; tag1.tag = tagName1;
const tag2 = new TagBody(); const tag2 = new TagBody();
tag2.tag = tagName2; tag2.tag = tagName2;
expect(tagService.removeTag).toHaveBeenCalledWith(node.id, tagPaging.list.entries[1].entry.id); expect(tagService.removeTag).toHaveBeenCalledWith(node.id, tagPaging.list.entries[1].entry.id);
expect(tagService.assignTagsToNode).toHaveBeenCalledWith(node.id, [tag1, tag2]); expect(tagService.assignTagsToNode).toHaveBeenCalledWith(node.id, [tag1, tag2]);
}); }));
it('should retrigger the load of the properties when the content type has changed', fakeAsync(() => { it('should retrigger the load of the properties when the content type has changed', fakeAsync(() => {
component.editableGeneralInfo = true; component.editable = true;
const property = { key: 'nodeType', value: 'ft:sbiruli' } as CardViewBaseItemModel; const property = { key: 'nodeType', value: 'ft:sbiruli' } as CardViewBaseItemModel;
const expectedNode = Object.assign({}, node, { nodeType: 'ft:sbiruli' }); const expectedNode = Object.assign({}, node, { nodeType: 'ft:sbiruli' });
spyOn(contentMetadataService, 'openConfirmDialog').and.returnValue(of(true)); spyOn(contentMetadataService, 'openConfirmDialog').and.returnValue(of(true));
@@ -403,7 +388,7 @@ describe('ContentMetadataComponent', () => {
fixture.detectChanges(); fixture.detectChanges();
tick(100); tick(100);
clickOnGenralInfoSave(); clickOnSave();
tick(100); tick(100);
expect(component.node).toEqual(expectedNode); expect(component.node).toEqual(expectedNode);
@@ -411,95 +396,6 @@ describe('ContentMetadataComponent', () => {
})); }));
}); });
describe('editing', () => {
it('should toggle editableGeneralInfo by clicking on the edit button', () => {
component.editableGeneralInfo = true;
component.node.allowableOperations = [AllowableOperationsEnum.UPDATE];
fixture.detectChanges();
const mockEvent = new Event('click');
component.toggleGeneralEdit(mockEvent);
expect(component.editableGeneralInfo).toBe(false);
});
it('should toggle editableTags by clicking on the edit button', () => {
component.editableTags = true;
component.node.allowableOperations = [AllowableOperationsEnum.UPDATE];
fixture.detectChanges();
const mockEvent = new Event('click');
component.toggleTagsEdit(mockEvent);
expect(component.editableTags).toBe(false);
});
it('should toggle editableCategories by clicking on the edit button', () => {
component.editableCategories = true;
component.node.allowableOperations = [AllowableOperationsEnum.UPDATE];
fixture.detectChanges();
const mockEvent = new Event('click');
component.toggleCategoriesEdit(mockEvent);
expect(component.editableCategories).toBe(false);
});
it('should set group.editable to true and call expandePanel when toggleEdit is called with group.editable as false', () => {
const group = { editable: false };
const mockEvent = { stopPropagation: () => {} };
spyOn(mockEvent, 'stopPropagation');
spyOn(component, 'expandePanel');
component.toggleEdit(group, mockEvent as Event);
expect(group.editable).toBe(true);
expect(mockEvent.stopPropagation).toHaveBeenCalled();
expect(component.expandePanel).toHaveBeenCalledWith(group);
});
it('should set group.editable to false and not call expandePanel when toggleEdit is called with group.editable as true', () => {
const group = { editable: true };
const mockEvent = { stopPropagation: () => {} };
spyOn(mockEvent, 'stopPropagation');
spyOn(component, 'expandePanel');
component.toggleEdit(group, mockEvent as Event);
expect(group.editable).toBe(false);
expect(mockEvent.stopPropagation).toHaveBeenCalled();
expect(component.expandePanel).not.toHaveBeenCalled();
});
});
describe('cancelChanges', () => {
it('should cancel changes for group and set editable to false', () => {
const group = { editable: true };
const mockEvent = new Event('click');
spyOn(component, 'revertChanges');
component.cancelChanges(mockEvent);
expect(group.editable).toBe(false);
expect(component.revertChanges).toHaveBeenCalled();
});
it('should cancel general info changes and set editableGeneralInfo to false', () => {
const mockEvent = new Event('click');
component.editableGeneralInfo = true;
spyOn(component, 'revertChanges');
component.cancelGeneralInfoChanges(mockEvent);
expect(component.editableGeneralInfo).toBe(false);
expect(component.revertChanges).toHaveBeenCalled();
});
it('should cancel tags changes and set editableTags to false', () => {
component.editableTags = true;
const mockEvent = new Event('click');
spyOn(component, 'revertChanges');
component.CancelTagsChanges(mockEvent);
expect(component.editableTags).toBe(false);
expect(component.revertChanges).toHaveBeenCalled();
});
it('should cancel categories changes and set editableCategories to false', () => {
const mockEvent = new Event('click');
component.editableCategories = true;
spyOn(component, 'revertChanges');
component.cancelCategoriesChanges(mockEvent);
expect(component.editableCategories).toBe(false);
expect(component.revertChanges).toHaveBeenCalled();
});
});
describe('Reseting', () => { describe('Reseting', () => {
it('should reset changedProperties on reset click', async () => { it('should reset changedProperties on reset click', async () => {
component.changedProperties = { properties: { 'property-key': 'updated-value' } }; component.changedProperties = { properties: { 'property-key': 'updated-value' } };
@@ -1128,7 +1024,7 @@ describe('ContentMetadataComponent', () => {
}); });
it('should render tags after loading tags after clicking on Cancel button', fakeAsync(() => { it('should render tags after loading tags after clicking on Cancel button', fakeAsync(() => {
component.editableTags = true; component.editable = true;
fixture.detectChanges(); fixture.detectChanges();
TestBed.inject(CardViewContentUpdateService).itemUpdated$.next({ TestBed.inject(CardViewContentUpdateService).itemUpdated$.next({
changed: {} changed: {}
@@ -1138,7 +1034,7 @@ describe('ContentMetadataComponent', () => {
spyOn(tagService, 'getTagsByNodeId').and.returnValue(of(tagPaging)); spyOn(tagService, 'getTagsByNodeId').and.returnValue(of(tagPaging));
clickOnCancel(); clickOnCancel();
component.editableTags = false; component.editable = false;
fixture.detectChanges(); fixture.detectChanges();
const tagElements = findTagElements(); const tagElements = findTagElements();
expect(tagElements).toHaveSize(2); expect(tagElements).toHaveSize(2);
@@ -1162,7 +1058,7 @@ describe('ContentMetadataComponent', () => {
let tagsCreator: TagsCreatorComponent; let tagsCreator: TagsCreatorComponent;
beforeEach(() => { beforeEach(() => {
component.editableTags = true; component.editable = true;
component.displayTags = true; component.displayTags = true;
fixture.detectChanges(); fixture.detectChanges();
tagsCreator = findTagsCreator(); tagsCreator = findTagsCreator();
@@ -1212,7 +1108,7 @@ describe('ContentMetadataComponent', () => {
tagsCreator.tagsChange.emit([]); tagsCreator.tagsChange.emit([]);
fixture.detectChanges(); fixture.detectChanges();
clickOnTagsSave(); clickOnSave();
expect(tagsCreator.disabledTagsRemoving).toBeTrue(); expect(tagsCreator.disabledTagsRemoving).toBeTrue();
}); });
@@ -1233,7 +1129,7 @@ describe('ContentMetadataComponent', () => {
fixture.detectChanges(); fixture.detectChanges();
tagsCreator.tagsChange.emit([tagName1, tagName2]); tagsCreator.tagsChange.emit([tagName1, tagName2]);
clickOnTagsSave(); clickOnSave();
expect(tagsCreator.disabledTagsRemoving).toBeFalse(); expect(tagsCreator.disabledTagsRemoving).toBeFalse();
})); }));
@@ -1243,7 +1139,7 @@ describe('ContentMetadataComponent', () => {
tagsCreator.tagsChange.emit([]); tagsCreator.tagsChange.emit([]);
fixture.detectChanges(); fixture.detectChanges();
clickOnTagsSave(); clickOnSave();
expect(tagsCreator.tagNameControlVisible).toBeFalse(); expect(tagsCreator.tagNameControlVisible).toBeFalse();
}); });
@@ -1371,7 +1267,7 @@ describe('ContentMetadataComponent', () => {
let categoriesManagementComponent: CategoriesManagementComponent; let categoriesManagementComponent: CategoriesManagementComponent;
beforeEach(() => { beforeEach(() => {
component.editableCategories = true; component.editable = true;
component.displayCategories = true; component.displayCategories = true;
component.node.aspectNames.push('generalclassifiable'); component.node.aspectNames.push('generalclassifiable');
spyOn(categoryService, 'getCategoryLinksForNode').and.returnValue(of(categoryPagingResponse)); spyOn(categoryService, 'getCategoryLinksForNode').and.returnValue(of(categoryPagingResponse));
@@ -1428,7 +1324,7 @@ describe('ContentMetadataComponent', () => {
categoriesManagementComponent.categoriesChange.emit([]); categoriesManagementComponent.categoriesChange.emit([]);
fixture.detectChanges(); fixture.detectChanges();
clickOnCategoriesSave(); clickOnSave();
expect(categoriesManagementComponent.disableRemoval).toBeTrue(); expect(categoriesManagementComponent.disableRemoval).toBeTrue();
}); });
@@ -1459,7 +1355,7 @@ describe('ContentMetadataComponent', () => {
categoriesManagementComponent.categoriesChange.emit([]); categoriesManagementComponent.categoriesChange.emit([]);
fixture.detectChanges(); fixture.detectChanges();
clickOnCategoriesSave(); clickOnSave();
expect(categoriesManagementComponent.categoryNameControlVisible).toBeFalse(); expect(categoriesManagementComponent.categoryNameControlVisible).toBeFalse();
}); });

View File

@@ -23,6 +23,7 @@ export interface CardViewItemProperties {
key: any; key: any;
default?: any; default?: any;
editable?: boolean; editable?: boolean;
editableGeneralInfo?: boolean;
clickable?: any; clickable?: any;
icon?: string; icon?: string;
hint?: string; hint?: string;

View File

@@ -24,6 +24,7 @@ export abstract class CardViewBaseItemModel {
key: any; key: any;
default: any; default: any;
editable: boolean; editable: boolean;
editableGeneralInfo: boolean;
clickable: boolean; clickable: boolean;
icon?: string; icon?: string;
hint?: string; hint?: string;
@@ -38,6 +39,7 @@ export abstract class CardViewBaseItemModel {
this.key = cardViewItemProperties.key; this.key = cardViewItemProperties.key;
this.default = cardViewItemProperties.default; this.default = cardViewItemProperties.default;
this.editable = !!cardViewItemProperties.editable; this.editable = !!cardViewItemProperties.editable;
this.editableGeneralInfo = !!cardViewItemProperties.editableGeneralInfo;
this.clickable = !!cardViewItemProperties.clickable; this.clickable = !!cardViewItemProperties.clickable;
this.icon = cardViewItemProperties.icon || ''; this.icon = cardViewItemProperties.icon || '';
this.hint = cardViewItemProperties.hint || ''; this.hint = cardViewItemProperties.hint || '';