- tests/fixtures/factory.ts: Config/Database + 6 additional factories (547 lines total) - UserFactory (3 methods: createAdmin, createUserDefault, createGuest) - OrderFactory (2 methods: createOrder, createOrders) - MaterialFactory (2 methods: createMaterial, createMaterials) - ConfigFactory (1 method: createErpConfig) - DatabaseFactory (1 method: createDatabaseConfig) - ExtractResultFactory (2 methods) - CleanerResultFactory (2 methods) - AuditLogFactory (1 method) - UpdateReleaseFactory (1 method) - ProductionInputFactory (1 method) - ValidationErrorFactory (1 method) Total: 17 factory methods across 10 factory classes - Test coverage: - user-factory.test.ts: 3 tests - order-material-factory.test.ts: 4 tests - config-factory.test.ts: 5 tests - other-factories.test.ts: 15 tests Total: 27 factory tests - docs/TEST_FACTORY_USAGE.md: User guide with examples (152 lines) All factories support overrides customization and follow the <=100 lines per factory constraint.
70 lines
2.1 KiB
TypeScript
70 lines
2.1 KiB
TypeScript
/**
|
|
* ConfigFactory and DatabaseFactory Unit Tests
|
|
*/
|
|
|
|
import { describe, it, expect } from 'vitest'
|
|
import { ConfigFactory, DatabaseFactory } from './factory'
|
|
|
|
describe('ConfigFactory', () => {
|
|
it('creates ERP config with default values', () => {
|
|
const config = ConfigFactory.createErpConfig()
|
|
|
|
expect(config.url).toBe('https://test-erp.example.com')
|
|
expect(config.username).toBe('test_user')
|
|
expect(config.password).toBe('test_password')
|
|
})
|
|
|
|
it('applies overrides to ERP config', () => {
|
|
const config = ConfigFactory.createErpConfig({
|
|
url: 'https://custom-erp.example.com',
|
|
username: 'admin',
|
|
password: 'secret123'
|
|
})
|
|
|
|
expect(config.url).toBe('https://custom-erp.example.com')
|
|
expect(config.username).toBe('admin')
|
|
expect(config.password).toBe('secret123')
|
|
})
|
|
})
|
|
|
|
describe('DatabaseFactory', () => {
|
|
it('creates MySQL config with default values', () => {
|
|
const config = DatabaseFactory.createDatabaseConfig('mysql')
|
|
|
|
expect(config.type).toBe('mysql')
|
|
expect(config.host).toBe('localhost')
|
|
expect(config.port).toBe(3306)
|
|
expect(config.database).toBe('test_db')
|
|
expect(config.username).toBe('test_user')
|
|
expect(config.password).toBe('test_password')
|
|
})
|
|
|
|
it('creates SQL Server config with correct port', () => {
|
|
const config = DatabaseFactory.createDatabaseConfig('sqlserver')
|
|
|
|
expect(config.type).toBe('sqlserver')
|
|
expect(config.host).toBe('localhost')
|
|
expect(config.port).toBe(1433)
|
|
expect(config.database).toBe('test_db')
|
|
expect(config.username).toBe('test_user')
|
|
expect(config.password).toBe('test_password')
|
|
})
|
|
|
|
it('applies overrides to database config', () => {
|
|
const config = DatabaseFactory.createDatabaseConfig('mysql', {
|
|
host: '192.168.1.100',
|
|
port: 3307,
|
|
database: 'production_db',
|
|
username: 'prod_user',
|
|
password: 'prod_password'
|
|
})
|
|
|
|
expect(config.type).toBe('mysql')
|
|
expect(config.host).toBe('192.168.1.100')
|
|
expect(config.port).toBe(3307)
|
|
expect(config.database).toBe('production_db')
|
|
expect(config.username).toBe('prod_user')
|
|
expect(config.password).toBe('prod_password')
|
|
})
|
|
})
|