@tsed/cli-plugin-jest 6.6.3 → 7.0.0-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) hide show
  1. package/lib/esm/CliPluginJestModule.js +2 -0
  2. package/lib/esm/hooks/JestGenerateHook.js +28 -47
  3. package/lib/esm/hooks/JestInitHook.js +12 -25
  4. package/lib/esm/index.js +1 -1
  5. package/lib/esm/templates/controller.integration.template.js +35 -0
  6. package/lib/esm/templates/decorator.class.spec.template.js +22 -0
  7. package/lib/esm/templates/decorator.endpoint.spec.template.js +26 -0
  8. package/lib/esm/templates/decorator.method.spec.template.js +24 -0
  9. package/lib/esm/templates/decorator.param.spec.template.js +25 -0
  10. package/lib/esm/templates/decorator.parameter.spec.template.js +23 -0
  11. package/lib/esm/templates/decorator.prop.spec.template.js +26 -0
  12. package/lib/esm/templates/decorator.property.spec.template.js +24 -0
  13. package/lib/esm/templates/generic.spec.template.js +25 -0
  14. package/lib/esm/templates/index.js +12 -0
  15. package/lib/esm/templates/jest.config.template.js +84 -0
  16. package/lib/esm/templates/server.integration.template.js +30 -0
  17. package/lib/tsconfig.esm.tsbuildinfo +1 -0
  18. package/lib/types/CliPluginJestModule.d.ts +1 -0
  19. package/lib/types/hooks/JestGenerateHook.d.ts +5 -6
  20. package/lib/types/hooks/JestInitHook.d.ts +4 -9
  21. package/lib/types/index.d.ts +1 -1
  22. package/lib/types/templates/controller.integration.template.d.ts +2 -0
  23. package/lib/types/templates/decorator.class.spec.template.d.ts +2 -0
  24. package/lib/types/templates/decorator.endpoint.spec.template.d.ts +2 -0
  25. package/lib/types/templates/decorator.method.spec.template.d.ts +2 -0
  26. package/lib/types/templates/decorator.param.spec.template.d.ts +2 -0
  27. package/lib/types/templates/decorator.parameter.spec.template.d.ts +2 -0
  28. package/lib/types/templates/decorator.prop.spec.template.d.ts +2 -0
  29. package/lib/types/templates/decorator.property.spec.template.d.ts +2 -0
  30. package/lib/types/templates/generic.spec.template.d.ts +2 -0
  31. package/lib/types/templates/index.d.ts +11 -0
  32. package/lib/types/templates/jest.config.template.d.ts +2 -0
  33. package/lib/types/templates/server.integration.template.d.ts +2 -0
  34. package/package.json +8 -5
  35. package/src/CliPluginJestModule.ts +39 -0
  36. package/src/hooks/JestGenerateHook.ts +44 -0
  37. package/src/hooks/JestInitHook.ts +22 -0
  38. package/src/index.ts +5 -0
  39. package/src/templates/controller.integration.template.ts +38 -0
  40. package/src/templates/decorator.class.spec.template.ts +25 -0
  41. package/src/templates/decorator.endpoint.spec.template.ts +28 -0
  42. package/src/templates/decorator.method.spec.template.ts +26 -0
  43. package/src/templates/decorator.param.spec.template.ts +28 -0
  44. package/src/templates/decorator.parameter.spec.template.ts +26 -0
  45. package/src/templates/decorator.prop.spec.template.ts +28 -0
  46. package/src/templates/decorator.property.spec.template.ts +27 -0
  47. package/src/templates/generic.spec.template.ts +27 -0
  48. package/src/templates/index.ts +12 -0
  49. package/{templates/init/jest.config.mjs.hbs → src/templates/jest.config.template.ts} +18 -3
  50. package/src/templates/server.integration.template.ts +32 -0
  51. package/tsconfig.esm.json +27 -0
  52. package/vitest.config.mts +21 -0
  53. package/lib/esm/utils/templateDir.js +0 -2
  54. package/lib/types/utils/templateDir.d.ts +0 -1
  55. package/templates/generate/decorator.class.spec.hbs +0 -11
  56. package/templates/generate/decorator.endpoint.spec.hbs +0 -15
  57. package/templates/generate/decorator.method.spec.hbs +0 -13
  58. package/templates/generate/decorator.param.spec.hbs +0 -14
  59. package/templates/generate/decorator.parameter.spec.hbs +0 -12
  60. package/templates/generate/decorator.prop.spec.hbs +0 -15
  61. package/templates/generate/decorator.property.spec.hbs +0 -13
  62. package/templates/generate/generic.integration.hbs +0 -20
  63. package/templates/generate/generic.spec.hbs +0 -14
  64. package/templates/generate/server.integration.hbs +0 -20
@@ -1,3 +1,4 @@
1
+ import "./templates/index.js";
1
2
  import { RuntimesModule } from "@tsed/cli";
2
3
  import { ProjectPackageJson } from "@tsed/cli-core";
3
4
  export declare class CliPluginJestModule {
@@ -1,7 +1,6 @@
1
- import { type GenerateCmdContext, SrcRendererService } from "@tsed/cli";
2
- import { type Tasks } from "@tsed/cli-core";
3
- export declare class JestGenerateHook {
4
- srcRenderService: SrcRendererService;
5
- onGenerateExec(ctx: GenerateCmdContext): Tasks;
6
- private mapOptions;
1
+ import { type AlterGenerateTasks, CliProjectService, type GenerateCmdContext } from "@tsed/cli";
2
+ import { type Task, type Tasks } from "@tsed/cli-core";
3
+ export declare class JestGenerateHook implements AlterGenerateTasks {
4
+ protected projectService: CliProjectService;
5
+ $alterGenerateTasks(tasks: Task[], data: GenerateCmdContext): Tasks;
7
6
  }
@@ -1,10 +1,5 @@
1
- import { RootRendererService } from "@tsed/cli";
2
- import { ProjectPackageJson } from "@tsed/cli-core";
3
- export declare class JestInitHook {
4
- protected packageJson: ProjectPackageJson;
5
- protected rootRenderer: RootRendererService;
6
- onInitExec(): {
7
- title: string;
8
- task: (ctx: any) => import("rxjs").Observable<unknown>;
9
- }[];
1
+ import { type AlterInitSubTasks, type InitCmdContext } from "@tsed/cli";
2
+ import type { Task } from "@tsed/cli-core";
3
+ export declare class JestInitHook implements AlterInitSubTasks {
4
+ $alterInitSubTasks(tasks: Task[], data: InitCmdContext): Task[];
10
5
  }
@@ -1,3 +1,3 @@
1
1
  import { CliPluginJestModule } from "./CliPluginJestModule.js";
2
- export * from "./utils/templateDir.js";
2
+ export * from "./templates/index.js";
3
3
  export default CliPluginJestModule;
@@ -0,0 +1,2 @@
1
+ declare const _default: import("@tsed/cli").DefineTemplateOptions;
2
+ export default _default;
@@ -0,0 +1,2 @@
1
+ declare const _default: import("@tsed/cli").DefineTemplateOptions;
2
+ export default _default;
@@ -0,0 +1,2 @@
1
+ declare const _default: import("@tsed/cli").DefineTemplateOptions;
2
+ export default _default;
@@ -0,0 +1,2 @@
1
+ declare const _default: import("@tsed/cli").DefineTemplateOptions;
2
+ export default _default;
@@ -0,0 +1,2 @@
1
+ declare const _default: import("@tsed/cli").DefineTemplateOptions;
2
+ export default _default;
@@ -0,0 +1,2 @@
1
+ declare const _default: import("@tsed/cli").DefineTemplateOptions;
2
+ export default _default;
@@ -0,0 +1,2 @@
1
+ declare const _default: import("@tsed/cli").DefineTemplateOptions;
2
+ export default _default;
@@ -0,0 +1,2 @@
1
+ declare const _default: import("@tsed/cli").DefineTemplateOptions;
2
+ export default _default;
@@ -0,0 +1,2 @@
1
+ declare const _default: import("@tsed/cli").DefineTemplateOptions;
2
+ export default _default;
@@ -0,0 +1,11 @@
1
+ import "./decorator.class.spec.template.js";
2
+ import "./decorator.endpoint.spec.template.js";
3
+ import "./decorator.method.spec.template.js";
4
+ import "./decorator.param.spec.template.js";
5
+ import "./decorator.parameter.spec.template.js";
6
+ import "./decorator.prop.spec.template.js";
7
+ import "./decorator.property.spec.template.js";
8
+ import "./controller.integration.template.js";
9
+ import "./generic.spec.template.js";
10
+ import "./jest.config.template.js";
11
+ import "./server.integration.template.js";
@@ -0,0 +1,2 @@
1
+ declare const _default: import("@tsed/cli").DefineTemplateOptions;
2
+ export default _default;
@@ -0,0 +1,2 @@
1
+ declare const _default: import("@tsed/cli").DefineTemplateOptions;
2
+ export default _default;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@tsed/cli-plugin-jest",
3
3
  "description": "Ts.ED CLI plugin. Add Jest support",
4
- "version": "6.6.3",
4
+ "version": "7.0.0-alpha.1",
5
5
  "type": "module",
6
6
  "main": "./lib/esm/index.js",
7
7
  "source": "./src/index.ts",
@@ -22,9 +22,9 @@
22
22
  "test:ci": "vitest run --coverage.thresholds.autoUpdate=true"
23
23
  },
24
24
  "devDependencies": {
25
- "@tsed/cli": "6.6.3",
26
- "@tsed/cli-core": "6.6.3",
27
- "@tsed/typescript": "6.6.3",
25
+ "@tsed/cli": "7.0.0-alpha.1",
26
+ "@tsed/cli-core": "7.0.0-alpha.1",
27
+ "@tsed/typescript": "7.0.0-alpha.1",
28
28
  "cross-env": "7.0.3",
29
29
  "typescript": "5.6.2",
30
30
  "vitest": "3.2.4"
@@ -39,5 +39,8 @@
39
39
  },
40
40
  "homepage": "https://github.com/tsedio/tsed-cli/tree/master/packages/cli-plugin-jest",
41
41
  "author": "Romain Lenzotti",
42
- "license": "MIT"
42
+ "license": "MIT",
43
+ "publishConfig": {
44
+ "tag": "alpha"
45
+ }
43
46
  }
@@ -0,0 +1,39 @@
1
+ // Import templates to register them with the DI container
2
+ import "./templates/index.js";
3
+
4
+ import {RuntimesModule} from "@tsed/cli";
5
+ import {inject, Module, OnAdd, ProjectPackageJson} from "@tsed/cli-core";
6
+
7
+ import {JestGenerateHook} from "./hooks/JestGenerateHook.js";
8
+ import {JestInitHook} from "./hooks/JestInitHook.js";
9
+
10
+ @Module({
11
+ imports: [JestInitHook, JestGenerateHook]
12
+ })
13
+ export class CliPluginJestModule {
14
+ protected runtimes = inject(RuntimesModule);
15
+ protected packageJson = inject(ProjectPackageJson);
16
+
17
+ @OnAdd("@tsed/cli-plugin-jest")
18
+ install() {
19
+ this.addScripts();
20
+ this.addDevDependencies();
21
+ }
22
+
23
+ addScripts() {
24
+ const runtime = this.runtimes.get();
25
+
26
+ this.packageJson.addScripts({
27
+ "test:unit": "cross-env NODE_OPTIONS=--experimental-vm-modules NODE_ENV=test jest",
28
+ "test:coverage": `${runtime.run("test:unit")} `
29
+ });
30
+ }
31
+
32
+ addDevDependencies() {
33
+ this.packageJson.addDevDependencies({
34
+ "@types/jest": "latest",
35
+ "@swc/jest": "latest",
36
+ jest: "latest"
37
+ });
38
+ }
39
+ }
@@ -0,0 +1,44 @@
1
+ import {type AlterGenerateTasks, CliProjectService, type GenerateCmdContext, render} from "@tsed/cli";
2
+ import {inject, type Task, type Tasks} from "@tsed/cli-core";
3
+ import {injectable} from "@tsed/di";
4
+
5
+ export class JestGenerateHook implements AlterGenerateTasks {
6
+ protected projectService = inject(CliProjectService);
7
+
8
+ $alterGenerateTasks(tasks: Task[], data: GenerateCmdContext): Tasks {
9
+ const {symbolPath} = data;
10
+
11
+ return [
12
+ ...tasks,
13
+ {
14
+ title: `Generate ${data.type} spec file to '${symbolPath}.spec.ts'`,
15
+ enabled() {
16
+ return !(data.type === "server" || data.type.includes(":dataSource") || data.type.includes(":connection"));
17
+ },
18
+ task: () => {
19
+ let specTemplateType = [data.type, data.templateType, "spec"].filter(Boolean).join(".");
20
+ specTemplateType = this.projectService.templates.get(specTemplateType) ? specTemplateType : "generic.spec";
21
+
22
+ render(specTemplateType, {
23
+ ...data,
24
+ symbolPath: data.symbolPath + ".spec"
25
+ });
26
+ }
27
+ },
28
+ {
29
+ title: `Generate ${data.type} integration file '${symbolPath}.integration.spec.ts'`,
30
+ enabled() {
31
+ return ["controller", "server"].includes(data.type);
32
+ },
33
+ task: () => {
34
+ render(data.type + ".integration", {
35
+ ...data,
36
+ symbolPath: data.symbolPath + ".integration.spec"
37
+ });
38
+ }
39
+ }
40
+ ];
41
+ }
42
+ }
43
+
44
+ injectable(JestGenerateHook);
@@ -0,0 +1,22 @@
1
+ import {type AlterInitSubTasks, type InitCmdContext, render} from "@tsed/cli";
2
+ import type {Task} from "@tsed/cli-core";
3
+ import {injectable} from "@tsed/di";
4
+
5
+ export class JestInitHook implements AlterInitSubTasks {
6
+ $alterInitSubTasks(tasks: Task[], data: InitCmdContext) {
7
+ return [
8
+ ...tasks,
9
+ {
10
+ title: "Create jest configuration",
11
+ enabled: () => !!data.jest,
12
+ task: () => {
13
+ render("jest.config", {
14
+ symbolName: "jest.config"
15
+ });
16
+ }
17
+ }
18
+ ];
19
+ }
20
+ }
21
+
22
+ injectable(JestInitHook);
package/src/index.ts ADDED
@@ -0,0 +1,5 @@
1
+ import {CliPluginJestModule} from "./CliPluginJestModule.js";
2
+
3
+ export * from "./templates/index.js";
4
+
5
+ export default CliPluginJestModule;
@@ -0,0 +1,38 @@
1
+ import {CliProjectService, defineTemplate, type GenerateCmdContext} from "@tsed/cli";
2
+ import {inject} from "@tsed/cli-core";
3
+
4
+ export default defineTemplate({
5
+ id: "controller.integration",
6
+ label: "Generic Integration Test",
7
+ fileName: "{{symbolName}}.spec",
8
+ outputDir: "{{srcDir}}",
9
+ hidden: true,
10
+
11
+ render(symbolName: string, data: GenerateCmdContext) {
12
+ const projectService = inject(CliProjectService);
13
+ const relativePath = projectService.getRelativePath(`${data.symbolPath}.integration.spec.ts`);
14
+ const serverName = projectService.getServerFileName();
15
+
16
+ return `import { PlatformTest } from "@tsed/platform-http/testing";
17
+ import SuperTest from "supertest";
18
+ import { ${symbolName} } from "./${data.symbolPathBasename}.js";
19
+ import { Server } from "${relativePath}/${serverName}.js";
20
+
21
+ describe("${symbolName}", () => {
22
+ beforeAll(PlatformTest.bootstrap(Server, {
23
+ mount: {
24
+ "/": [${symbolName}]
25
+ }
26
+ }));
27
+ afterAll(PlatformTest.reset);
28
+
29
+ it("should call GET ${data.route}", async () => {
30
+ const request = SuperTest(PlatformTest.callback());
31
+ const response = await request.get("${data.route}").expect(200);
32
+
33
+ expect(response.text).toEqual("hello");
34
+ });
35
+ });
36
+ `;
37
+ }
38
+ });
@@ -0,0 +1,25 @@
1
+ import {defineTemplate} from "@tsed/cli";
2
+ import type {GenerateCmdContext} from "@tsed/cli";
3
+
4
+ export default defineTemplate({
5
+ id: "decorator.class.spec",
6
+ label: "Class Decorator Test",
7
+ fileName: "{{symbolName}}.spec",
8
+ outputDir: "{{srcDir}}",
9
+ hidden: true,
10
+
11
+ render(symbolName: string, data: GenerateCmdContext) {
12
+ return `import { ${symbolName} } from "./${data.symbolPathBasename}.js";
13
+
14
+ describe("${symbolName}", () => {
15
+ it("should do something", () => {
16
+ @${symbolName}({})
17
+ class Test {
18
+ }
19
+
20
+ expect(typeof ${symbolName}).toBe("function")
21
+ });
22
+ });
23
+ `;
24
+ }
25
+ });
@@ -0,0 +1,28 @@
1
+ import {defineTemplate, type GenerateCmdContext} from "@tsed/cli";
2
+
3
+ export default defineTemplate({
4
+ id: "decorator.endpoint.spec",
5
+ label: "Endpoint Decorator Test",
6
+ fileName: "{{symbolName}}.spec",
7
+ outputDir: "{{srcDir}}",
8
+ hidden: true,
9
+
10
+ render(symbolName: string, data: GenerateCmdContext) {
11
+ return `import { Store } from "@tsed/core";
12
+ import { ${symbolName} } from "./${data.symbolPathBasename}.js";
13
+
14
+ describe("${symbolName}", () => {
15
+ it("should store options", () => {
16
+ class Test {
17
+ @${symbolName}({options: "options"})
18
+ method(param: string) {}
19
+ }
20
+
21
+ const store = Store.fromMethod(Test, "method");
22
+
23
+ expect(store.get(${symbolName})).toEqual({options: "options"});
24
+ });
25
+ });
26
+ `;
27
+ }
28
+ });
@@ -0,0 +1,26 @@
1
+ import {defineTemplate, type GenerateCmdContext} from "@tsed/cli";
2
+
3
+ export default defineTemplate({
4
+ id: "decorator.method.spec",
5
+ label: "Method Decorator Test",
6
+ fileName: "{{symbolName}}.spec",
7
+ outputDir: "{{srcDir}}",
8
+ hidden: true,
9
+
10
+ render(symbolName: string, data: GenerateCmdContext) {
11
+ return `import { ${symbolName} } from "./${data.symbolPathBasename}.js";
12
+
13
+ describe("${symbolName}", () => {
14
+ it("should do something", () => {
15
+ class Test {
16
+ @${symbolName}({})
17
+ method(){}
18
+ }
19
+
20
+ expect(typeof ${symbolName}).toBe("function")
21
+ expect(typeof ${symbolName}()).toBe("function")
22
+ });
23
+ });
24
+ `;
25
+ }
26
+ });
@@ -0,0 +1,28 @@
1
+ import type {GenerateCmdContext} from "@tsed/cli";
2
+ import {defineTemplate} from "@tsed/cli";
3
+
4
+ export default defineTemplate({
5
+ id: "decorator.param.spec",
6
+ label: "Parameter Decorator Test",
7
+ fileName: "{{symbolName}}.spec",
8
+ outputDir: "{{srcDir}}",
9
+ hidden: true,
10
+
11
+ render(symbolName: string, data: GenerateCmdContext) {
12
+ return `import { Store } from "@tsed/core";
13
+ import { ${symbolName} } from "./${data.symbolPathBasename}.js";
14
+
15
+ describe("${symbolName}", () => {
16
+ it("should store options", () => {
17
+ class Test {
18
+ method(@${symbolName}({options: "options"}) param: string){}
19
+ }
20
+
21
+ const store = Store.from(Test, "method", 0)
22
+
23
+ expect(store.get(${symbolName})).toEqual({options: "options"});
24
+ });
25
+ });
26
+ `;
27
+ }
28
+ });
@@ -0,0 +1,26 @@
1
+ import type {GenerateCmdContext} from "@tsed/cli";
2
+ import {defineTemplate} from "@tsed/cli";
3
+
4
+ export default defineTemplate({
5
+ id: "decorator.parameter.spec",
6
+ label: "Parameters Decorator Test",
7
+ fileName: "{{symbolName}}.spec",
8
+ outputDir: "{{srcDir}}",
9
+ hidden: true,
10
+
11
+ render(symbolName: string, data: GenerateCmdContext) {
12
+ return `import { ${symbolName} } from "./${data.symbolPathBasename}.js";
13
+
14
+ describe("${symbolName}", () => {
15
+ it("should do something", () => {
16
+ class Test {
17
+ method(@${symbolName}({}) param: string){}
18
+ }
19
+
20
+ expect(typeof ${symbolName}).toBe("function")
21
+ expect(typeof ${symbolName}()).toBe("function")
22
+ });
23
+ });
24
+ `;
25
+ }
26
+ });
@@ -0,0 +1,28 @@
1
+ import {defineTemplate, type GenerateCmdContext} from "@tsed/cli";
2
+
3
+ export default defineTemplate({
4
+ id: "decorator.prop.spec",
5
+ label: "Property Decorator with @Property Test",
6
+ fileName: "{{symbolName}}.spec",
7
+ outputDir: "{{srcDir}}",
8
+ hidden: true,
9
+
10
+ render(symbolName: string, data: GenerateCmdContext) {
11
+ return `import { Store } from "@tsed/core";
12
+ import { ${symbolName} } from "./${data.symbolPathBasename}.js";
13
+
14
+ describe("${symbolName}", () => {
15
+ it("should store options", () => {
16
+ class Test {
17
+ @${symbolName}({options: "options"})
18
+ property: string;
19
+ }
20
+
21
+ const store = Store.from(Test, "property");
22
+
23
+ expect(store.get(${symbolName})).toEqual({options: "options"});
24
+ });
25
+ });
26
+ `;
27
+ }
28
+ });
@@ -0,0 +1,27 @@
1
+ import {defineTemplate} from "@tsed/cli";
2
+ import type {GenerateCmdContext} from "@tsed/cli";
3
+
4
+ export default defineTemplate({
5
+ id: "decorator.property.spec",
6
+ label: "Property Decorator Test",
7
+ fileName: "{{symbolName}}.spec",
8
+ outputDir: "{{srcDir}}",
9
+ hidden: true,
10
+
11
+ render(symbolName: string, data: GenerateCmdContext) {
12
+ return `import { ${symbolName} } from "./${data.symbolPathBasename}.js";
13
+
14
+ describe("${symbolName}", () => {
15
+ it("should do something", () => {
16
+ class Test {
17
+ @${symbolName}({})
18
+ property: string;
19
+ }
20
+
21
+ expect(typeof ${symbolName}).toBe("function")
22
+ expect(typeof ${symbolName}()).toBe("function")
23
+ });
24
+ });
25
+ `;
26
+ }
27
+ });
@@ -0,0 +1,27 @@
1
+ import {defineTemplate, type GenerateCmdContext} from "@tsed/cli";
2
+
3
+ export default defineTemplate({
4
+ id: "generic.spec",
5
+ label: "Generic Spec",
6
+ fileName: "{{symbolName}}.spec",
7
+ outputDir: "{{srcDir}}",
8
+ hidden: true,
9
+
10
+ render(symbolName: string, data: GenerateCmdContext) {
11
+ return `import { PlatformTest, inject } from "@tsed/platform-http/testing";
12
+ import { ${symbolName} } from "./${data.symbolPathBasename}.js";
13
+
14
+ describe("${symbolName}", () => {
15
+ beforeEach(PlatformTest.create);
16
+ afterEach(PlatformTest.reset);
17
+
18
+ it("should do something", () => {
19
+ const instance = inject(${symbolName});
20
+ // const instance = PlatformTest.invoke<${symbolName}>(${symbolName}); // get fresh instance
21
+
22
+ expect(instance).toBeInstanceOf(${symbolName});
23
+ });
24
+ });
25
+ `;
26
+ }
27
+ });
@@ -0,0 +1,12 @@
1
+ // Import all templates to register them with the DI container
2
+ import "./decorator.class.spec.template.js";
3
+ import "./decorator.endpoint.spec.template.js";
4
+ import "./decorator.method.spec.template.js";
5
+ import "./decorator.param.spec.template.js";
6
+ import "./decorator.parameter.spec.template.js";
7
+ import "./decorator.prop.spec.template.js";
8
+ import "./decorator.property.spec.template.js";
9
+ import "./controller.integration.template.js";
10
+ import "./generic.spec.template.js";
11
+ import "./jest.config.template.js";
12
+ import "./server.integration.template.js";
@@ -1,4 +1,16 @@
1
- // For a detailed explanation regarding each configuration property, visit:
1
+ import {defineTemplate} from "@tsed/cli";
2
+
3
+ export default defineTemplate({
4
+ id: "jest.config",
5
+ label: "Jest Config",
6
+ fileName: "jest.config",
7
+ ext: "mjs",
8
+ outputDir: ".",
9
+ hidden: true,
10
+ preserveCase: true,
11
+
12
+ render() {
13
+ return `// For a detailed explanation regarding each configuration property, visit:
2
14
  // https://jestjs.io/docs/en/configuration.html
3
15
 
4
16
  /** @type {import('jest').Config} */
@@ -38,7 +50,7 @@ export default {
38
50
  testMatch: ["**/src/**/__tests__/**/*.[jt]s?(x)", "**/src/**/?(*.)+(spec|test).[tj]s?(x)"],
39
51
  // A map from regular expressions to paths to transformers
40
52
  transform: {
41
- "^.+\\.(j|t)sx?$": [
53
+ "^.+\\\\.(j|t)sx?$": [
42
54
  "@swc/jest",
43
55
  {
44
56
  jsc: {
@@ -64,8 +76,11 @@ export default {
64
76
  ]
65
77
  },
66
78
  moduleNameMapper: {
67
- "^(\\.{1,2}/.*)\\.js$": "$1"
79
+ "^(\\\\.{1,2}/.*)\\\\.js$": "$1"
68
80
  },
69
81
  testPathIgnorePatterns: ["/node_modules/", "/dist/"],
70
82
  transformIgnorePatterns: ["/node_modules/(?!(module-name|another-module)/)"]
71
83
  };
84
+ `;
85
+ }
86
+ });
@@ -0,0 +1,32 @@
1
+ import {defineTemplate, type GenerateCmdContext} from "@tsed/cli";
2
+
3
+ export default defineTemplate({
4
+ id: "server.integration",
5
+ label: "Server Integration Test",
6
+ outputDir: "{{srcDir}}",
7
+ hidden: true,
8
+
9
+ render(symbolName: string, data: GenerateCmdContext) {
10
+ return `import { PlatformTest } from "@tsed/platform-http/testing";
11
+ import SuperTest from "supertest";
12
+ import { ${symbolName} } from "./${data.symbolPathBasename}.js";
13
+
14
+ describe("${symbolName}", () => {
15
+ beforeAll(PlatformTest.bootstrap(${symbolName}));
16
+ afterAll(PlatformTest.reset);
17
+
18
+ it("should call GET ${data.route}", async () => {
19
+ const request = SuperTest(PlatformTest.callback());
20
+ const response = await request.get("${data.route}").expect(404);
21
+
22
+ expect(response.body).toEqual({
23
+ errors: [],
24
+ message: 'Resource "/rest" not found',
25
+ name: "NOT_FOUND",
26
+ status: 404,
27
+ });
28
+ });
29
+ });
30
+ `;
31
+ }
32
+ });
@@ -0,0 +1,27 @@
1
+ {
2
+ "extends": "@tsed/typescript/tsconfig.node.json",
3
+ "compilerOptions": {
4
+ "baseUrl": ".",
5
+ "rootDir": "src",
6
+ "outDir": "./lib/esm",
7
+ "declarationDir": "./lib/types",
8
+ "declaration": true,
9
+ "composite": true,
10
+ "noEmit": false,
11
+ "sourceMap": false
12
+ },
13
+ "include": ["src", "src/**/*.json"],
14
+ "exclude": [
15
+ "node_modules",
16
+ "test",
17
+ "lib",
18
+ "benchmark",
19
+ "coverage",
20
+ "spec",
21
+ "**/*.benchmark.ts",
22
+ "**/*.spec.ts",
23
+ "keys",
24
+ "**/__mock__/**",
25
+ "webpack.config.js"
26
+ ]
27
+ }
@@ -0,0 +1,21 @@
1
+ // @ts-ignore
2
+ import {presets} from "@tsed/vitest/presets";
3
+ import {defineConfig} from "vitest/config";
4
+
5
+ export default defineConfig(
6
+ {
7
+ ...presets,
8
+ test: {
9
+ ...presets.test,
10
+ coverage: {
11
+ ...presets.test.coverage,
12
+ thresholds: {
13
+ statements: 0,
14
+ branches: 0,
15
+ functions: 0,
16
+ lines: 0
17
+ }
18
+ }
19
+ }
20
+ }
21
+ );
@@ -1,2 +0,0 @@
1
- import { getTemplateDirectory } from "@tsed/cli-core";
2
- export const TEMPLATE_DIR = getTemplateDirectory(import.meta.dirname);
@@ -1 +0,0 @@
1
- export declare const TEMPLATE_DIR: string;