diff --git a/angular.json b/angular.json index c5f0d5dc..47e7e40b 100644 --- a/angular.json +++ b/angular.json @@ -260,6 +260,32 @@ } } } + }, + "pmp-api-e2e": { + "root": "apps/pmp-api-e2e", + "sourceRoot": "apps/pmp-api-e2e/src", + "projectType": "application", + "prefix": "pmp-api-e2e", + "schematics": {}, + "architect": { + "lint": { + "builder": "@angular-devkit/build-angular:tslint", + "options": { + "tsConfig": [ + "apps/pmp-api-e2e/tsconfig.app.json", + "apps/pmp-api-e2e/tsconfig.spec.json" + ], + "exclude": ["**/node_modules/**", "!apps/pmp-api-e2e/**"] + } + }, + "e2e": { + "builder": "@nrwl/jest:jest", + "options": { + "jestConfig": "apps/pmp-api-e2e/jest.config.js", + "tsConfig": "apps/pmp-api-e2e/tsconfig.spec.json" + } + } + } } }, "cli": { diff --git a/apps/pmp-api-e2e/jest.config.js b/apps/pmp-api-e2e/jest.config.js new file mode 100644 index 00000000..87454295 --- /dev/null +++ b/apps/pmp-api-e2e/jest.config.js @@ -0,0 +1,5 @@ +module.exports = { + name: 'pmp-api-e2e', + preset: '../../jest.config.js', + coverageDirectory: '../../coverage/apps/pmp-api-e2e' +}; diff --git a/apps/pmp-api-e2e/src/integration/project.spec.ts b/apps/pmp-api-e2e/src/integration/project.spec.ts new file mode 100644 index 00000000..1ce986d2 --- /dev/null +++ b/apps/pmp-api-e2e/src/integration/project.spec.ts @@ -0,0 +1,27 @@ +import * as request from 'supertest'; +import { Test } from '@nestjs/testing'; +import { INestApplication } from '@nestjs/common'; +import { PmpApiProjectApiModule } from '@pimp-my-pr/pmp-api/project/api'; + +describe('Project', () => { + let app: INestApplication; + + beforeAll(async () => { + const module = await Test.createTestingModule({ + imports: [PmpApiProjectApiModule] + }).compile(); + + app = module.createNestApplication(); + await app.init(); + }); + + it(`/GET sync`, () => { + return request(app.getHttpServer()) + .get('/project/sync') + .expect(200); + }); + + afterAll(async () => { + await app.close(); + }); +}); diff --git a/apps/pmp-api-e2e/tsconfig.app.json b/apps/pmp-api-e2e/tsconfig.app.json new file mode 100644 index 00000000..bb717c5e --- /dev/null +++ b/apps/pmp-api-e2e/tsconfig.app.json @@ -0,0 +1,9 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../dist/out-tsc", + "types": ["node"] + }, + "exclude": ["**/*.spec.ts"], + "include": ["**/*.ts"] +} diff --git a/apps/pmp-api-e2e/tsconfig.json b/apps/pmp-api-e2e/tsconfig.json new file mode 100644 index 00000000..e5decd5e --- /dev/null +++ b/apps/pmp-api-e2e/tsconfig.json @@ -0,0 +1,7 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "types": ["node", "jest"] + }, + "include": ["**/*.ts"] +} diff --git a/apps/pmp-api-e2e/tsconfig.spec.json b/apps/pmp-api-e2e/tsconfig.spec.json new file mode 100644 index 00000000..29efa430 --- /dev/null +++ b/apps/pmp-api-e2e/tsconfig.spec.json @@ -0,0 +1,9 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../dist/out-tsc", + "module": "commonjs", + "types": ["jest", "node"] + }, + "include": ["**/*.spec.ts", "**/*.d.ts"] +} diff --git a/apps/pmp-api-e2e/tslint.json b/apps/pmp-api-e2e/tslint.json new file mode 100644 index 00000000..04809f83 --- /dev/null +++ b/apps/pmp-api-e2e/tslint.json @@ -0,0 +1 @@ +{ "extends": "../../tslint.json", "rules": [] } diff --git a/nx.json b/nx.json index 838e4b45..2ae0e500 100644 --- a/nx.json +++ b/nx.json @@ -25,6 +25,9 @@ }, "pmp-api-project-shell": { "tags": ["scope:pmp-api", "type:shell"] + }, + "pmp-api-e2e": { + "tags": ["type:application", "scope:pmp-api"] } } } diff --git a/package-lock.json b/package-lock.json index 6a6fdb87..d1ae8f76 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5512,6 +5512,12 @@ "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" }, + "cookiejar": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.2.tgz", + "integrity": "sha512-Mw+adcfzPxcPeI+0WlvRrr/3lGVO0bD75SxX6811cxSh1Wbxx7xZBGK1eVtDf6si8rg2lhnUjsVLMFMfbRIuwA==", + "dev": true + }, "copy-concurrently": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", @@ -7586,6 +7592,12 @@ "mime-types": "^2.1.12" } }, + "formidable": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.2.1.tgz", + "integrity": "sha512-Fs9VRguL0gqGHkXS5GQiMCr1VhZBxz0JnJs4JmMp/2jL18Fmbzvv7vOFRU+U8TBkHEE/CX1qDXzJplVULgsLeg==", + "dev": true + }, "forwarded": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", @@ -14945,6 +14957,45 @@ "when": "~3.6.x" } }, + "superagent": { + "version": "3.8.3", + "resolved": "https://registry.npmjs.org/superagent/-/superagent-3.8.3.tgz", + "integrity": "sha512-GLQtLMCoEIK4eDv6OGtkOoSMt3D+oq0y3dsxMuYuDvaNUvuT8eFBuLmfR0iYYzHC1e8hpzC6ZsxbuP6DIalMFA==", + "dev": true, + "requires": { + "component-emitter": "^1.2.0", + "cookiejar": "^2.1.0", + "debug": "^3.1.0", + "extend": "^3.0.0", + "form-data": "^2.3.1", + "formidable": "^1.2.0", + "methods": "^1.1.1", + "mime": "^1.4.1", + "qs": "^6.5.1", + "readable-stream": "^2.3.5" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "supertest": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/supertest/-/supertest-4.0.2.tgz", + "integrity": "sha512-1BAbvrOZsGA3YTCWqbmh14L0YEq0EGICX/nBnfkfVJn7SrxQV1I3pMYjSzG9y/7ZU2V9dWqyqk2POwxlb09duQ==", + "dev": true, + "requires": { + "methods": "^1.1.2", + "superagent": "^3.8.3" + } + }, "supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", diff --git a/package.json b/package.json index 3bd3ef7f..269b15f4 100644 --- a/package.json +++ b/package.json @@ -74,6 +74,7 @@ "ts-jest": "24.0.0", "ts-node": "~7.0.0", "tslint": "~5.11.0", - "typescript": "~3.4.5" + "typescript": "~3.4.5", + "supertest": "latest" } }