feat(docs): Remove outdated service templates and enhance Vietnamese architecture documentation
- Deleted obsolete service architecture templates in both English and Vietnamese to streamline content. - Updated the Vietnamese architecture documentation with improved Mermaid diagrams for better visual clarity. - Enhanced color coding in diagrams to improve readability and consistency across documentation. - Added a new section detailing visual indicators for better understanding of architecture components.
This commit is contained in:
158
services/_template_nodejs/src/__tests__/setupTests.ts
Normal file
158
services/_template_nodejs/src/__tests__/setupTests.ts
Normal file
@@ -0,0 +1,158 @@
|
||||
import { jest } from '@jest/globals';
|
||||
|
||||
// EN: Extend global types for test utilities
|
||||
// VI: Mở rộng global types cho test utilities
|
||||
declare global {
|
||||
var testUtils: {
|
||||
createMockReq: (overrides?: any) => any;
|
||||
createMockRes: () => any;
|
||||
createMockNext: () => jest.Mock;
|
||||
};
|
||||
}
|
||||
|
||||
// EN: Mock environment variables for tests
|
||||
// VI: Mock biến môi trường cho tests
|
||||
process.env.NODE_ENV = 'test';
|
||||
process.env.DATABASE_URL = 'postgresql://test:test@localhost:5432/test_db';
|
||||
process.env.REDIS_URL = 'redis://localhost:6379/1';
|
||||
process.env.PORT = '3001';
|
||||
process.env.SERVICE_NAME = 'test-service';
|
||||
process.env.API_VERSION = 'v1';
|
||||
|
||||
// EN: Mock external services to avoid real network calls
|
||||
// VI: Mock các service bên ngoài để tránh gọi mạng thật
|
||||
jest.mock('@goodgo/logger', () => ({
|
||||
logger: {
|
||||
info: jest.fn(),
|
||||
error: jest.fn(),
|
||||
warn: jest.fn(),
|
||||
debug: jest.fn(),
|
||||
},
|
||||
}));
|
||||
|
||||
// EN: Auth SDK mocking is handled in individual test files
|
||||
// VI: Auth SDK mocking được xử lý trong từng test file riêng biệt
|
||||
|
||||
jest.mock('@goodgo/tracing', () => ({
|
||||
initTracing: jest.fn(),
|
||||
}));
|
||||
|
||||
// EN: Mock database client to avoid real DB connections in unit tests
|
||||
// VI: Mock database client để tránh kết nối DB thật trong unit tests
|
||||
jest.mock('../config/database.config', () => ({
|
||||
connectDatabase: jest.fn(),
|
||||
prisma: {
|
||||
$queryRaw: jest.fn(),
|
||||
$disconnect: jest.fn(),
|
||||
$connect: jest.fn(),
|
||||
feature: {
|
||||
create: jest.fn(),
|
||||
findMany: jest.fn(),
|
||||
findUnique: jest.fn(),
|
||||
update: jest.fn(),
|
||||
delete: jest.fn(),
|
||||
},
|
||||
},
|
||||
}));
|
||||
|
||||
// EN: Set up default mock implementations
|
||||
// VI: Thiết lập implementations mock mặc định
|
||||
const { prisma } = require('../config/database.config');
|
||||
|
||||
// EN: Mock successful feature creation
|
||||
// VI: Mock việc tạo feature thành công
|
||||
prisma.feature.create.mockResolvedValue({
|
||||
id: 'test-feature-id',
|
||||
name: 'test-feature',
|
||||
title: 'Test Feature',
|
||||
description: 'Test description',
|
||||
config: {},
|
||||
enabled: true,
|
||||
version: '1.0.0',
|
||||
tags: [],
|
||||
createdAt: new Date(),
|
||||
updatedAt: new Date(),
|
||||
});
|
||||
|
||||
// EN: Mock successful feature queries
|
||||
// VI: Mock việc query feature thành công
|
||||
prisma.feature.findMany.mockResolvedValue([]);
|
||||
prisma.feature.findUnique.mockResolvedValue(null);
|
||||
prisma.feature.update.mockResolvedValue({
|
||||
id: 'test-feature-id',
|
||||
name: 'test-feature',
|
||||
title: 'Updated Feature',
|
||||
description: 'Updated description',
|
||||
config: {},
|
||||
enabled: true,
|
||||
version: '1.0.0',
|
||||
tags: [],
|
||||
createdAt: new Date(),
|
||||
updatedAt: new Date(),
|
||||
});
|
||||
prisma.feature.delete.mockResolvedValue({});
|
||||
|
||||
// EN: Mock Redis client to avoid real Redis connections
|
||||
// VI: Mock Redis client để tránh kết nối Redis thật
|
||||
jest.mock('../config/redis.config', () => ({
|
||||
getRedisClient: jest.fn().mockReturnValue({
|
||||
call: jest.fn(),
|
||||
connect: jest.fn(),
|
||||
disconnect: jest.fn(),
|
||||
}),
|
||||
}));
|
||||
|
||||
// EN: Mock Prometheus registry to avoid global state issues in tests
|
||||
// VI: Mock Prometheus registry để tránh vấn đề global state trong tests
|
||||
jest.mock('prom-client', () => {
|
||||
const mockRegistry = {
|
||||
registerMetric: jest.fn(),
|
||||
getMetricsAsJSON: jest.fn().mockReturnValue({}),
|
||||
metrics: jest.fn().mockReturnValue(''),
|
||||
};
|
||||
|
||||
return {
|
||||
Registry: jest.fn().mockImplementation(() => mockRegistry),
|
||||
register: mockRegistry,
|
||||
collectDefaultMetrics: jest.fn(),
|
||||
Gauge: jest.fn().mockImplementation(() => ({
|
||||
set: jest.fn(),
|
||||
inc: jest.fn(),
|
||||
dec: jest.fn(),
|
||||
})),
|
||||
Counter: jest.fn().mockImplementation(() => ({
|
||||
inc: jest.fn(),
|
||||
add: jest.fn(),
|
||||
})),
|
||||
Histogram: jest.fn().mockImplementation(() => ({
|
||||
observe: jest.fn(),
|
||||
startTimer: jest.fn().mockReturnValue(jest.fn()),
|
||||
})),
|
||||
};
|
||||
});
|
||||
|
||||
// EN: Global test utilities
|
||||
// VI: Utilities test toàn cục
|
||||
global.testUtils = {
|
||||
// EN: Helper to create mock request/response objects
|
||||
// VI: Helper để tạo mock request/response objects
|
||||
createMockReq: (overrides = {}) => ({
|
||||
body: {},
|
||||
params: {},
|
||||
query: {},
|
||||
headers: {},
|
||||
...overrides,
|
||||
}),
|
||||
|
||||
createMockRes: () => {
|
||||
const res: any = {};
|
||||
res.status = jest.fn().mockReturnValue(res);
|
||||
res.json = jest.fn().mockReturnValue(res);
|
||||
res.send = jest.fn().mockReturnValue(res);
|
||||
return res;
|
||||
},
|
||||
|
||||
// EN: Helper to create mock next function
|
||||
// VI: Helper để tạo mock next function
|
||||
createMockNext: () => jest.fn(),
|
||||
};
|
||||
Reference in New Issue
Block a user