Skip to content

Commit 5cac9d6

Browse files
committed
perf: TT-317 remove unnecessary features from FeatureManagerService
1 parent ffc8ed9 commit 5cac9d6

File tree

5 files changed

+0
-71
lines changed

5 files changed

+0
-71
lines changed

src/app/modules/shared/components/sidebar/sidebar.component.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ import { ItemSidebar } from './models/item-sidebar.model';
33
import { NavigationStart, Router } from '@angular/router';
44
import { Observable, Subscription } from 'rxjs';
55
import { filter, map } from 'rxjs/operators';
6-
import { FeatureManagerService } from '../../feature-toggles/feature-toggle-manager.service';
76
import { UserInfoService } from 'src/app/modules/user/services/user-info.service';
87

98
@Component({
@@ -19,7 +18,6 @@ export class SidebarComponent implements OnInit, OnDestroy {
1918
constructor(
2019
private router: Router,
2120
private userInfoService: UserInfoService,
22-
private featureManagerService: FeatureManagerService,
2321
) {
2422
this.navStart = this.router.events.pipe(
2523
filter((evt) => evt instanceof NavigationStart)

src/app/modules/shared/feature-toggles/feature-toggle-general/feature-toggle-general.service.spec.ts

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -23,18 +23,6 @@ describe('FeatureToggleGeneralService', () => {
2323
expect(featureToggleGeneralService).toBeTruthy();
2424
});
2525

26-
const params = [{ bool: false }, { bool: true }];
27-
params.map((param) => {
28-
it(`isActivated should return a boolean ${param.bool}`, () => {
29-
const toggleName = FeatureToggle.SWITCH_GROUP;
30-
featureManagerService.isToggleEnabledForUser = () => of(param.bool);
31-
32-
featureToggleGeneralService.isActivated(toggleName).subscribe((enabled) => {
33-
expect(enabled).toBe(param.bool);
34-
});
35-
});
36-
});
37-
3826
it('getActivated return a FeatureToggleModel', () => {
3927
const anyNotMatchingFilter = new TargetingFeatureFilterModel(
4028
{ Audience: { Groups: ['a-group'], Users: ['user-a'] } },

src/app/modules/shared/feature-toggles/feature-toggle-general/feature-toggle-general.service.ts

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,6 @@ import { FeatureToggleModel } from '../feature-toggle.model';
1111
export class FeatureToggleGeneralService {
1212
constructor(private featureManagerService: FeatureManagerService) {}
1313

14-
isActivated(featureToggle: FeatureToggle): Observable<boolean> {
15-
return this.featureManagerService.isToggleEnabledForUser(featureToggle);
16-
}
17-
1814
getActivated(): Observable<FeatureToggleModel[]>{
1915
return this.featureManagerService.getAllFeatureToggleEnableForUser();
2016
}

src/app/modules/shared/feature-toggles/feature-toggle-manager.service.spec.ts

Lines changed: 0 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -26,18 +26,6 @@ describe('FeatureToggleManager', () => {
2626
spyOn(fakeFeatureToggleProvider, 'getFeatureToggle').and.returnValue(of(aFeatureToggle));
2727
service = new FeatureManagerService(fakeFeatureToggleProvider);
2828
});
29-
it('manager uses feature provider to build feature toggle model', async () => {
30-
service.isToggleEnabled(featureToggleKey, featureToggleLabel).subscribe((value) => {
31-
32-
expect(fakeFeatureToggleProvider).toHaveBeenCalledWith(featureToggleKey, featureToggleLabel);
33-
});
34-
});
35-
36-
it('manager extracts enabled attribute from feature toggle model', async () => {
37-
service.isToggleEnabled(featureToggleKey, featureToggleLabel).subscribe((value) => {
38-
expect(value).toEqual(aFeatureToggle.enabled);
39-
});
40-
});
4129
});
4230

4331

@@ -62,19 +50,6 @@ describe('FeatureToggleManager', () => {
6250
);
6351
getFeatureToggleSpy = spyOn(fakeFeatureToggleProvider, 'getFeatureToggle').and.returnValue(of(aToggleWithFilters));
6452
service = new FeatureManagerService(fakeFeatureToggleProvider);
65-
spyOn(service, 'isToggleEnabled').and.returnValue(of(true));
66-
});
67-
68-
it('manager uses feature provider to build feature toggle model', async () => {
69-
service.isToggleEnabledForUser(featureToggleKey, featureToggleLabel).subscribe((value) => {
70-
expect(getFeatureToggleSpy).toHaveBeenCalledWith(featureToggleKey, featureToggleLabel);
71-
});
72-
});
73-
74-
it('given a feature toggle with filters which match the verification, then the response is true', async () => {
75-
service.isToggleEnabledForUser(featureToggleKey, featureToggleLabel).subscribe((value) => {
76-
expect(value).toEqual(true);
77-
});
7853
});
7954

8055
it('given a feature toggle with filters which do not match the verification, then the response is false', async () => {
@@ -87,9 +62,6 @@ describe('FeatureToggleManager', () => {
8762
spyOn(fakeFeatureToggleProvider, 'getFeatureToggle').and.returnValue(of(aToggleWithFilters));
8863
service = new FeatureManagerService(fakeFeatureToggleProvider);
8964

90-
service.isToggleEnabledForUser(featureToggleKey, featureToggleLabel).subscribe((value) => {
91-
expect(value).toEqual(false);
92-
});
9365
});
9466

9567
it('Get empty when getAllFeatureToggle() return empty', () => {

src/app/modules/shared/feature-toggles/feature-toggle-manager.service.ts

Lines changed: 0 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -11,31 +11,6 @@ export class FeatureManagerService {
1111

1212
constructor(private featureToggleProvider: FeatureToggleProvider) { }
1313

14-
public isToggleEnabled(toggleName: string, toggleLabel?: string): Observable<boolean> {
15-
return this.featureToggleProvider
16-
.getFeatureToggle(toggleName, toggleLabel)
17-
.pipe(map((featureToggle) => featureToggle.enabled));
18-
}
19-
20-
public isToggleEnabledForUser(toggleName: string, toggleLabel?: string): Observable<boolean> {
21-
const matchesFilters$: Observable<boolean> = this.featureToggleProvider
22-
.getFeatureToggle(toggleName, toggleLabel)
23-
.pipe(
24-
map(featureToggle => featureToggle.filters),
25-
map(filters => filters.map(filter => filter.evaluate())),
26-
map(filterEvaluations => filterEvaluations.includes(true))
27-
);
28-
29-
const result$: Observable<boolean> = zip(
30-
this.isToggleEnabled(toggleName, toggleLabel),
31-
matchesFilters$
32-
).pipe(
33-
map(([enabled, enabledForUser]) => enabled && enabledForUser)
34-
);
35-
36-
return result$;
37-
}
38-
3914
public getAllFeatureToggleEnableForUser(): Observable<FeatureToggleModel[]> {
4015
return from(this.featureToggleProvider.getAllFeatureToggle()).pipe(
4116
map((allFeatureToggle) =>

0 commit comments

Comments
 (0)