package lkgateway import ( "html/template" "net/http" "net/http/httptest" "strings" "testing" "time" ) // Страница службы модуля встраивается в макет bj: меню и заголовок bj, содержимое — от модуля. func TestModulePageWrap(t *testing.T) { a, err := newAdmin() if err != nil { t.Fatal(err) } rec := httptest.NewRecorder() frag := `
фрагмент
` render(rec, a.modulePage, modulePageData{page: nowPage("Клиент V3BR061 · НПР / УДС", "npr"), Content: template.HTML(frag)}) if rec.Code != http.StatusOK { t.Fatalf("код %d: %s", rec.Code, rec.Body.String()) } body := rec.Body.String() for _, want := range []string{frag, "Клиент V3BR061 · НПР / УДС", ""} { if !strings.Contains(body, want) { t.Errorf("в странице нет %q", want) } } if strings.Count(body, "QUIK — Экспорт биржевой информации
раздел службы
` render(rec, a.setup, SetupData{page: nowPage("Настройка", "setup"), AdvancedUnlocked: true, Modules: map[string]bool{"quik-export": true, "quik-mnp": true, "npr": true}, QuikExport: QuikExportView{HTML: template.HTML(frag), Ind: "warn"}}) if rec.Code != http.StatusOK { t.Fatalf("код %d: %s", rec.Code, rec.Body.String()) } body := rec.Body.String() if !strings.Contains(body, frag) { t.Error("в странице настроек нет раздела от службы") } if !strings.Contains(body, `Экспорт QUIK`) { t.Error("индикатор меню не взят у службы") } } // Версии: общий список в «Обзоре» и строка в разделе модуля. func TestSetupPageShowsVersions(t *testing.T) { a, err := newAdmin() if err != nil { t.Fatal(err) } vers := SystemVersions{At: time.Now(), Items: []SystemVersion{ {Key: "quik-mnp", Title: "QUIK — Модуль неторговых поручений", Version: "21.3.0", Detail: "обновлена 05.06.2026", Section: "quik"}, {Key: "depo", Title: "Fancy DEPO (база DEPO)", Section: "fancy", Err: "нет связи"}, }} rec := httptest.NewRecorder() render(rec, a.setup, SetupData{page: nowPage("Настройка", "setup"), AdvancedUnlocked: true, Modules: map[string]bool{"quik-mnp": true}, Versions: vers}) if rec.Code != http.StatusOK { t.Fatalf("код %d: %s", rec.Code, rec.Body.String()) } body := rec.Body.String() // клиенту (без режима разработчика) — простое название и версия, без подробностей источника for _, want := range []string{"Версии систем", "21.3.0", "QUIK — модуль неторговых поручений: 21.3.0", "не определена"} { if !strings.Contains(body, want) { t.Errorf("в странице нет %q", want) } } for _, not := range []string{"обновлена 05.06.2026"} { if strings.Contains(body, not) { t.Errorf("клиенту видно %q", not) } } }