Skip to content

Commit 26737d8

Browse files
fix(core): handle setting falsy value in proxy providers (#118)
* fix(proxy-provider-manager): handle setting falsy value Co-authored-by: Jerry Laloan <jerrylaloan@users.noreply.github.com>
1 parent 1bc5e99 commit 26737d8

File tree

2 files changed

+24
-1
lines changed

2 files changed

+24
-1
lines changed

packages/core/src/lib/proxy-provider/proxy-provider-manager.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@ export class ProxyProviderManager {
108108
return getProvider()[prop];
109109
},
110110
set(_, prop, value) {
111-
return (getProvider()[prop] = value);
111+
return Reflect.set(getProvider(), prop, value);
112112
},
113113
ownKeys() {
114114
return Reflect.ownKeys(getProvider());

packages/core/test/proxy-providers/proxy-providers.spec.ts

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@ import {
1818
ProxyResult,
1919
ProxyResults,
2020
} from './expect-ids-proxy';
21+
import { globalClsService } from '../../src/lib/cls-service.globals';
22+
import { ProxyProviderManager } from '../../src/lib/proxy-provider';
2123

2224
@Injectable()
2325
class InjectedClass {
@@ -142,3 +144,24 @@ describe('Proxy providers', () => {
142144
await expectOkIdsProxy(app);
143145
});
144146
});
147+
148+
describe('Edge cases', () => {
149+
it('proxy should allow setting falsy value', async () => {
150+
const clsService = globalClsService;
151+
const symbol = Symbol('testSymbol');
152+
const proxyProvider = ProxyProviderManager.createProxyProvider({
153+
provide: symbol,
154+
type: 'object',
155+
useFactory: () => ({
156+
booleanTest: true,
157+
}),
158+
});
159+
const proxy = proxyProvider.useFactory();
160+
await clsService.run(async () => {
161+
await ProxyProviderManager.resolveProxyProviders();
162+
expect(proxy.booleanTest).toBe(true);
163+
proxy.booleanTest = false;
164+
expect(proxy.booleanTest).toBe(false);
165+
});
166+
});
167+
});

0 commit comments

Comments
 (0)