mirror of
https://github.com/Unleash/unleash.git
synced 2025-06-27 01:19:00 +02:00
fix: flag-resolver should resolve external static context
This commit is contained in:
parent
3b84db7d61
commit
33e852cccd
@ -336,6 +336,7 @@ export const defaultExperimentalOptions: IExperimentalOptions = {
|
|||||||
externalResolver: {
|
externalResolver: {
|
||||||
isEnabled: (): boolean => false,
|
isEnabled: (): boolean => false,
|
||||||
getVariant: () => getDefaultVariant(),
|
getVariant: () => getDefaultVariant(),
|
||||||
|
getStaticContext: () => ({}),
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -358,4 +359,5 @@ export interface IFlagResolver {
|
|||||||
export interface IExternalFlagResolver {
|
export interface IExternalFlagResolver {
|
||||||
isEnabled: (flagName: IFlagKey, context?: IFlagContext) => boolean;
|
isEnabled: (flagName: IFlagKey, context?: IFlagContext) => boolean;
|
||||||
getVariant: (flagName: IFlagKey, context?: IFlagContext) => Variant;
|
getVariant: (flagName: IFlagKey, context?: IFlagContext) => Variant;
|
||||||
|
getStaticContext: () => IFlagContext;
|
||||||
}
|
}
|
||||||
|
@ -35,6 +35,7 @@ test('should use external resolver for dynamic flags', () => {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
getVariant: () => getDefaultVariant(),
|
getVariant: () => getDefaultVariant(),
|
||||||
|
getStaticContext: () => ({}),
|
||||||
};
|
};
|
||||||
|
|
||||||
const config = {
|
const config = {
|
||||||
@ -55,6 +56,7 @@ test('should not use external resolver for enabled experiments', () => {
|
|||||||
return false;
|
return false;
|
||||||
},
|
},
|
||||||
getVariant: () => getDefaultVariant(),
|
getVariant: () => getDefaultVariant(),
|
||||||
|
getStaticContext: () => ({}),
|
||||||
};
|
};
|
||||||
|
|
||||||
const config = {
|
const config = {
|
||||||
@ -75,6 +77,7 @@ test('should load experimental flags', () => {
|
|||||||
return false;
|
return false;
|
||||||
},
|
},
|
||||||
getVariant: () => getDefaultVariant(),
|
getVariant: () => getDefaultVariant(),
|
||||||
|
getStaticContext: () => ({}),
|
||||||
};
|
};
|
||||||
|
|
||||||
const config = {
|
const config = {
|
||||||
@ -96,6 +99,7 @@ test('should load experimental flags from external provider', () => {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
getVariant: () => getDefaultVariant(),
|
getVariant: () => getDefaultVariant(),
|
||||||
|
getStaticContext: () => ({}),
|
||||||
};
|
};
|
||||||
|
|
||||||
const config = {
|
const config = {
|
||||||
@ -127,6 +131,7 @@ test('should support variant flags', () => {
|
|||||||
}
|
}
|
||||||
return getDefaultVariant();
|
return getDefaultVariant();
|
||||||
},
|
},
|
||||||
|
getStaticContext: () => ({}),
|
||||||
};
|
};
|
||||||
|
|
||||||
const config = {
|
const config = {
|
||||||
@ -196,6 +201,7 @@ test('should call external resolver getVariant when not overridden to be true, e
|
|||||||
}
|
}
|
||||||
return getDefaultVariant();
|
return getDefaultVariant();
|
||||||
},
|
},
|
||||||
|
getStaticContext: () => ({}),
|
||||||
};
|
};
|
||||||
|
|
||||||
const config = {
|
const config = {
|
||||||
@ -218,3 +224,45 @@ test('should call external resolver getVariant when not overridden to be true, e
|
|||||||
variant,
|
variant,
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test('should call external resolver getStaticContext ', () => {
|
||||||
|
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();
|
||||||
|
},
|
||||||
|
getStaticContext: () => {
|
||||||
|
return { clientId: 'red' };
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
const config = {
|
||||||
|
flags: {
|
||||||
|
variantFlag: {
|
||||||
|
name: 'variant-flag',
|
||||||
|
enabled: false,
|
||||||
|
payload: {
|
||||||
|
type: PayloadType.JSON,
|
||||||
|
value: '',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
externalResolver,
|
||||||
|
};
|
||||||
|
|
||||||
|
const resolver = new FlagResolver(config as IExperimentalOptions);
|
||||||
|
|
||||||
|
expect(resolver.getStaticContext()).toStrictEqual({ clientId: 'red' });
|
||||||
|
});
|
||||||
|
@ -63,7 +63,7 @@ export default class FlagResolver implements IFlagResolver {
|
|||||||
}
|
}
|
||||||
|
|
||||||
getStaticContext(): IFlagContext {
|
getStaticContext(): IFlagContext {
|
||||||
return {};
|
return this.externalResolver.getStaticContext();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user