From cd402dd3d7197ff36eddfdf3c23363cbc6a605c7 Mon Sep 17 00:00:00 2001 From: Romain Lenzotti Date: Thu, 14 Dec 2023 09:00:57 +0100 Subject: [PATCH] fix(typeorm): fix datasource case Closes: #339 --- packages/cli-plugin-mongoose/jest.config.js | 9 +- .../cli-plugin-typegraphql/jest.config.js | 1 + .../init.integration.spec.ts.snap | 7 +- .../test/init/init.integration.spec.ts | 82 +++--- packages/cli-plugin-typeorm/jest.config.js | 9 +- packages/cli-plugin-typeorm/package.json | 2 +- .../src/hooks/TypeORMGenerateHook.ts | 3 +- ...nerate.controller.integration.spec.ts.snap | 51 ++++ .../generate.controller.integration.spec.ts | 20 +- .../init.integration.spec.ts.snap | 59 +++- .../init/data/MysqlDatasource.ts.txt | 32 --- .../init/init.integration.spec.ts | 253 +++++++++--------- 12 files changed, 292 insertions(+), 236 deletions(-) create mode 100644 packages/cli-plugin-typeorm/test/integrations/generate/__snapshots__/generate.controller.integration.spec.ts.snap delete mode 100644 packages/cli-plugin-typeorm/test/integrations/init/data/MysqlDatasource.ts.txt diff --git a/packages/cli-plugin-mongoose/jest.config.js b/packages/cli-plugin-mongoose/jest.config.js index a61292c23..9b8da2ec0 100644 --- a/packages/cli-plugin-mongoose/jest.config.js +++ b/packages/cli-plugin-mongoose/jest.config.js @@ -3,12 +3,13 @@ module.exports = { ...require("@tsed/jest-config"), + roots: ["/src", "/test"], coverageThreshold: { global: { - statements: 0, - branches: 0, - functions: 0, - lines: 0 + statements: 63.9, + branches: 22.72, + functions: 33.33, + lines: 63.9 } } }; diff --git a/packages/cli-plugin-typegraphql/jest.config.js b/packages/cli-plugin-typegraphql/jest.config.js index a61292c23..a4f00514a 100644 --- a/packages/cli-plugin-typegraphql/jest.config.js +++ b/packages/cli-plugin-typegraphql/jest.config.js @@ -3,6 +3,7 @@ module.exports = { ...require("@tsed/jest-config"), + roots: ["/src", "/test"], coverageThreshold: { global: { statements: 0, diff --git a/packages/cli-plugin-typegraphql/test/init/__snapshots__/init.integration.spec.ts.snap b/packages/cli-plugin-typegraphql/test/init/__snapshots__/init.integration.spec.ts.snap index 1f0aff363..3fdd9cacc 100644 --- a/packages/cli-plugin-typegraphql/test/init/__snapshots__/init.integration.spec.ts.snap +++ b/packages/cli-plugin-typegraphql/test/init/__snapshots__/init.integration.spec.ts.snap @@ -1,6 +1,6 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`Init TypeGraphQL project should generate a project with typegraphql 1`] = ` +exports[`Init TypeGraphQL project should generate a project with typegraphql 2`] = ` "import {join} from \\"path\\"; import {Configuration, Inject} from \\"@tsed/di\\"; import {PlatformApplication} from \\"@tsed/common\\"; @@ -18,6 +18,9 @@ import * as rest from \\"./controllers/rest/index\\"; httpPort: process.env.PORT || 8083, httpsPort: false, // CHANGE disableComponentsScan: true, + ajv: { + returnsCoercedValues: true + }, mount: { \\"/rest\\": [ ...Object.values(rest) @@ -51,7 +54,7 @@ export class Server { " `; -exports[`Init TypeGraphQL project should generate a project with typegraphql 2`] = ` +exports[`Init TypeGraphQL project should generate a project with typegraphql 3`] = ` "import {readFileSync} from \\"fs\\"; import {envs} from \\"./envs/index\\"; import loggerConfig from \\"./logger/index\\"; diff --git a/packages/cli-plugin-typegraphql/test/init/init.integration.spec.ts b/packages/cli-plugin-typegraphql/test/init/init.integration.spec.ts index b01f2a55c..b40d0229f 100644 --- a/packages/cli-plugin-typegraphql/test/init/init.integration.spec.ts +++ b/packages/cli-plugin-typegraphql/test/init/init.integration.spec.ts @@ -1,10 +1,6 @@ -import {CliService, ProjectPackageJson} from "@tsed/cli-core"; import {CliPlatformTest, FakeCliFs} from "@tsed/cli-testing"; import {InitCmd, TEMPLATE_DIR} from "@tsed/cli"; import "@tsed/cli-plugin-typegraphql"; -import filedirname from "filedirname"; - -const [, dir] = filedirname(); describe("Init TypeGraphQL project", () => { beforeEach(() => @@ -27,52 +23,54 @@ describe("Init TypeGraphQL project", () => { await CliPlatformTest.exec("init", { platform: "express", - convention: "default", + convention: "conv_default", rootDir: "./project-data", projectName: "project-data", tsedVersion: "5.58.1", graphql: true }); - expect(FakeCliFs.getKeys()).toEqual([ - "./project-name", - "project-name", - "project-name/.barrelsby.json", - "project-name/.dockerignore", - "project-name/.gitignore", - "project-name/Dockerfile", - "project-name/README.md", - "project-name/docker-compose.yml", - "project-name/package.json", - "project-name/processes.config.js", - "project-name/src", - "project-name/src/Server.ts", - "project-name/src/config", - "project-name/src/config/envs", - "project-name/src/config/envs/index.ts", - "project-name/src/config/index.ts", - "project-name/src/config/logger", - "project-name/src/config/logger/index.ts", - "project-name/src/controllers/rest", - "project-name/src/controllers/rest/HelloWorldController.ts", - "project-name/src/datasources", - "project-name/src/datasources/MyDataSource.ts", - "project-name/src/datasources/index.ts", - "project-name/src/index.ts", - "project-name/src/resolvers", - "project-name/src/resolvers/index.ts", - "project-name/src/resolvers/recipes", - "project-name/src/resolvers/recipes/Recipe.ts", - "project-name/src/resolvers/recipes/RecipeNotFoundError.ts", - "project-name/src/resolvers/recipes/RecipeResolver.ts", - "project-name/src/services", - "project-name/src/services/RecipeService.ts", - "project-name/tsconfig.compile.json", - "project-name/tsconfig.json" - ]); + expect(FakeCliFs.getKeys()).toMatchInlineSnapshot(` + Array [ + "./project-name", + "project-name", + "project-name/.barrelsby.json", + "project-name/.dockerignore", + "project-name/.gitignore", + "project-name/Dockerfile", + "project-name/README.md", + "project-name/docker-compose.yml", + "project-name/package.json", + "project-name/processes.config.js", + "project-name/src", + "project-name/src/Server.ts", + "project-name/src/config", + "project-name/src/config/envs", + "project-name/src/config/envs/index.ts", + "project-name/src/config/index.ts", + "project-name/src/config/logger", + "project-name/src/config/logger/index.ts", + "project-name/src/controllers/rest", + "project-name/src/controllers/rest/HelloWorldController.ts", + "project-name/src/datasources", + "project-name/src/datasources/MyDataSource.ts", + "project-name/src/datasources/index.ts", + "project-name/src/index.ts", + "project-name/src/resolvers", + "project-name/src/resolvers/index.ts", + "project-name/src/resolvers/recipes", + "project-name/src/resolvers/recipes/Recipe.ts", + "project-name/src/resolvers/recipes/RecipeNotFoundError.ts", + "project-name/src/resolvers/recipes/RecipeResolver.ts", + "project-name/src/services", + "project-name/src/services/RecipeService.ts", + "project-name/tsconfig.compile.json", + "project-name/tsconfig.json", + ] + `); const content = FakeCliFs.entries.get("project-name/src/Server.ts")!; - expect(content).toMatchSnapshot() + expect(content).toMatchSnapshot(); expect(content).toContain("import \"@tsed/typegraphql\""); expect(content).toContain("import \"./datasources/index\";"); expect(content).toContain("import \"./resolvers/index\";"); diff --git a/packages/cli-plugin-typeorm/jest.config.js b/packages/cli-plugin-typeorm/jest.config.js index a61292c23..dbaf595df 100644 --- a/packages/cli-plugin-typeorm/jest.config.js +++ b/packages/cli-plugin-typeorm/jest.config.js @@ -3,12 +3,13 @@ module.exports = { ...require("@tsed/jest-config"), + roots: ["/src", "/test"], coverageThreshold: { global: { - statements: 0, - branches: 0, - functions: 0, - lines: 0 + statements: 86.25, + branches: 61.11, + functions: 92.3, + lines: 86.25 } } }; diff --git a/packages/cli-plugin-typeorm/package.json b/packages/cli-plugin-typeorm/package.json index 692b9add8..d05a290e0 100644 --- a/packages/cli-plugin-typeorm/package.json +++ b/packages/cli-plugin-typeorm/package.json @@ -34,4 +34,4 @@ "jest": "29.5.0" }, "peerDependencies": {} -} \ No newline at end of file +} diff --git a/packages/cli-plugin-typeorm/src/hooks/TypeORMGenerateHook.ts b/packages/cli-plugin-typeorm/src/hooks/TypeORMGenerateHook.ts index 45ce617af..d8162f483 100644 --- a/packages/cli-plugin-typeorm/src/hooks/TypeORMGenerateHook.ts +++ b/packages/cli-plugin-typeorm/src/hooks/TypeORMGenerateHook.ts @@ -91,8 +91,7 @@ export class TypeORMGenerateHook { }); const database = typeormDataSource.split(":").at(-1)!; - - const symbolName = ctx.symbolName.replace("Datasource", "DataSource"); + const symbolName = ctx.symbolName; return [ { diff --git a/packages/cli-plugin-typeorm/test/integrations/generate/__snapshots__/generate.controller.integration.spec.ts.snap b/packages/cli-plugin-typeorm/test/integrations/generate/__snapshots__/generate.controller.integration.spec.ts.snap new file mode 100644 index 000000000..762796bfc --- /dev/null +++ b/packages/cli-plugin-typeorm/test/integrations/generate/__snapshots__/generate.controller.integration.spec.ts.snap @@ -0,0 +1,51 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`Generate DataSource should generate the template with the right options (simple path) 1`] = ` +"import {registerProvider} from \\"@tsed/di\\"; +import {DataSource} from \\"typeorm\\"; +import {Logger} from \\"@tsed/logger\\"; + +export const TEST_DATASOURCE = Symbol.for(\\"TestDatasource\\"); +export const TestDatasource = new DataSource({ + type: \\"mysql\\", + entities: [], + host: \\"localhost\\", + port: 3306, + username: \\"test\\", + password: \\"test\\", + database: \\"test\\" +}); + +registerProvider({ + provide: TEST_DATASOURCE, + type: \\"typeorm:datasource\\", + deps: [Logger], + async useAsyncFactory(logger: Logger) { + await TestDatasource.initialize(); + + logger.info(\\"Connected with typeorm to database: Test\\"); + + return TestDatasource; + }, + hooks: { + $onDestroy(dataSource) { + return dataSource.isInitialized && dataSource.close(); + } + } +}); +" +`; + +exports[`Generate DataSource should generate the template with the right options (simple path) 2`] = ` +"services: + test: + image: mysql:8.0.28-oracle + ports: + - '3306:3306' + environment: + MYSQL_ROOT_PASSWORD: admin + MYSQL_USER: test + MYSQL_PASSWORD: test + MYSQL_DATABASE: test +" +`; diff --git a/packages/cli-plugin-typeorm/test/integrations/generate/generate.controller.integration.spec.ts b/packages/cli-plugin-typeorm/test/integrations/generate/generate.controller.integration.spec.ts index 091bd05c2..dd7cb7aee 100644 --- a/packages/cli-plugin-typeorm/test/integrations/generate/generate.controller.integration.spec.ts +++ b/packages/cli-plugin-typeorm/test/integrations/generate/generate.controller.integration.spec.ts @@ -1,23 +1,7 @@ import {GenerateCmd, TEMPLATE_DIR} from "@tsed/cli"; -import {CliService, ProjectPackageJson} from "@tsed/cli-core"; import {CliPlatformTest, FakeCliFs} from "@tsed/cli-testing"; -import {dirname} from "path"; import "../../../src"; -import {ensureDirSync, existsSync, readFileSync, writeFileSync} from "fs-extra"; -import filedirname from "filedirname"; -const [, dir] = filedirname(); -function readFile(file: string, content: string, rewrite = true) { - const path = `${dir}/${file}` - - ensureDirSync(dirname(path)) - - if (!existsSync(path) || rewrite) { - writeFileSync(path, content, {encoding: "utf8"}); - } - - return readFileSync(path, {encoding: "utf8"}); -} describe("Generate DataSource", () => { beforeEach(() => @@ -53,9 +37,9 @@ describe("Generate DataSource", () => { const datasource = FakeCliFs.entries.get("project-name/src/datasources/TestDatasource.ts"); - expect(datasource).toEqual(readFile("data/TestDatasource.ts.txt", datasource!, false)); + expect(datasource).toMatchSnapshot(); const dockerCompose = FakeCliFs.entries.get("project-name/docker-compose.yml"); - expect(dockerCompose).toEqual(readFile("data/docker-compose.yml.txt", dockerCompose!, false)); + expect(dockerCompose).toMatchSnapshot(); }); }); diff --git a/packages/cli-plugin-typeorm/test/integrations/init/__snapshots__/init.integration.spec.ts.snap b/packages/cli-plugin-typeorm/test/integrations/init/__snapshots__/init.integration.spec.ts.snap index e68f114bf..fd1e406c6 100644 --- a/packages/cli-plugin-typeorm/test/integrations/init/__snapshots__/init.integration.spec.ts.snap +++ b/packages/cli-plugin-typeorm/test/integrations/init/__snapshots__/init.integration.spec.ts.snap @@ -1,6 +1,6 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`TypeORM: Init cmd should generate a project with the right options 1`] = ` +exports[`TypeORM: Init cmd should generate a project with the right options 2`] = ` "import {join} from \\"path\\"; import {Configuration, Inject} from \\"@tsed/di\\"; import {PlatformApplication} from \\"@tsed/common\\"; @@ -15,6 +15,9 @@ import * as rest from \\"./controllers/rest/index\\"; httpPort: process.env.PORT || 8083, httpsPort: false, // CHANGE disableComponentsScan: true, + ajv: { + returnsCoercedValues: true + }, mount: { \\"/rest\\": [ ...Object.values(rest) @@ -47,3 +50,57 @@ export class Server { } " `; + +exports[`TypeORM: Init cmd should generate a project with the right options 3`] = ` +"import {registerProvider} from \\"@tsed/di\\"; +import {DataSource} from \\"typeorm\\"; +import {Logger} from \\"@tsed/logger\\"; + +export const MYSQL_DATASOURCE = Symbol.for(\\"MysqlDatasource\\"); +export const MysqlDatasource = new DataSource({ + type: \\"mysql\\", + entities: [], + host: \\"localhost\\", + port: 3306, + username: \\"test\\", + password: \\"test\\", + database: \\"test\\" +}); + +registerProvider({ + provide: MYSQL_DATASOURCE, + type: \\"typeorm:datasource\\", + deps: [Logger], + async useAsyncFactory(logger: Logger) { + await MysqlDatasource.initialize(); + + logger.info(\\"Connected with typeorm to database: Mysql\\"); + + return MysqlDatasource; + }, + hooks: { + $onDestroy(dataSource) { + return dataSource.isInitialized && dataSource.close(); + } + } +}); +" +`; + +exports[`TypeORM: Init cmd should generate a project with the right options 4`] = ` +"import { PlatformTest } from \\"@tsed/common\\"; +import { MysqlDatasource } from \\"./MysqlDatasource\\"; + +describe(\\"MysqlDatasource\\", () => { + beforeEach(PlatformTest.create); + afterEach(PlatformTest.reset); + + it(\\"should do something\\", () => { + const instance = PlatformTest.get(MysqlDatasource); + // const instance = PlatformTest.invoke(MysqlDatasource); // get fresh instance + + expect(instance).toBeInstanceOf(MysqlDatasource); + }); +}); +" +`; diff --git a/packages/cli-plugin-typeorm/test/integrations/init/data/MysqlDatasource.ts.txt b/packages/cli-plugin-typeorm/test/integrations/init/data/MysqlDatasource.ts.txt deleted file mode 100644 index 67e364219..000000000 --- a/packages/cli-plugin-typeorm/test/integrations/init/data/MysqlDatasource.ts.txt +++ /dev/null @@ -1,32 +0,0 @@ -import {registerProvider} from "@tsed/di"; -import {DataSource} from "typeorm"; -import {Logger} from "@tsed/logger"; - -export const MYSQL_DATA_SOURCE = Symbol.for("MysqlDataSource"); -export const MysqlDataSource = new DataSource({ - type: "mysql", - entities: [], - host: "localhost", - port: 3306, - username: "test", - password: "test", - database: "test" -}); - -registerProvider({ - provide: MYSQL_DATA_SOURCE, - type: "typeorm:datasource", - deps: [Logger], - async useAsyncFactory(logger: Logger) { - await MysqlDataSource.initialize(); - - logger.info("Connected with typeorm to database: Mysql"); - - return MysqlDataSource; - }, - hooks: { - $onDestroy(dataSource) { - return dataSource.isInitialized && dataSource.close(); - } - } -}); diff --git a/packages/cli-plugin-typeorm/test/integrations/init/init.integration.spec.ts b/packages/cli-plugin-typeorm/test/integrations/init/init.integration.spec.ts index 7ff4fc8aa..ab98cded6 100644 --- a/packages/cli-plugin-typeorm/test/integrations/init/init.integration.spec.ts +++ b/packages/cli-plugin-typeorm/test/integrations/init/init.integration.spec.ts @@ -1,34 +1,17 @@ -import {CliService, PackageManager, ProjectPackageJson} from "@tsed/cli-core"; +import {PackageManager} from "@tsed/cli-core"; import {CliPlatformTest, FakeCliFs} from "@tsed/cli-testing"; -import {ensureDirSync, existsSync, readFileSync, writeFileSync} from "fs-extra"; -import {dirname} from "path"; import {ArchitectureConvention, FeatureType, InitCmd, PlatformType, ProjectConvention, TEMPLATE_DIR} from "@tsed/cli"; import "../../../src"; -import filedirname from "filedirname"; - -const [, dir] = filedirname(); - -function readFile(file: string, content: string, rewrite = true) { - const path = `${dir}/${file}` - - ensureDirSync(dirname(path)) - - if (!existsSync(path) || rewrite) { - writeFileSync(path, content, {encoding: "utf8"}); - } - - return readFileSync(path, {encoding: "utf8"}); -} +import "@tsed/cli-plugin-jest"; describe("TypeORM: Init cmd", () => { beforeEach(() => { - return CliPlatformTest.bootstrap({ - templateDir: TEMPLATE_DIR, - commands: [InitCmd], - argv: ["init"] - }); - } - ); + return CliPlatformTest.bootstrap({ + templateDir: TEMPLATE_DIR, + commands: [InitCmd], + argv: ["init"] + }); + }); afterEach(() => CliPlatformTest.reset()); it("should generate a project with the right options", async () => { @@ -42,68 +25,73 @@ describe("TypeORM: Init cmd", () => { }); await CliPlatformTest.exec("init", { - verbose: false, - root: ".", - tsedVersion: "5.58.1", - rootDir: "./.tmp/init/default", - production: false, - rawArgs: [], - platform: PlatformType.EXPRESS, - architecture: ArchitectureConvention.DEFAULT, - convention: ProjectConvention.DEFAULT, - packageManager: PackageManager.YARN, - projectName: "default", - db: true, - typeorm: true, - mysql: true, - features: [ - FeatureType.DB, - FeatureType.TYPEORM, - FeatureType.TYPEORM_MYSQL - ], - srcDir: "src", - pnpm: false, - npm: false, - yarn: true, - express: true, - koa: false, - platformSymbol: "PlatformExpress" - } - ); + verbose: false, + root: ".", + tsedVersion: "5.58.1", + rootDir: "./.tmp/init/default", + production: false, + rawArgs: [], + platform: PlatformType.EXPRESS, + architecture: ArchitectureConvention.DEFAULT, + convention: ProjectConvention.DEFAULT, + packageManager: PackageManager.YARN, + projectName: "default", + db: true, + typeorm: true, + mysql: true, + features: [FeatureType.DB, FeatureType.TYPEORM, FeatureType.TYPEORM_MYSQL], + srcDir: "src", + pnpm: false, + npm: false, + yarn: true, + express: true, + koa: false, + platformSymbol: "PlatformExpress" + }); - expect(FakeCliFs.getKeys()).toEqual([ - "./project-name", - "project-name", - "project-name/.barrelsby.json", - "project-name/.dockerignore", - "project-name/.gitignore", - "project-name/Dockerfile", - "project-name/README.md", - "project-name/docker-compose.yml", - "project-name/package.json", - "project-name/processes.config.js", - "project-name/src", - "project-name/src/Server.ts", - "project-name/src/config", - "project-name/src/config/envs", - "project-name/src/config/envs/index.ts", - "project-name/src/config/index.ts", - "project-name/src/config/logger", - "project-name/src/config/logger/index.ts", - "project-name/src/controllers/rest", - "project-name/src/controllers/rest/HelloWorldController.ts", - "project-name/src/datasources", - "project-name/src/datasources/MysqlDatasource.ts", - "project-name/src/index.ts", - "project-name/tsconfig.compile.json", - "project-name/tsconfig.json" - ]); + expect(FakeCliFs.getKeys()).toMatchInlineSnapshot(` + Array [ + "./project-name", + "project-name", + "project-name/.barrelsby.json", + "project-name/.dockerignore", + "project-name/.gitignore", + "project-name/Dockerfile", + "project-name/README.md", + "project-name/docker-compose.yml", + "project-name/jest.config.js", + "project-name/package.json", + "project-name/processes.config.js", + "project-name/src", + "project-name/src/Server.integration.spec.ts", + "project-name/src/Server.ts", + "project-name/src/config", + "project-name/src/config/envs", + "project-name/src/config/envs/index.ts", + "project-name/src/config/index.ts", + "project-name/src/config/logger", + "project-name/src/config/logger/index.ts", + "project-name/src/controllers/rest", + "project-name/src/controllers/rest/HelloWorldController.integration.spec.ts", + "project-name/src/controllers/rest/HelloWorldController.spec.ts", + "project-name/src/controllers/rest/HelloWorldController.ts", + "project-name/src/datasources", + "project-name/src/datasources/MysqlDatasource.spec.ts", + "project-name/src/datasources/MysqlDatasource.ts", + "project-name/src/index.ts", + "project-name/tsconfig.compile.json", + "project-name/tsconfig.json", + ] + `); const content = FakeCliFs.entries.get("project-name/src/Server.ts")!; expect(content).toMatchSnapshot(); const datasource = FakeCliFs.entries.get("project-name/src/datasources/MysqlDatasource.ts")!; - expect(datasource).toEqual(readFile("data/MysqlDatasource.ts.txt", datasource, false)); + expect(datasource).toMatchSnapshot(); + + const spec = FakeCliFs.entries.get("project-name/src/datasources/MysqlDatasource.spec.ts")!; + expect(spec).toMatchSnapshot(); }); it("should not generate database if any option is selected", async () => { CliPlatformTest.setPackageJson({ @@ -116,55 +104,60 @@ describe("TypeORM: Init cmd", () => { }); await CliPlatformTest.exec("init", { - verbose: false, - root: ".", - tsedVersion: "5.58.1", - rootDir: "./.tmp/init/default", - production: false, - rawArgs: [], - platform: "express", - architecture: "default", - convention: "default", - packageManager: "yarn", - projectName: "default", - db: true, - typeorm: true, - mysql: true, - features: [], - srcDir: "src", - pnpm: false, - npm: false, - yarn: true, - express: true, - koa: false, - platformSymbol: "PlatformExpress" - } - ); + verbose: false, + root: ".", + tsedVersion: "5.58.1", + rootDir: "./.tmp/init/default", + production: false, + rawArgs: [], + platform: "express", + architecture: "arc_default", + convention: "conv_default", + packageManager: "yarn", + projectName: "default", + db: true, + typeorm: true, + mysql: true, + features: [], + srcDir: "src", + pnpm: false, + npm: false, + yarn: true, + express: true, + koa: false, + platformSymbol: "PlatformExpress" + }); - expect(FakeCliFs.getKeys()).toEqual([ - "./project-name", - "project-name", - "project-name/.barrelsby.json", - "project-name/.dockerignore", - "project-name/.gitignore", - "project-name/Dockerfile", - "project-name/README.md", - "project-name/docker-compose.yml", - "project-name/package.json", - "project-name/processes.config.js", - "project-name/src", - "project-name/src/Server.ts", - "project-name/src/config", - "project-name/src/config/envs", - "project-name/src/config/envs/index.ts", - "project-name/src/config/index.ts", - "project-name/src/config/logger", - "project-name/src/config/logger/index.ts", - "project-name/src/controllers/rest", - "project-name/src/controllers/rest/HelloWorldController.ts", - "project-name/src/index.ts", - "project-name/tsconfig.compile.json", - "project-name/tsconfig.json" - ]); + expect(FakeCliFs.getKeys()).toMatchInlineSnapshot(` + Array [ + "./project-name", + "project-name", + "project-name/.barrelsby.json", + "project-name/.dockerignore", + "project-name/.gitignore", + "project-name/Dockerfile", + "project-name/README.md", + "project-name/docker-compose.yml", + "project-name/jest.config.js", + "project-name/package.json", + "project-name/processes.config.js", + "project-name/src", + "project-name/src/Server.integration.spec.ts", + "project-name/src/Server.ts", + "project-name/src/config", + "project-name/src/config/envs", + "project-name/src/config/envs/index.ts", + "project-name/src/config/index.ts", + "project-name/src/config/logger", + "project-name/src/config/logger/index.ts", + "project-name/src/controllers/rest", + "project-name/src/controllers/rest/HelloWorldController.integration.spec.ts", + "project-name/src/controllers/rest/HelloWorldController.spec.ts", + "project-name/src/controllers/rest/HelloWorldController.ts", + "project-name/src/index.ts", + "project-name/tsconfig.compile.json", + "project-name/tsconfig.json", + ] + `); }); });