26785ff3ba
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
40 lines
1.5 KiB
Go
40 lines
1.5 KiB
Go
//go:build live
|
|
|
|
package lkgateway
|
|
|
|
import (
|
|
"context"
|
|
"testing"
|
|
)
|
|
|
|
// Цены из базы экспорта QUIK и карточка бумаги из справочника депозитария.
|
|
func TestLivePricesAndCard(t *testing.T) {
|
|
rc, err := NewRuntimeConfig("/var/lib/bj/.bj/setup.json")
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
globalRC = rc
|
|
ctx := context.Background()
|
|
isins := []string{"RU0009029540", "RU000A1014L8", "RU000A10EYV6", "RU000A1038V6"}
|
|
px := lkPrices(ctx, rc, isins)
|
|
if len(px) == 0 {
|
|
t.Fatal("цены не получены: проверьте подключение к базе экспорта и пакет «Цены»")
|
|
}
|
|
for _, i := range isins {
|
|
p := px[i]
|
|
t.Logf("%s: %s %.4f (пред. %.4f, номинал %.2f, НКД %.4f, %%=%v) → 100 шт. = %.2f ₽",
|
|
i, p.Board, p.Price, p.Prev, p.Face, p.Accrued, p.InPct, p.Value(100))
|
|
}
|
|
for _, i := range []string{"RU000A10EYV6", "RU0009029540"} {
|
|
card, err := securityCard(ctx, rc, i, nil)
|
|
if err != nil {
|
|
t.Fatalf("карточка %s: %v", i, err)
|
|
}
|
|
t.Logf("%s · %s · %s · эмитент %q · номинал %.2f · погашение %s · CFI %s · на обслуживании %v · квал %v · выплат %d",
|
|
card.ISIN, card.Name, card.Kind, card.Issuer, card.Face, card.Maturity, card.CFI, card.Accepted, card.QualOnly, len(card.Payments))
|
|
for _, p := range card.Payments {
|
|
t.Logf(" %s %s %.2f %.2f%%", p.Date, p.Kind, p.Amount, p.Percent)
|
|
}
|
|
}
|
|
}
|