add tests
This commit is contained in:
parent
d5c338225f
commit
050044bb00
3
.gitignore
vendored
3
.gitignore
vendored
@ -1,4 +1,5 @@
|
||||
.vscode
|
||||
.idea
|
||||
dist
|
||||
node_modules
|
||||
node_modules
|
||||
coverage
|
||||
@ -1,6 +1,7 @@
|
||||
.vscode
|
||||
.idea
|
||||
node_modules
|
||||
coverage
|
||||
src
|
||||
.gitignore
|
||||
tsconfig.json
|
||||
4787
package-lock.json
generated
4787
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
36
package.json
36
package.json
@ -1,17 +1,26 @@
|
||||
{
|
||||
"name": "@apihub24/nestjs-helper",
|
||||
"version": "1.0.1",
|
||||
"version": "1.0.2",
|
||||
"description": "",
|
||||
"main": "dist/index.js",
|
||||
"types": "./dist/index.d.ts",
|
||||
"scripts": {
|
||||
"build": "tsc"
|
||||
"build": "rimraf ./dist && tsc",
|
||||
"test": "jest",
|
||||
"test:coverage": "jest --coverage",
|
||||
"pub": "npm publish",
|
||||
"rel": "npm i && npm run build && npm run test:coverage"
|
||||
},
|
||||
"dependencies": {
|
||||
"@nestjs/common": "^11.1.6"
|
||||
},
|
||||
"devDependencies": {
|
||||
"typescript": "^5.9.2"
|
||||
"rimraf": "^6.0.1",
|
||||
"@nestjs/testing": "^11.1.6",
|
||||
"typescript": "^5.9.2",
|
||||
"@types/jest": "^30.0.0",
|
||||
"jest": "^30.0.0",
|
||||
"ts-jest": "^29.4.1"
|
||||
},
|
||||
"keywords": [],
|
||||
"author": {
|
||||
@ -22,5 +31,26 @@
|
||||
"license": "MIT",
|
||||
"publishConfig": {
|
||||
"access": "public"
|
||||
},
|
||||
"jest": {
|
||||
"moduleFileExtensions": [
|
||||
"js",
|
||||
"json",
|
||||
"ts"
|
||||
],
|
||||
"rootDir": ".",
|
||||
"testRegex": ".*\\.spec\\.ts$",
|
||||
"transform": {
|
||||
"^.+\\.(t|j)s$": "ts-jest"
|
||||
},
|
||||
"collectCoverageFrom": [
|
||||
"**/*.(t|j)s"
|
||||
],
|
||||
"coverageDirectory": "./coverage",
|
||||
"testEnvironment": "node",
|
||||
"roots": [
|
||||
"<rootDir>/src/"
|
||||
],
|
||||
"moduleNameMapper": {}
|
||||
}
|
||||
}
|
||||
|
||||
7
src/index.spec.ts
Normal file
7
src/index.spec.ts
Normal file
@ -0,0 +1,7 @@
|
||||
import { takeExportedProviders } from "./";
|
||||
|
||||
describe("Module Tests", () => {
|
||||
it("should export takeExportedProviders Helper", () => {
|
||||
expect(takeExportedProviders).toBeDefined();
|
||||
});
|
||||
});
|
||||
40
src/provider.spec.ts
Normal file
40
src/provider.spec.ts
Normal file
@ -0,0 +1,40 @@
|
||||
import { Controller } from "@nestjs/common";
|
||||
import { takeExportedProviders } from "./";
|
||||
|
||||
@Controller()
|
||||
class ControllerMock {}
|
||||
|
||||
describe("Provider Helper Tests", () => {
|
||||
const testProvider = {
|
||||
provide: "test_provider",
|
||||
useValue: "test_provider",
|
||||
};
|
||||
|
||||
it("should get exported providers", () => {
|
||||
const providers = takeExportedProviders({
|
||||
providers: [testProvider],
|
||||
exports: [testProvider],
|
||||
});
|
||||
expect(providers).toBeDefined();
|
||||
expect(providers.length).toBe(1);
|
||||
});
|
||||
|
||||
it("should get nothing when nothing is exported", () => {
|
||||
const providers = takeExportedProviders({
|
||||
providers: [testProvider],
|
||||
exports: [],
|
||||
});
|
||||
expect(providers).toBeDefined();
|
||||
expect(providers.length).toBe(0);
|
||||
});
|
||||
|
||||
it("should get only providers", () => {
|
||||
const providers = takeExportedProviders({
|
||||
controllers: [ControllerMock],
|
||||
providers: [testProvider],
|
||||
exports: [ControllerMock, testProvider],
|
||||
});
|
||||
expect(providers).toBeDefined();
|
||||
expect(providers.length).toBe(1);
|
||||
});
|
||||
});
|
||||
@ -1,16 +1,16 @@
|
||||
import { DynamicModule, Provider } from '@nestjs/common';
|
||||
import { DynamicModule, ModuleMetadata, Provider } from "@nestjs/common";
|
||||
|
||||
function isProvider(provider: any): provider is Provider {
|
||||
if (
|
||||
provider &&
|
||||
typeof provider === 'object' &&
|
||||
Object.prototype.hasOwnProperty.call(provider, 'provide')
|
||||
typeof provider === "object" &&
|
||||
Object.prototype.hasOwnProperty.call(provider, "provide")
|
||||
) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
export function takeExportedProviders(module: DynamicModule): Provider[] {
|
||||
export function takeExportedProviders(module: ModuleMetadata): Provider[] {
|
||||
return module.exports?.filter(isProvider) ?? ([] as Provider[]);
|
||||
}
|
||||
|
||||
@ -22,5 +22,6 @@
|
||||
"strictBindCallApply": false,
|
||||
"noFallthroughCasesInSwitch": false
|
||||
},
|
||||
"include": ["./src"]
|
||||
"include": ["./src"],
|
||||
"exclude": ["**/*.spec.ts", "**/*.mock.ts"]
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user