Files
Bridge-and-Join-s/internal/lkgateway/incoming_detail_test.go
T

54 lines
2.4 KiB
Go

package lkgateway
import (
"net/http/httptest"
"strings"
"testing"
"time"
)
func renderIncoming(t *testing.T, d incomingDetailData) string {
t.Helper()
a, err := newAdmin()
if err != nil {
t.Fatal(err)
}
rec := httptest.NewRecorder()
d.page = nowPage("Входящий перевод", "incoming")
render(rec, a.incomingDetail, d)
if rec.Code != 200 {
t.Fatalf("код %d: %s", rec.Code, rec.Body.String())
}
return rec.Body.String()
}
// Отклонённый перевод: 16/1 не требуется, операция завершена, без кнопок подачи и «черновик получен».
func TestIncomingDetailRejected(t *testing.T) {
it := &IncomingTransfer{ID: "x", GUID: "9F5E120D-EFD1-46EE-A9BA-35CB2E794B81", Status: "answered", Auto: true, AnsweredAt: time.Now(),
Securities: []IncomingSecurity{{ReferenceID: "R1", SecurityCode: "SBER/03", Decision: "rejected", RejectCode: "M2M04"}}}
rejected, codes := incomingRejectedAll(it)
if !rejected || codes != "M2M04" {
t.Fatalf("incomingRejectedAll: %v %q", rejected, codes)
}
body := renderIncoming(t, incomingDetailData{It: it, Rejected: rejected, RejectCodes: codes, AutoMode: true})
for _, want := range []string{"не требуется — перевод отклонён", "Операция завершена отказом", "автоматически", "Зачисление в QUIK не требуется"} {
if !strings.Contains(body, want) {
t.Errorf("нет %q", want)
}
}
for _, bad := range []string{"Подать поручение 16/1 в НРД", "Черновик от НРД", "нужно подать"} {
if strings.Contains(body, bad) {
t.Errorf("лишнее в завершённом переводе: %q", bad)
}
}
}
// Перевод ждёт решения: шаги 16/1 не отмечены выполненными.
func TestIncomingDetailPending(t *testing.T) {
it := &IncomingTransfer{ID: "y", GUID: "G", Status: "pending", Securities: []IncomingSecurity{{ReferenceID: "R1", SecurityCode: "SBER/03"}}}
body := renderIncoming(t, incomingDetailData{It: it})
if !strings.Contains(body, "после нашего согласия") || strings.Contains(body, "Черновик от НРД") || strings.Contains(body, "Подать поручение 16/1 в НРД") {
t.Error("ожидающий перевод не должен показывать полученный черновик и кнопку подачи")
}
}