@@ -106,6 +106,36 @@ describe('FlagResolver', () => {
106106 expect ( resolver . enabled ( 'b-off-default' as FlagId ) ) . toBe ( true ) ;
107107 } ) ;
108108
109+ it ( 'reports externallyControlled and overridden the same way the v2 engine does' , ( ) => {
110+ const agreeing = new FlagResolver ( { [ DEFS [ 0 ] . env ] : '0' } , DEFS , { 'a-on-default' : false } as never ) ;
111+ expect ( agreeing . explain ( 'a-on-default' as FlagId ) ) . toMatchObject ( {
112+ enabled : false ,
113+ source : 'env' ,
114+ configValue : false ,
115+ externallyControlled : true ,
116+ overridden : false ,
117+ } ) ;
118+ const overriding = new FlagResolver ( { [ DEFS [ 0 ] . env ] : '1' } , DEFS , { 'a-on-default' : false } as never ) ;
119+ expect ( overriding . explain ( 'a-on-default' as FlagId ) ) . toMatchObject ( {
120+ enabled : true ,
121+ source : 'env' ,
122+ externallyControlled : true ,
123+ overridden : true ,
124+ } ) ;
125+ const saved = new FlagResolver ( { } , DEFS , { 'a-on-default' : false } as never ) ;
126+ expect ( saved . explain ( 'a-on-default' as FlagId ) ) . toMatchObject ( {
127+ source : 'config' ,
128+ externallyControlled : false ,
129+ overridden : false ,
130+ } ) ;
131+ expect ( new FlagResolver ( { } , DEFS ) . explain ( 'a-on-default' as FlagId ) ) . toMatchObject ( {
132+ source : 'default' ,
133+ configValue : undefined ,
134+ externallyControlled : false ,
135+ overridden : false ,
136+ } ) ;
137+ } ) ;
138+
109139 it ( 'ignores obsolete config override ids outside the registry' , ( ) => {
110140 const resolver = new FlagResolver ( { } , DEFS , {
111141 'a-on-default' : false ,
0 commit comments