package lkgateway
import (
"strings"
"testing"
)
func TestClassifyNSDDoc(t *testing.T) {
cases := []struct{ pkg, body, code, title string }{
{"K1699092", `144622492026-09-16 16:03:5320608`,
"REG", "Квитанция о регистрации поручения"},
{"K1", `12060812Нет встречного`,
"REG_REJECT", "Отказ в регистрации поручения"},
{"50818777", `GS036 отсутствии встречного поручения к поручению депоКод операции16`,
"GS036", "Уведомление об отсутствии встречного поручения (GS036)"},
{"50818779", `GS1162060814462249MACH`,
"GS116", "Отчёт о статусе поручения (GS116)"},
{"50818781", `MS01020608DELI10HL171004001C`,
"MS010", "Отчёт об исполнении поручения (MS010)"},
}
for _, c := range cases {
d := classifyNSDDoc(c.pkg, c.body)
if d.Code != c.code || d.Title != c.title {
t.Errorf("%s: %s «%s», ожидали %s «%s»", c.pkg, d.Code, d.Title, c.code, c.title)
}
}
ms := classifyNSDDoc("50818781", cases[4].body)
if !ms.Done || !strings.Contains(ms.About, "списание") {
t.Errorf("MS010: %+v", ms)
}
var acc string
for _, kv := range ms.Fields {
if kv[0] == "Счёт депо" {
acc = kv[1]
}
}
if acc != "HL171004001C" {
t.Errorf("счёт депо: %q (%v)", acc, ms.Fields)
}
if f := nsdDocFolder(1, classifyNSDDoc("50818777", cases[2].body)); f != "02 Уведомление об отсутствии встречного поручения (GS036) — 50818777" {
t.Errorf("папка: %q", f)
}
}