+ 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');
+ });
+ });
+});