Skip to content

Commit d1ec1e2

Browse files
committed
feat(core): add method to verify factory provider
ensure isFactoryProvider returns true when useFactory is present
1 parent 57cd765 commit d1ec1e2

2 files changed

Lines changed: 23 additions & 2 deletions

File tree

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,9 @@
1-
import { ClassProvider, Provider, ValueProvider } from '@nestjs/common';
1+
import {
2+
ClassProvider,
3+
FactoryProvider,
4+
Provider,
5+
ValueProvider,
6+
} from '@nestjs/common';
27

38
export function isClassProvider(provider: Provider): boolean {
49
return Boolean((provider as ClassProvider)?.useClass);
@@ -7,3 +12,7 @@ export function isClassProvider(provider: Provider): boolean {
712
export function isValueProvider(provider: Provider): boolean {
813
return Boolean((provider as ValueProvider)?.useValue);
914
}
15+
16+
export function isFactoryProvider(provider: Provider): boolean {
17+
return Boolean((provider as FactoryProvider).useFactory);
18+
}

packages/core/test/injector/helpers/provider-classifier.spec.ts

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
1-
import { ClassProvider, ValueProvider } from '@nestjs/common';
1+
import { ClassProvider, FactoryProvider, ValueProvider } from '@nestjs/common';
22
import { expect } from 'chai';
33
import {
44
isClassProvider,
5+
isFactoryProvider,
56
isValueProvider,
67
} from '../../../injector/helpers/provider-classifier';
78

@@ -73,4 +74,15 @@ describe('provider classifier', () => {
7374
expect(isValueProvider(valueProvider as ValueProvider)).to.be.false;
7475
});
7576
});
77+
78+
describe('isFactoryProvider', () => {
79+
it('should return true if useFactory is present', () => {
80+
const factoryProvider: FactoryProvider = {
81+
provide: 'token',
82+
useFactory: () => {},
83+
};
84+
85+
expect(isFactoryProvider(factoryProvider)).to.be.true;
86+
});
87+
});
7688
});

0 commit comments

Comments
 (0)