X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=webapp-frontend%2Fsrc%2Fapp%2Fapp.component.spec.ts;h=1ade262a50ee0847a315792237e95cc2fa33c708;hb=3fe1dac7e8d82e2e9dedb52e82f45e493d0ff6de;hp=24a2d6fa610781a2354baaeecf9fdb471283785d;hpb=5d7de18e40bb0da67d375d9461f9106ec3ea8e51;p=portal%2Fnonrtric-controlpanel.git diff --git a/webapp-frontend/src/app/app.component.spec.ts b/webapp-frontend/src/app/app.component.spec.ts index 24a2d6f..1ade262 100644 --- a/webapp-frontend/src/app/app.component.spec.ts +++ b/webapp-frontend/src/app/app.component.spec.ts @@ -18,15 +18,20 @@ * ========================LICENSE_END=================================== */ import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core'; -import { TestBed, async } from '@angular/core/testing'; +import { TestBed, async, ComponentFixture } from '@angular/core/testing'; import { RouterTestingModule } from '@angular/router/testing'; -import { CookieService } from 'ngx-cookie'; +import { CookieService } from 'ngx-cookie-service'; import { AppComponent } from './app.component'; import { UiService } from './services/ui/ui.service'; describe('AppComponent', () => { + let fixture: ComponentFixture; + let app: AppComponent; + let cookieServiceSpy: any; + let uiService: UiService; + beforeEach(async(() => { - const cookieSpy = jasmine.createSpyObj('CookieService', [ 'get' ]); + cookieServiceSpy = jasmine.createSpyObj('CookieService', [ 'get', 'set' ]); TestBed.configureTestingModule({ imports: [ RouterTestingModule @@ -38,15 +43,80 @@ describe('AppComponent', () => { AppComponent ], providers: [ - { provide: CookieService, useValue: cookieSpy }, + { provide: CookieService, useValue: cookieServiceSpy }, UiService ] }).compileComponents(); })); + beforeEach(() => { + fixture = TestBed.createComponent(AppComponent); + app = fixture.componentInstance; + uiService = TestBed.inject(UiService); + fixture.detectChanges(); + }); + it('should create the app', () => { - const fixture = TestBed.createComponent(AppComponent); - const app = fixture.debugElement.componentInstance; expect(app).toBeTruthy(); }); + + describe('#content', () => { + it('should contain oran logo', async(() => { + const ele = fixture.debugElement.nativeElement.querySelector('img'); + expect(ele.src).toContain('assets/oran-logo.png'); + })); + + it('should contain navigation menu', async(() => { + const ele = fixture.debugElement.nativeElement.querySelector('nrcp-sidenav-list'); + expect(ele).toBeTruthy(); + })); + + it('should contain dark mode selector', async(() => { + const ele = fixture.debugElement.nativeElement.querySelector('#darkModeSwitch'); + expect(ele).toBeTruthy(); + })); + + it('should contain heading', async(() => { + const ele = fixture.debugElement.nativeElement.querySelector('tspan'); + expect(ele.textContent.trim()).toBe('Non-RT RIC Control Panel'); + })); + + it('should contain router-outlet', async(() => { + const ele = fixture.debugElement.nativeElement.querySelector('router-outlet'); + expect(ele).toBeTruthy(); + })); + + it('should contain nrcp-footer', async(() => { + const ele = fixture.debugElement.nativeElement.querySelector('nrcp-footer'); + expect(ele).toBeTruthy(); + })); + }); + + describe('#darkMode', () => { + it('when dark mode value yes from cookie at start should set mode to dark', () => { + uiService.darkModeState.next(false); // Set internal state to light mode. + cookieServiceSpy.get.and.returnValue('yes'); // Cookie shall return dark mode used. + + app.ngOnInit(); + + expect(uiService.getDarkMode()).toBeTruthy(); + expect(app.darkMode).toBeTruthy(); + expect(cookieServiceSpy.get).toHaveBeenCalled(); + }); + + it('should toggle dark mode when selector is clicked', () => { + const darkModeSelector = fixture.debugElement.nativeElement.querySelector('#darkModeSwitch'); + + // Toggle to light mode + darkModeSelector.click(); + expect(uiService.getDarkMode()).toBeFalsy(); + expect(cookieServiceSpy.set).toHaveBeenCalledWith('darkMode', 'no'); + + + // Toggle to dark mode + darkModeSelector.click(); + expect(uiService.getDarkMode()).toBeTruthy(); + expect(cookieServiceSpy.set).toHaveBeenCalledWith('darkMode', 'yes'); + }); + }); });