1- import { EFlag } from '../../../types/api/enums' ;
1+ import { ECapacityAlert , EFlag } from '../../../types/api/enums' ;
22import { EVDiskState } from '../../../types/api/vdisk' ;
33import { calculateVDiskSeverity } from '../calculateVDiskSeverity' ;
44import { DISK_COLOR_STATE_TO_NUMERIC_SEVERITY } from '../constants' ;
@@ -18,7 +18,7 @@ describe('VDisk state', () => {
1818 const severity3 = calculateVDiskSeverity ( {
1919 VDiskState : EVDiskState . OK , // severity 1, green
2020 DiskSpace : EFlag . Yellow , // severity 3, yellow
21- FrontQueues : EFlag . Orange , // severity 4, orange
21+ FrontQueues : EFlag . Orange , // severity 4, orange — but capped at yellow (3)
2222 } ) ;
2323
2424 expect ( severity1 ) . toEqual ( DISK_COLOR_STATE_TO_NUMERIC_SEVERITY . Yellow ) ;
@@ -30,16 +30,34 @@ describe('VDisk state', () => {
3030 const severity1 = calculateVDiskSeverity ( {
3131 VDiskState : EVDiskState . OK , // severity 1, green
3232 DiskSpace : EFlag . Green , // severity 1, green
33- FrontQueues : EFlag . Red , // severity 5, red
33+ FrontQueues : EFlag . Red , // severity 5, red — but capped at yellow
34+ } ) ;
35+
36+ expect ( severity1 ) . toEqual ( DISK_COLOR_STATE_TO_NUMERIC_SEVERITY . Yellow ) ;
37+ } ) ;
38+
39+ test ( 'Should display DiskSpace Orange as Red severity' , ( ) => {
40+ const severity = calculateVDiskSeverity ( {
41+ VDiskState : EVDiskState . OK ,
42+ DiskSpace : EFlag . Orange ,
43+ } ) ;
44+
45+ expect ( severity ) . toEqual ( DISK_COLOR_STATE_TO_NUMERIC_SEVERITY . Red ) ;
46+ } ) ;
47+
48+ test ( 'Should display DiskSpace Red as Red severity' , ( ) => {
49+ const severity1 = calculateVDiskSeverity ( {
50+ VDiskState : EVDiskState . OK ,
51+ DiskSpace : EFlag . Red ,
3452 } ) ;
3553 const severity2 = calculateVDiskSeverity ( {
36- VDiskState : EVDiskState . OK , // severity 1, green
37- DiskSpace : EFlag . Red , // severity 5, red
38- FrontQueues : EFlag . Red , // severity 5, red
54+ VDiskState : EVDiskState . OK ,
55+ DiskSpace : EFlag . Red ,
56+ FrontQueues : EFlag . Red ,
3957 } ) ;
4058
41- expect ( severity1 ) . not . toEqual ( DISK_COLOR_STATE_TO_NUMERIC_SEVERITY . Red ) ;
42- expect ( severity2 ) . toEqual ( DISK_COLOR_STATE_TO_NUMERIC_SEVERITY . Yellow ) ;
59+ expect ( severity1 ) . toEqual ( DISK_COLOR_STATE_TO_NUMERIC_SEVERITY . Red ) ;
60+ expect ( severity2 ) . toEqual ( DISK_COLOR_STATE_TO_NUMERIC_SEVERITY . Red ) ;
4361 } ) ;
4462
4563 // prettier-ignore
@@ -127,15 +145,15 @@ describe('VDisk state', () => {
127145
128146 test ( 'Should display replicating VDisks in a not-OK state with a regular color' , ( ) => {
129147 const severity1 = calculateVDiskSeverity ( {
130- VDiskState : EVDiskState . Initial , // severity 3, yellow
148+ VDiskState : EVDiskState . Initial , // severity 5, red
131149 Replicated : false ,
132150 } ) ;
133151 const severity2 = calculateVDiskSeverity ( {
134152 VDiskState : EVDiskState . PDiskError , // severity 5, red
135153 Replicated : false ,
136154 } ) ;
137155
138- expect ( severity1 ) . toEqual ( DISK_COLOR_STATE_TO_NUMERIC_SEVERITY . Yellow ) ;
156+ expect ( severity1 ) . toEqual ( DISK_COLOR_STATE_TO_NUMERIC_SEVERITY . Red ) ;
139157 expect ( severity2 ) . toEqual ( DISK_COLOR_STATE_TO_NUMERIC_SEVERITY . Red ) ;
140158 } ) ;
141159
@@ -146,7 +164,7 @@ describe('VDisk state', () => {
146164 DonorMode : true ,
147165 } ) ;
148166 const severity2 = calculateVDiskSeverity ( {
149- VDiskState : EVDiskState . Initial , // severity 3, yellow
167+ VDiskState : EVDiskState . Initial , // severity 5, red
150168 Replicated : false ,
151169 DonorMode : true ,
152170 } ) ;
@@ -157,7 +175,77 @@ describe('VDisk state', () => {
157175 } ) ;
158176
159177 expect ( severity1 ) . toEqual ( DISK_COLOR_STATE_TO_NUMERIC_SEVERITY . Blue ) ;
160- expect ( severity2 ) . toEqual ( DISK_COLOR_STATE_TO_NUMERIC_SEVERITY . Yellow ) ;
178+ expect ( severity2 ) . toEqual ( DISK_COLOR_STATE_TO_NUMERIC_SEVERITY . Red ) ;
161179 expect ( severity3 ) . toEqual ( DISK_COLOR_STATE_TO_NUMERIC_SEVERITY . Red ) ;
162180 } ) ;
163181} ) ;
182+
183+ describe ( 'VDisk CapacityAlert' , ( ) => {
184+ test ( 'Should use CapacityAlert instead of DiskSpace when CapacityAlert is present' , ( ) => {
185+ const severity = calculateVDiskSeverity ( {
186+ VDiskState : EVDiskState . OK ,
187+ DiskSpace : EFlag . Red ,
188+ FrontQueues : EFlag . Orange ,
189+ CapacityAlert : ECapacityAlert . GREEN ,
190+ } ) ;
191+
192+ // CapacityAlert GREEN maps to Green severity and overrides DiskSpace completely
193+ // VDiskStateSeverity is Green (1), CapacityAlert-derived severity is Green (1)
194+ // FrontQueuesSeverity is Orange (4), but capped at Yellow (3)
195+ // max(1, 3, 1, 3) = Yellow
196+ expect ( severity ) . toEqual ( DISK_COLOR_STATE_TO_NUMERIC_SEVERITY . Yellow ) ;
197+ } ) ;
198+
199+ test ( 'Should return Green severity for GREEN and CYAN CapacityAlert' , ( ) => {
200+ expect (
201+ calculateVDiskSeverity ( {
202+ VDiskState : EVDiskState . OK ,
203+ CapacityAlert : ECapacityAlert . GREEN ,
204+ } ) ,
205+ ) . toEqual ( DISK_COLOR_STATE_TO_NUMERIC_SEVERITY . Green ) ;
206+
207+ expect (
208+ calculateVDiskSeverity ( {
209+ VDiskState : EVDiskState . OK ,
210+ CapacityAlert : ECapacityAlert . CYAN ,
211+ } ) ,
212+ ) . toEqual ( DISK_COLOR_STATE_TO_NUMERIC_SEVERITY . Green ) ;
213+ } ) ;
214+
215+ test ( 'Should return Yellow severity for LIGHT_YELLOW CapacityAlert' , ( ) => {
216+ expect (
217+ calculateVDiskSeverity ( {
218+ VDiskState : EVDiskState . OK ,
219+ CapacityAlert : ECapacityAlert . LIGHTYELLOW ,
220+ } ) ,
221+ ) . toEqual ( DISK_COLOR_STATE_TO_NUMERIC_SEVERITY . Yellow ) ;
222+ } ) ;
223+
224+ test ( 'Should return Red severity for danger-level CapacityAlert values' , ( ) => {
225+ const dangerAlerts = [
226+ ECapacityAlert . YELLOW ,
227+ ECapacityAlert . LIGHTORANGE ,
228+ ECapacityAlert . PREORANGE ,
229+ ECapacityAlert . ORANGE ,
230+ ECapacityAlert . RED ,
231+ ECapacityAlert . BLACK ,
232+ ] ;
233+
234+ for ( const alert of dangerAlerts ) {
235+ expect (
236+ calculateVDiskSeverity ( {
237+ VDiskState : EVDiskState . OK ,
238+ CapacityAlert : alert ,
239+ } ) ,
240+ ) . toEqual ( DISK_COLOR_STATE_TO_NUMERIC_SEVERITY . Red ) ;
241+ }
242+ } ) ;
243+
244+ test ( 'Should still display as unavailable when no VDiskState even with CapacityAlert' , ( ) => {
245+ const severity = calculateVDiskSeverity ( {
246+ CapacityAlert : ECapacityAlert . RED ,
247+ } ) ;
248+
249+ expect ( severity ) . toEqual ( DISK_COLOR_STATE_TO_NUMERIC_SEVERITY . Grey ) ;
250+ } ) ;
251+ } ) ;
0 commit comments