Живой тест вставки события FTV_M2M_EVENTS в новом формате (с откатом)

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
zuevav
2026-09-17 12:55:42 +03:00
parent 059206348f
commit 698956092b
+38
View File
@@ -0,0 +1,38 @@
//go:build live
package lkgateway
import (
"context"
"database/sql"
"testing"
"time"
)
// Вставка события в новом формате в транзакции с откатом: EVENT_DATE из bj, PARAMETERS, STATE по умолчанию.
func TestEventInsertRollback(t *testing.T) {
rc, _ := NewRuntimeConfig("/var/lib/bj/.bj/setup.json")
db, err := depoEventsDB(rc)
if err != nil {
t.Fatal(err)
}
defer db.Close()
ctx, cancel := context.WithTimeout(context.Background(), 20*time.Second)
defer cancel()
tx, err := db.BeginTx(ctx, nil)
if err != nil {
t.Fatal(err)
}
defer tx.Rollback()
at := time.Date(2026, 9, 17, 9, 22, 24, 0, time.FixedZone("МСК", 3*3600))
guid := "00000000-0000-4000-8000-000000000017"
_, err = tx.ExecContext(ctx, `INSERT INTO dbo.FTV_M2M_EVENTS (GUID, REFERENCE, EVENT_TYPE, EVENT_DATE, M2M_REJECT_CODE, PARAMETERS) VALUES (@g, @r, @t, @at, @c, @p)`,
sql.Named("g", guid), sql.Named("r", nullStr("")), sql.Named("t", "BJ_ORDER_SENT"), sql.Named("at", at.In(time.FixedZone("МСК", 3*3600)).Format("2006-01-02T15:04:05.000")),
sql.Named("c", nullStr("")), sql.Named("p", nullStr("20608")))
if err != nil {
t.Fatal(err)
}
var st, dt, par, cmt sql.NullString
err = tx.QueryRowContext(ctx, `SELECT STATE, CONVERT(varchar(23), EVENT_DATE, 121), CAST(PARAMETERS AS nvarchar(100)), COMMENT FROM dbo.FTV_M2M_EVENTS WHERE GUID=@g`, sql.Named("g", guid)).Scan(&st, &dt, &par, &cmt)
t.Logf("STATE=%q EVENT_DATE=%q PARAMETERS=%q COMMENT=%v (err %v) — откат", st.String, dt.String, par.String, cmt.Valid, err)
}