add tests

This commit is contained in:
admin 2025-08-21 22:39:35 +02:00
parent d5c338225f
commit 050044bb00
8 changed files with 4872 additions and 13 deletions

1
.gitignore vendored
View File

@ -2,3 +2,4 @@
.idea
dist
node_modules
coverage

View File

@ -1,6 +1,7 @@
.vscode
.idea
node_modules
coverage
src
.gitignore
tsconfig.json

4787
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -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
View 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
View 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);
});
});

View File

@ -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[]);
}

View File

@ -22,5 +22,6 @@
"strictBindCallApply": false,
"noFallthroughCasesInSwitch": false
},
"include": ["./src"]
"include": ["./src"],
"exclude": ["**/*.spec.ts", "**/*.mock.ts"]
}