test: wire jest harness for QA gate (S1-f)
Add jest + ts-jest to the NestJS backend with an app.service smoke spec that exercises Nest DI. `npm test` is the documented command the QA gate runs. Trace: SRS §6 gate, NFR-8. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
16
backend/jest.config.js
Normal file
16
backend/jest.config.js
Normal file
@@ -0,0 +1,16 @@
|
||||
/**
|
||||
* Jest config for the UlHub backend (NestJS).
|
||||
* ts-jest transpiles the TypeScript sources; decorators/metadata are honored via tsconfig.
|
||||
* Specs live next to sources as *.spec.ts (unit) — e2e would go under test/ with a separate config.
|
||||
*/
|
||||
module.exports = {
|
||||
moduleFileExtensions: ['js', 'json', 'ts'],
|
||||
rootDir: 'src',
|
||||
testRegex: '.*\\.spec\\.ts$',
|
||||
transform: {
|
||||
'^.+\\.ts$': ['ts-jest', { tsconfig: '<rootDir>/../tsconfig.json' }],
|
||||
},
|
||||
collectCoverageFrom: ['**/*.(t|j)s'],
|
||||
coverageDirectory: '../coverage',
|
||||
testEnvironment: 'node',
|
||||
};
|
||||
3527
backend/package-lock.json
generated
3527
backend/package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@@ -8,7 +8,9 @@
|
||||
"build": "nest build",
|
||||
"format": "prettier --write \"src/**/*.ts\"",
|
||||
"postinstall": "prisma generate",
|
||||
"db:seed": "ts-node prisma/seed.ts"
|
||||
"db:seed": "ts-node prisma/seed.ts",
|
||||
"test": "jest",
|
||||
"test:ci": "jest --ci --runInBand"
|
||||
},
|
||||
"prisma": {
|
||||
"seed": "ts-node prisma/seed.ts"
|
||||
@@ -44,9 +46,12 @@
|
||||
"@types/cookie-parser": "^1.4.7",
|
||||
"@types/express": "^4.17.17",
|
||||
"@types/node": "^20.11.0",
|
||||
"@types/jest": "^29.5.12",
|
||||
"@types/passport-jwt": "^4.0.1",
|
||||
"@types/ws": "^8.5.10",
|
||||
"jest": "^29.7.0",
|
||||
"prettier": "^3.0.0",
|
||||
"ts-jest": "^29.2.5",
|
||||
"prisma": "^6.10.0",
|
||||
"ts-node": "^10.9.1",
|
||||
"typescript": "^5.5.0"
|
||||
|
||||
27
backend/src/app.service.spec.ts
Normal file
27
backend/src/app.service.spec.ts
Normal file
@@ -0,0 +1,27 @@
|
||||
import { Test, TestingModule } from '@nestjs/testing';
|
||||
import { AppService } from './app.service';
|
||||
|
||||
// Smoke test for the QA gate (S1-f, trace: SRS §6 gate / NFR-8).
|
||||
// Exercises Nest DI wiring end-to-end for a pure service so a green run proves the
|
||||
// toolchain (ts-jest + @nestjs/testing) is functional. Real coverage grows from here.
|
||||
describe('AppService (smoke)', () => {
|
||||
let service: AppService;
|
||||
|
||||
beforeEach(async () => {
|
||||
const moduleRef: TestingModule = await Test.createTestingModule({
|
||||
providers: [AppService],
|
||||
}).compile();
|
||||
service = moduleRef.get<AppService>(AppService);
|
||||
});
|
||||
|
||||
it('is resolvable from the DI container', () => {
|
||||
expect(service).toBeDefined();
|
||||
});
|
||||
|
||||
it('returns the API welcome payload', () => {
|
||||
expect(service.getHello()).toEqual({
|
||||
message: 'Welcome to UlHub API',
|
||||
docs: 'GET /api',
|
||||
});
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user