Skip to content

Commit c5bf7ee

Browse files
bytesantiagoEdansRockssemantic-release-botjcalarcon98
authored
TT-317 remove feature manager service (#739)
* perf: TT-316 removal of ui-list-technologies toggle, technologies-report.guard and their dependants * perf: TT-317 remove unnecessary features from FeatureManagerService * code-smell: TT-316 remove comments and unnecessary variable assignments * code-smell: TT-316 removal of an additional unnecessary import * Tt 319 fix calendar day week view (#738) * fix: TT-319 Fix calendar week and day view * refactor: TT-319 select first day of the month when select on calendar * refactor: TT-319 Change moment library with date Co-authored-by: Andrés Soto <edansrock> * perf: TT-316 Remove technologies-report-guard/ and remove the feature toggle ui-list-technologies (#736) * perf: TT-316 removal of ui-list-technologies toggle, technologies-report.guard and their dependants * code-smell: TT-316 remove comments and unnecessary variable assignments * code-smell: TT-316 removal of an additional unnecessary import * chore(release): 1.50.1 [skip ci]nn * perf: TT-317 remove unnecessary features from FeatureManagerService * fix: TT-325 Fix wront Test in calendar component (#741) * chore(release): 1.50.2 [skip ci]nn * perf: TT-317 remove unnecessary features from FeatureManagerService * code-smell: TT-317 remove code smells indicated by sonarcloud Co-authored-by: EdansRocks <[email protected]> Co-authored-by: semantic-release-bot <[email protected]> Co-authored-by: Jean Carlos Alarcón <[email protected]>
1 parent 36eb2b9 commit c5bf7ee

File tree

5 files changed

+1
-79
lines changed

5 files changed

+1
-79
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 & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import { FeatureToggle } from './../../../../../environments/enum';
21
import { TestBed } from '@angular/core/testing';
32
import { of } from 'rxjs';
43
import { FeatureManagerService } from '../feature-toggle-manager.service';
@@ -23,18 +22,6 @@ describe('FeatureToggleGeneralService', () => {
2322
expect(featureToggleGeneralService).toBeTruthy();
2423
});
2524

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-
3825
it('getActivated return a FeatureToggleModel', () => {
3926
const anyNotMatchingFilter = new TargetingFeatureFilterModel(
4027
{ 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 & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
import { map } from 'rxjs/operators';
2-
import { FeatureToggle } from './../../../../../environments/enum';
31
import { Injectable } from '@angular/core';
42
import { Observable } from 'rxjs';
53
import { FeatureManagerService } from '../feature-toggle-manager.service';
@@ -11,10 +9,6 @@ import { FeatureToggleModel } from '../feature-toggle.model';
119
export class FeatureToggleGeneralService {
1210
constructor(private featureManagerService: FeatureManagerService) {}
1311

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

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

Lines changed: 0 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,6 @@ import { TargetingFeatureFilterModel } from './filters/targeting/targeting-featu
99

1010

1111
describe('FeatureToggleManager', () => {
12-
const featureToggleKey = 'foo';
13-
const featureToggleLabel = 'dev';
1412
const fakeAppConfigurationConnectionString = 'Endpoint=http://fake.foo;Id=fake.id;Secret=fake.secret';
1513
const aFeatureToggle = new FeatureToggleModel('any-id', true, []);
1614
let service: FeatureManagerService;
@@ -26,18 +24,6 @@ describe('FeatureToggleManager', () => {
2624
spyOn(fakeFeatureToggleProvider, 'getFeatureToggle').and.returnValue(of(aFeatureToggle));
2725
service = new FeatureManagerService(fakeFeatureToggleProvider);
2826
});
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-
});
4127
});
4228

4329

@@ -52,29 +38,14 @@ describe('FeatureToggleManager', () => {
5238
);
5339

5440
let aToggleWithFilters;
55-
let getFeatureToggleSpy;
5641

5742
beforeEach(() => {
5843
aToggleWithFilters = new FeatureToggleModel('any-other-id', true, [anyMatchingFilter]);
5944
fakeFeatureToggleProvider = new FeatureToggleProvider(
6045
new AppConfigurationClient(fakeAppConfigurationConnectionString),
6146
new FeatureFilterProvider(new AzureAdB2CService())
6247
);
63-
getFeatureToggleSpy = spyOn(fakeFeatureToggleProvider, 'getFeatureToggle').and.returnValue(of(aToggleWithFilters));
6448
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-
});
7849
});
7950

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

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

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

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

Lines changed: 1 addition & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { Injectable } from '@angular/core';
2-
import { from, Observable, zip } from 'rxjs';
2+
import { from, Observable} from 'rxjs';
33
import { map } from 'rxjs/operators';
44
import { FeatureToggleProvider } from './feature-toggle-provider.service';
55
import { FeatureToggleModel } from './feature-toggle.model';
@@ -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)