mirror of
				https://github.com/Unleash/unleash.git
				synced 2025-10-27 11:02:16 +01:00 
			
		
		
		
	fix: flag resolver get variant (#6020)
https://linear.app/unleash/issue/2-1880/fix-flag-resolver-getvariant-behavior Fixes the flag resolver `getVariant` behavior when there's a variant object set in `experimental` - The flag resolver should call the external resolver `getVariant` when not overridden to be true, even if set as variant object in `experimental`. Related: https://github.com/Unleash/unleash/pull/3808
This commit is contained in:
		
							parent
							
								
									cee2500a4d
								
							
						
					
					
						commit
						331033408c
					
				| @ -174,3 +174,44 @@ test('should expose an helper to get variant value', () => { | ||||
|         foo: 'bar', | ||||
|     }); | ||||
| }); | ||||
| 
 | ||||
| test('should call external resolver getVariant when not overridden to be true, even if set as object in experimental', () => { | ||||
|     const variant = { | ||||
|         enabled: true, | ||||
|         name: 'variant', | ||||
|         payload: { | ||||
|             type: PayloadType.STRING, | ||||
|             value: 'variant-A', | ||||
|         }, | ||||
|     }; | ||||
| 
 | ||||
|     const externalResolver = { | ||||
|         isEnabled: () => true, | ||||
|         getVariant: (name: string) => { | ||||
|             if (name === 'variantFlag') { | ||||
|                 return variant; | ||||
|             } | ||||
|             return getDefaultVariant(); | ||||
|         }, | ||||
|     }; | ||||
| 
 | ||||
|     const config = { | ||||
|         flags: { | ||||
|             variantFlag: { | ||||
|                 name: 'variant-flag', | ||||
|                 enabled: false, | ||||
|                 payload: { | ||||
|                     type: PayloadType.JSON, | ||||
|                     value: '', | ||||
|                 }, | ||||
|             }, | ||||
|         }, | ||||
|         externalResolver, | ||||
|     }; | ||||
| 
 | ||||
|     const resolver = new FlagResolver(config as IExperimentalOptions); | ||||
| 
 | ||||
|     expect(resolver.getVariant('variantFlag' as IFlagKey)).toStrictEqual( | ||||
|         variant, | ||||
|     ); | ||||
| }); | ||||
|  | ||||
| @ -57,7 +57,7 @@ export default class FlagResolver implements IFlagResolver { | ||||
|         const exp = this.experiments[expName]; | ||||
|         if (exp) { | ||||
|             if (typeof exp === 'boolean') return getDefaultVariant(); | ||||
|             else return exp; | ||||
|             else if (exp.enabled) return exp; | ||||
|         } | ||||
|         return this.externalResolver.getVariant(expName, context); | ||||
|     } | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user