mirror of
https://github.com/Unleash/unleash.git
synced 2025-01-31 00:16:47 +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