]> git.proxmox.com Git - ceph.git/blame - ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/services/feature-toggles.service.spec.ts
update source to Ceph Pacific 16.2.2
[ceph.git] / ceph / src / pybind / mgr / dashboard / frontend / src / app / shared / services / feature-toggles.service.spec.ts
CommitLineData
11fdf7f2
TL
1import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing';
2import { discardPeriodicTasks, fakeAsync, TestBed, tick } from '@angular/core/testing';
3
f67539c2 4import { configureTestBed } from '~/testing/unit-test-helper';
11fdf7f2
TL
5import { FeatureTogglesService } from './feature-toggles.service';
6
7describe('FeatureTogglesService', () => {
8 let httpTesting: HttpTestingController;
9 let service: FeatureTogglesService;
10
11 configureTestBed({
12 providers: [FeatureTogglesService],
13 imports: [HttpClientTestingModule]
14 });
15
16 beforeEach(() => {
f67539c2
TL
17 service = TestBed.inject(FeatureTogglesService);
18 httpTesting = TestBed.inject(HttpTestingController);
11fdf7f2
TL
19 });
20
21 afterEach(() => {
22 httpTesting.verify();
23 });
24
25 it('should be created', () => {
26 expect(service).toBeTruthy();
27 });
28
29 it('should fetch HTTP endpoint once and only once', fakeAsync(() => {
30 const mockFeatureTogglesMap = [
31 {
32 rbd: true,
33 mirroring: true,
34 iscsi: true,
35 cephfs: true,
36 rgw: true
37 }
38 ];
39
40 service
41 .get()
42 .subscribe((featureTogglesMap) => expect(featureTogglesMap).toEqual(mockFeatureTogglesMap));
43 tick();
44
45 // Second subscription shouldn't trigger a new HTTP request
46 service
47 .get()
48 .subscribe((featureTogglesMap) => expect(featureTogglesMap).toEqual(mockFeatureTogglesMap));
49
50 const req = httpTesting.expectOne(service.API_URL);
51 req.flush(mockFeatureTogglesMap);
52 discardPeriodicTasks();
53 }));
54});