fix unit tests

This commit is contained in:
Denys Vuika
2023-02-13 12:39:12 -05:00
committed by Yasa-Nataliya
parent a4c640d757
commit 1dd1a513b5
7 changed files with 58 additions and 51 deletions

View File

@@ -11,9 +11,9 @@
margin-left: 24px; margin-left: 24px;
adf-toolbar-divider { adf-toolbar-divider {
width: 24px !important; width: 24px;
height: 32px !important; height: 32px;
margin: 4px 0 0 12px !important; margin: 4px 0 0 12px;
} }
& > button { & > button {

View File

@@ -28,9 +28,6 @@ import { AppHeaderActionsModule } from './header-actions.module';
describe('HeaderActionsComponent', () => { describe('HeaderActionsComponent', () => {
let component: HeaderActionsComponent; let component: HeaderActionsComponent;
let fixture: ComponentFixture<HeaderActionsComponent>; let fixture: ComponentFixture<HeaderActionsComponent>;
let extensionService: AppExtensionService;
let getCreateActionsSpy: jasmine.Spy;
let getUploadActionsSpy: jasmine.Spy;
beforeEach(() => { beforeEach(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
@@ -38,12 +35,8 @@ describe('HeaderActionsComponent', () => {
declarations: [HeaderActionsComponent] declarations: [HeaderActionsComponent]
}); });
fixture = TestBed.createComponent(HeaderActionsComponent); const extensionService = TestBed.inject(AppExtensionService);
component = fixture.componentInstance; spyOn(extensionService, 'getCreateActions').and.returnValue(
extensionService = TestBed.inject(AppExtensionService);
getCreateActionsSpy = spyOn(extensionService, 'getCreateActions');
getCreateActionsSpy.and.returnValue(
of([ of([
{ {
id: 'action1', id: 'action1',
@@ -58,8 +51,7 @@ describe('HeaderActionsComponent', () => {
]) ])
); );
getUploadActionsSpy = spyOn(extensionService, 'getUploadActions'); spyOn(extensionService, 'getUploadActions').and.returnValue(
getUploadActionsSpy.and.returnValue(
of([ of([
{ {
id: 'action3', id: 'action3',
@@ -74,67 +66,63 @@ describe('HeaderActionsComponent', () => {
fixture.detectChanges(); fixture.detectChanges();
}); });
const getCreateButton = (): HTMLButtonElement => fixture.debugElement.query(By.css('[data-automation-id="create-button"]')).nativeElement;
const getUploadButton = (): HTMLButtonElement => fixture.debugElement.query(By.css('[data-automation-id="upload-button"]')).nativeElement;
it('total number of buttons in header should be 2 if route is personal-files', async () => { it('total number of buttons in header should be 2 if route is personal-files', async () => {
spyOn(component, 'isPersonalFilesRoute').and.returnValue(true); spyOn(component, 'isPersonalFilesRoute').and.returnValue(true);
fixture.detectChanges(); fixture.detectChanges();
await fixture.whenStable();
const buttons = fixture.debugElement.queryAll(By.css('.action-bar > .aca-mat-button')); const buttons = fixture.debugElement.queryAll(By.css('.action-bar > .aca-mat-button'));
const createButton: HTMLButtonElement = fixture.debugElement.query(By.css('[data-automation-id="create-button"]')).nativeElement;
const uploadButton: HTMLButtonElement = fixture.debugElement.query(By.css('[data-automation-id="upload-button"]')).nativeElement;
expect(buttons.length).toBe(2); expect(buttons.length).toBe(2);
expect(createButton).toBeTruthy(); expect(getCreateButton()).toBeTruthy();
expect(uploadButton).toBeTruthy(); expect(getUploadButton()).toBeTruthy();
}); });
it('total number of buttons in header should be 1 if route is libraries', async () => { it('total number of buttons in header should be 1 if route is libraries', async () => {
spyOn(component, 'isLibrariesRoute').and.returnValue(true); spyOn(component, 'isLibrariesRoute').and.returnValue(true);
fixture.detectChanges(); fixture.detectChanges();
await fixture.whenStable();
const buttons = fixture.debugElement.queryAll(By.css('.action-bar > .aca-mat-button')); const buttons = fixture.debugElement.queryAll(By.css('.action-bar > .aca-mat-button'));
const createButton: HTMLButtonElement = fixture.debugElement.query(By.css('[data-automation-id="create-button"]')).nativeElement;
expect(buttons.length).toBe(1); expect(buttons.length).toBe(1);
expect(createButton).toBeTruthy(); expect(getCreateButton()).toBeTruthy();
}); });
async function clickCreateMenu() {
fixture.detectChanges();
await fixture.whenStable();
const button: HTMLButtonElement = fixture.debugElement.query(By.css('[data-automation-id="create-button"]')).nativeElement;
button.click();
}
async function clickUploadMenu() {
fixture.detectChanges();
await fixture.whenStable();
const button: HTMLButtonElement = fixture.debugElement.query(By.css('[data-automation-id="upload-button"]')).nativeElement;
button.click();
}
it('should render menu items when create menu is opened', async () => { it('should render menu items when create menu is opened', async () => {
spyOn(component, 'isPersonalFilesRoute').and.returnValue(true); spyOn(component, 'isPersonalFilesRoute').and.returnValue(true);
await clickCreateMenu();
fixture.detectChanges();
await fixture.whenStable();
getCreateButton().click();
const menuItems = fixture.debugElement.queryAll(By.css('.app-toolbar-menu-item')); const menuItems = fixture.debugElement.queryAll(By.css('.app-toolbar-menu-item'));
expect(menuItems.length).toBe(2); expect(menuItems.length).toBe(2);
const menuItemOne: HTMLSpanElement = (menuItems[0].nativeElement as HTMLButtonElement).querySelector('[data-automation-id="menu-item-title"]'); const menuItemOne = (menuItems[0].nativeElement as HTMLButtonElement).querySelector<HTMLSpanElement>('[data-automation-id="menu-item-title"]');
const menuItemTwo: HTMLSpanElement = (menuItems[1].nativeElement as HTMLButtonElement).querySelector('[data-automation-id="menu-item-title"]'); const menuItemTwo = (menuItems[1].nativeElement as HTMLButtonElement).querySelector<HTMLSpanElement>('[data-automation-id="menu-item-title"]');
expect(menuItemOne.innerText).toBe('create action one'); expect(menuItemOne.innerText).toBe('create action one');
expect(menuItemTwo.innerText).toBe('create action two'); expect(menuItemTwo.innerText).toBe('create action two');
}); });
it('should render menu items when upload menu is opened', async () => { it('should render menu items when upload menu is opened', async () => {
spyOn(component, 'isPersonalFilesRoute').and.returnValue(true); spyOn(component, 'isPersonalFilesRoute').and.returnValue(true);
await clickUploadMenu();
fixture.detectChanges();
await fixture.whenStable();
getUploadButton().click();
const menuItems = fixture.debugElement.queryAll(By.css('.app-toolbar-menu-item')); const menuItems = fixture.debugElement.queryAll(By.css('.app-toolbar-menu-item'));
expect(menuItems.length).toBe(1); expect(menuItems.length).toBe(1);
const menuItemOne: HTMLSpanElement = (menuItems[0].nativeElement as HTMLButtonElement).querySelector('[data-automation-id="menu-item-title"]'); const menuItemOne = (menuItems[0].nativeElement as HTMLButtonElement).querySelector<HTMLSpanElement>('[data-automation-id="menu-item-title"]');
expect(menuItemOne.innerText).toBe('upload action one'); expect(menuItemOne.innerText).toBe('upload action one');
}); });
}); });

View File

@@ -135,7 +135,9 @@ export class SearchInputComponent implements OnInit, OnDestroy {
} }
onMenuOpened() { onMenuOpened() {
this.searchInputControl.searchInput.nativeElement.focus(); if (this.searchInputControl) {
this.searchInputControl.searchInput?.nativeElement?.focus();
}
} }
/** /**

View File

@@ -25,7 +25,6 @@
import { ComponentFixture, fakeAsync, TestBed, tick } from '@angular/core/testing'; import { ComponentFixture, fakeAsync, TestBed, tick } from '@angular/core/testing';
import { SearchResultsComponent } from './search-results.component'; import { SearchResultsComponent } from './search-results.component';
import { AppTestingModule } from '../../../testing/app-testing.module';
import { AppSearchResultsModule } from '../search-results.module'; import { AppSearchResultsModule } from '../search-results.module';
import { AppConfigService, CoreModule, TranslationService } from '@alfresco/adf-core'; import { AppConfigService, CoreModule, TranslationService } from '@alfresco/adf-core';
import { Store } from '@ngrx/store'; import { Store } from '@ngrx/store';
@@ -34,7 +33,9 @@ import { Pagination, SearchRequest } from '@alfresco/js-api';
import { SearchQueryBuilderService } from '@alfresco/adf-content-services'; import { SearchQueryBuilderService } from '@alfresco/adf-content-services';
import { ActivatedRoute, Router } from '@angular/router'; import { ActivatedRoute, Router } from '@angular/router';
import { TranslateModule } from '@ngx-translate/core'; import { TranslateModule } from '@ngx-translate/core';
import { BehaviorSubject } from 'rxjs'; import { BehaviorSubject, Subject } from 'rxjs';
import { AppTestingModule } from '../../../testing/app-testing.module';
import { AppService } from '@alfresco/aca-shared';
describe('SearchComponent', () => { describe('SearchComponent', () => {
let component: SearchResultsComponent; let component: SearchResultsComponent;
@@ -50,8 +51,15 @@ describe('SearchComponent', () => {
beforeEach(() => { beforeEach(() => {
params = new BehaviorSubject({ q: 'TYPE: "cm:folder" AND %28=cm: name: email OR cm: name: budget%29' }); params = new BehaviorSubject({ q: 'TYPE: "cm:folder" AND %28=cm: name: email OR cm: name: budget%29' });
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [TranslateModule.forRoot(), CoreModule.forRoot(), AppTestingModule, AppSearchResultsModule], imports: [TranslateModule.forRoot(), AppTestingModule, CoreModule.forRoot(), AppSearchResultsModule],
providers: [ providers: [
{
provide: AppService,
useValue: {
appNavNarMode$: new BehaviorSubject('expanded'),
toggleAppNavBar$: new Subject()
}
},
{ {
provide: ActivatedRoute, provide: ActivatedRoute,
useValue: { useValue: {

View File

@@ -27,7 +27,8 @@ import { NO_ERRORS_SCHEMA } from '@angular/core';
import { TestBed, ComponentFixture } from '@angular/core/testing'; import { TestBed, ComponentFixture } from '@angular/core/testing';
import { SidenavComponent } from './sidenav.component'; import { SidenavComponent } from './sidenav.component';
import { AppTestingModule } from '../../testing/app-testing.module'; import { AppTestingModule } from '../../testing/app-testing.module';
import { AppExtensionService } from '@alfresco/aca-shared'; import { AppExtensionService, AppService } from '@alfresco/aca-shared';
import { BehaviorSubject, Subject } from 'rxjs';
describe('SidenavComponent', () => { describe('SidenavComponent', () => {
let fixture: ComponentFixture<SidenavComponent>; let fixture: ComponentFixture<SidenavComponent>;
@@ -38,6 +39,15 @@ describe('SidenavComponent', () => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [AppTestingModule], imports: [AppTestingModule],
declarations: [SidenavComponent], declarations: [SidenavComponent],
providers: [
{
provide: AppService,
useValue: {
appNavNarMode$: new BehaviorSubject('expanded'),
toggleAppNavBar$: new Subject()
}
}
],
schemas: [NO_ERRORS_SCHEMA] schemas: [NO_ERRORS_SCHEMA]
}); });

View File

@@ -6,12 +6,11 @@
* agreement is prohibited. * agreement is prohibited.
*/ */
import { TestBed, ComponentFixture } from '@angular/core/testing'; import { TestBed, ComponentFixture } from '@angular/core/testing';
import { AppConfigModule } from '@alfresco/adf-core';
import { ViewProfileComponent } from './view-profile.component'; import { ViewProfileComponent } from './view-profile.component';
import { AppTestingModule } from '../../testing/app-testing.module'; import { AppTestingModule } from '../../testing/app-testing.module';
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
import { By } from '@angular/platform-browser'; import { By } from '@angular/platform-browser';
import { Router } from '@angular/router'; import { Router } from '@angular/router';
import { ViewProfileModule } from './view-profile.module';
describe('ViewProfileComponent', () => { describe('ViewProfileComponent', () => {
let fixture: ComponentFixture<ViewProfileComponent>; let fixture: ComponentFixture<ViewProfileComponent>;
@@ -20,8 +19,7 @@ describe('ViewProfileComponent', () => {
beforeEach(() => { beforeEach(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [AppTestingModule, AppConfigModule, FormsModule, ReactiveFormsModule], imports: [AppTestingModule, ViewProfileModule]
declarations: [ViewProfileComponent]
}); });
fixture = TestBed.createComponent(ViewProfileComponent); fixture = TestBed.createComponent(ViewProfileComponent);

View File

@@ -28,9 +28,10 @@ import { ViewProfileComponent } from './view-profile.component';
import { CommonModule } from '@angular/common'; import { CommonModule } from '@angular/common';
import { CoreModule } from '@alfresco/adf-core'; import { CoreModule } from '@alfresco/adf-core';
import { RouterModule } from '@angular/router'; import { RouterModule } from '@angular/router';
import { MatDividerModule } from '@angular/material/divider';
@NgModule({ @NgModule({
imports: [CommonModule, RouterModule, CoreModule.forChild()], imports: [CommonModule, RouterModule, CoreModule.forChild(), MatDividerModule],
declarations: [ViewProfileComponent] declarations: [ViewProfileComponent]
}) })
export class ViewProfileModule {} export class ViewProfileModule {}