apply-ddl.test.mjs 1.39 KB
import { test } from 'node:test'
import assert from 'node:assert/strict'
import { resolveDbConfig } from './apply-ddl.mjs'

// ── resolveDbConfig(直接读 config-vars.yaml 解析后的 database: 段)─────────
test('resolveDbConfig maps the database section to mysql2 settings', () => {
  const c = resolveDbConfig({
    database: { host: 'db.local', port: '3307', user: 'u', password: 'p@ss', schema: 'erp_test' },
  })
  assert.equal(c.host, 'db.local')
  assert.equal(c.port, 3307)
  assert.equal(c.user, 'u')
  assert.equal(c.password, 'p@ss')
  assert.equal(c.database, 'erp_test')
})

test('resolveDbConfig fails closed when database.schema is missing (M1)', () => {
  assert.throws(() => resolveDbConfig({ database: { user: 'root' } }, 'config-vars.yaml'), /database\.schema/)
  assert.throws(() => resolveDbConfig({}), /database\.schema/)
})

test('resolveDbConfig applies sane defaults for host/port/user/password', () => {
  const c = resolveDbConfig({ database: { schema: 's' } })
  assert.equal(c.host, '127.0.0.1')
  assert.equal(c.port, 3306)
  assert.equal(c.user, 'root')
  assert.equal(c.password, '')
})

test('resolveDbConfig rejects invalid ports', () => {
  assert.throws(() => resolveDbConfig({ database: { schema: 'erp_test', port: 'abc' } }), /database\.port/)
  assert.throws(() => resolveDbConfig({ database: { schema: 'erp_test', port: '70000' } }), /database\.port/)
})