Files
dimgigov bb843b9a03
CI / test (push) Has been cancelled
CI / verify (push) Has been cancelled
Clients CI / build-server (push) Has been cancelled
Clients CI / test-python (push) Has been cancelled
Clients CI / test-javascript (push) Has been cancelled
Clients CI / test-nim (push) Has been cancelled
Clients CI / test-rust (push) Has been cancelled
feat: migrate system + cross-DB engine + IMPORT/EXPORT syntax -- 22 files, client+server+docs
2026-05-21 19:32:14 +03:00

59 lines
1.5 KiB
Nim

discard """
cmd: "nim c -r $file"
"""
import std/unittest
import std/asyncdispatch
import std/json
import ../../src/allographer/query_builder
import ../../src/allographer/query_builder/models/baradb/baradb_exec
import ./connections
let rdb = baradb
suite("Baradb migrations"):
test("create migration"):
let upSql = """
CREATE TABLE IF NOT EXISTS test_mig_users (
id SERIAL PRIMARY KEY,
name VARCHAR(255)
)
"""
let downSql = "DROP TABLE IF EXISTS test_mig_users"
let qr = waitFor rdb.createMigration("test_mig_001", upSql, downSql)
check qr.rowCount >= 0
test("migration status shows pending"):
let status = waitFor rdb.migrationStatus()
var found = false
for row in status:
if row["name"].getStr() == "test_mig_001":
check row["status"].getStr() == "pending"
found = true
break
check found
test("apply migration"):
let qr = waitFor rdb.applyMigration("test_mig_001")
check qr.rowCount >= 0
test("is migration applied"):
let applied = waitFor rdb.isMigrationApplied("test_mig_001")
check applied
test("migration up (all pending)"):
let qr = waitFor rdb.migrateUp()
check qr.rowCount >= 0
test("migration dry run"):
let qr = waitFor rdb.migrationDryRun("test_mig_001")
check qr.rowCount >= 0
test("table exists after migration"):
let users = waitFor rdb.table("test_mig_users").get()
check users.len >= 0
test("migrate down (rollback)"):
let qr = waitFor rdb.migrateDown(1)
check qr.rowCount >= 0