]> git.proxmox.com Git - ceph.git/blame - ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/cluster/monitor/monitor.component.spec.ts
bump version to 19.2.0-pve1
[ceph.git] / ceph / src / pybind / mgr / dashboard / frontend / src / app / ceph / cluster / monitor / monitor.component.spec.ts
CommitLineData
92f5a8d4 1import { HttpClientTestingModule } from '@angular/common/http/testing';
11fdf7f2
TL
2import { NO_ERRORS_SCHEMA } from '@angular/core';
3import { ComponentFixture, TestBed } from '@angular/core/testing';
4
92f5a8d4
TL
5import { of } from 'rxjs';
6
f67539c2
TL
7import { MonitorService } from '~/app/shared/api/monitor.service';
8import { SharedModule } from '~/app/shared/shared.module';
9import { configureTestBed } from '~/testing/unit-test-helper';
11fdf7f2
TL
10import { MonitorComponent } from './monitor.component';
11
12describe('MonitorComponent', () => {
13 let component: MonitorComponent;
14 let fixture: ComponentFixture<MonitorComponent>;
92f5a8d4 15 let getMonitorSpy: jasmine.Spy;
11fdf7f2
TL
16
17 configureTestBed({
f67539c2 18 imports: [HttpClientTestingModule, SharedModule],
11fdf7f2
TL
19 declarations: [MonitorComponent],
20 schemas: [NO_ERRORS_SCHEMA],
f67539c2 21 providers: [MonitorService]
11fdf7f2
TL
22 });
23
24 beforeEach(() => {
25 fixture = TestBed.createComponent(MonitorComponent);
26 component = fixture.componentInstance;
9f95a23c 27 const getMonitorPayload: Record<string, any> = {
92f5a8d4
TL
28 in_quorum: [
29 {
30 stats: { num_sessions: [[1, 5]] }
31 },
32 {
801d1391
TL
33 stats: {
34 num_sessions: [
35 [1, 1],
36 [2, 10],
37 [3, 1]
38 ]
39 }
92f5a8d4
TL
40 },
41 {
801d1391
TL
42 stats: {
43 num_sessions: [
44 [1, 0],
45 [2, 3]
46 ]
47 }
92f5a8d4
TL
48 },
49 {
801d1391
TL
50 stats: {
51 num_sessions: [
52 [1, 2],
53 [2, 1],
54 [3, 7],
55 [4, 5]
56 ]
57 }
92f5a8d4
TL
58 }
59 ],
60 mon_status: null,
61 out_quorum: []
62 };
f67539c2 63 getMonitorSpy = spyOn(TestBed.inject(MonitorService), 'getMonitor').and.returnValue(
92f5a8d4
TL
64 of(getMonitorPayload)
65 );
11fdf7f2
TL
66 });
67
68 it('should create', () => {
69 expect(component).toBeTruthy();
70 });
92f5a8d4
TL
71
72 it('should sort by open sessions column correctly', () => {
73 component.refresh();
74
75 expect(getMonitorSpy).toHaveBeenCalled();
76
77 expect(component.inQuorum.columns[3].comparator(undefined, undefined)).toBe(0);
78 expect(component.inQuorum.columns[3].comparator(null, null)).toBe(0);
79 expect(component.inQuorum.columns[3].comparator([], [])).toBe(0);
80 expect(
81 component.inQuorum.columns[3].comparator(
82 component.inQuorum.data[0].cdOpenSessions,
83 component.inQuorum.data[3].cdOpenSessions
84 )
85 ).toBe(0);
86 expect(
87 component.inQuorum.columns[3].comparator(
88 component.inQuorum.data[0].cdOpenSessions,
89 component.inQuorum.data[1].cdOpenSessions
90 )
91 ).toBe(1);
92 expect(
93 component.inQuorum.columns[3].comparator(
94 component.inQuorum.data[1].cdOpenSessions,
95 component.inQuorum.data[0].cdOpenSessions
96 )
97 ).toBe(-1);
98 expect(
99 component.inQuorum.columns[3].comparator(
100 component.inQuorum.data[2].cdOpenSessions,
101 component.inQuorum.data[1].cdOpenSessions
102 )
103 ).toBe(1);
104 });
11fdf7f2 105});