Files
BIPMaterialManager/tests/fixtures/config-factory.test.ts
Misaka 7473f34485 test: complete Wave 2 - all entity factories + documentation
- 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.
2026-04-04 20:23:45 +08:00

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')
})
})