Skip to content

Commit 1e2e392

Browse files
committed
test: TT-332 unit test to check if the user has the dark-mode feature toggle enabled
1 parent b99fa46 commit 1e2e392

File tree

2 files changed

+21
-5
lines changed

2 files changed

+21
-5
lines changed

src/app/modules/shared/components/dark-mode/dark-mode.component.spec.ts

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,16 @@
1-
import { ComponentFixture, TestBed} from '@angular/core/testing';
1+
import { ComponentFixture, fakeAsync, TestBed, tick} from '@angular/core/testing';
2+
import { of } from 'rxjs';
3+
import { delay } from 'rxjs/operators';
4+
import { FeatureToggleGeneralService } from '../../feature-toggles/feature-toggle-general/feature-toggle-general.service';
5+
import { FeatureToggleModel } from '../../feature-toggles/feature-toggle.model';
6+
import { FeatureFilterModel } from '../../feature-toggles/filters/feature-filter.model';
27
import { DarkModeComponent } from './dark-mode.component';
38

49
describe('DarkModeComponent', () => {
510
let component: DarkModeComponent;
611
let fixture: ComponentFixture<DarkModeComponent>;
712
let html: HTMLElement;
13+
let featureToggleGeneralService: FeatureToggleGeneralService;
814

915
beforeEach(async () => {
1016
await TestBed.configureTestingModule({
@@ -16,6 +22,7 @@ describe('DarkModeComponent', () => {
1622
fixture = TestBed.createComponent(DarkModeComponent);
1723
component = fixture.componentInstance;
1824
html = document.documentElement;
25+
featureToggleGeneralService = TestBed.inject(FeatureToggleGeneralService);
1926
fixture.detectChanges();
2027
});
2128

@@ -76,4 +83,14 @@ describe('DarkModeComponent', () => {
7683
expect(localStorage.getItem('theme')).toEqual('dark');
7784
expect(html.classList.contains('dark')).toBe(true);
7885
});
86+
87+
it('should be true the isFeatureToggleDarkModeActive property when the user has the dark-mode feature toggle enabled', fakeAsync(() => {
88+
const filters : FeatureFilterModel[] = [];
89+
const featureToggle: FeatureToggleModel = {name: 'dark-mode', enabled: true, filters};
90+
spyOn(featureToggleGeneralService, 'getActivated').and.returnValue(of([featureToggle]).pipe(delay(1)));
91+
component.ngOnInit();
92+
tick(1);
93+
expect(component.isFeatureToggleDarkModeActive).toBeTruthy();
94+
}));
95+
7996
});

src/app/modules/shared/components/dark-mode/dark-mode.component.ts

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import { Component, OnInit } from '@angular/core';
2-
import { CookieService } from 'ngx-cookie-service';
32
import { FeatureToggle } from 'src/environments/enum';
43
import { FeatureToggleGeneralService } from '../../feature-toggles/feature-toggle-general/feature-toggle-general.service';
54

@@ -12,13 +11,13 @@ export class DarkModeComponent implements OnInit {
1211
public isFeatureToggleDarkModeActive: boolean;
1312

1413
constructor(
15-
private cookiesService: CookieService,
1614
private featureToggleGeneralService: FeatureToggleGeneralService
1715
) {}
1816

1917
ngOnInit() {
20-
this.featureToggleGeneralService.getActivated().subscribe(() => {
21-
this.isFeatureToggleDarkModeActive = this.cookiesService.get(FeatureToggle.DARK_MODE) === 'true';
18+
this.featureToggleGeneralService.getActivated().subscribe((featuresToggles) => {
19+
const darkModeToggle = featuresToggles.find( (item) => item.name === FeatureToggle.DARK_MODE);
20+
this.isFeatureToggleDarkModeActive = darkModeToggle.enabled;
2221
if (this.isFeatureToggleDarkModeActive) {
2322
this.checkThemeInLocalStorage();
2423
this.addOrRemoveDarkMode();

0 commit comments

Comments
 (0)