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