import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
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';
+import { UiService } from '@services/ui/ui.service';
describe('AppComponent', () => {
let fixture: ComponentFixture<AppComponent>;
+ 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
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 app = fixture.componentInstance;
expect(app).toBeTruthy();
});
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');
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');
+ });
+ });
});