Fix resolver caching issue when setting values (#9938)

This commit is contained in:
Jukka Kurkela 2021-12-02 00:53:55 +02:00 committed by GitHub
parent 688cd470e9
commit db995af158
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 3 additions and 2 deletions

View File

@ -76,8 +76,7 @@ export function _createResolver(scopes, prefixes = [''], rootScopes = scopes, fa
*/
set(target, prop, value) {
const storage = target._storage || (target._storage = getTarget());
storage[prop] = value; // set to top level scope
delete target[prop]; // remove from cache
target[prop] = storage[prop] = value; // set to top level scope + cache
delete target._keys; // remove cached keys
return true;
}

View File

@ -492,6 +492,7 @@ describe('Chart.helpers.config', function() {
resolver.value = false;
expect(options.value).toBeFalse();
expect(defaults.value).toBeTrue();
expect(resolver.value).toBeFalse();
});
it('should set values of sub-objects to first scope', function() {
@ -505,6 +506,7 @@ describe('Chart.helpers.config', function() {
resolver.sub.value = false;
expect(options.sub.value).toBeFalse();
expect(defaults.sub.value).toBeTrue();
expect(resolver.sub.value).toBeFalse();
});
it('should throw when setting a value and options is frozen', function() {