Версии систем: общий список в «Обзоре» и строка в разделе каждого модуля

bj собирает версии своих компонентов и внешних систем (в фоне, кэш 10 минут, прогрев при старте):
ядро и модули bj (components.json или «-version»), экспортёр ARQA (служба bj-quikexport, /version),
криптосервис (Health), «Валидата CSP» (zpki1utl), Java, ИШ НРД (deps.json + сайт НРД),
МНП QUIK (VersionInfo), DEPO (OD_DATA_VERSION), PostgreSQL, ОС. «Настройка → Обзор» — таблица
«Версии систем» с кнопкой «Обновить сведения»; в разделах БД, Fancy, QUIK МНП, Экспорт QUIK,
Криптография, НРД, ЛК, НПР и Обновления — строка с версией. В таблице обновлений у компонентов,
выложенных вручную, вместо «неизвестна» — версия самого компонента. bj-component-install: -version.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
zuevav
2026-09-16 12:00:00 +03:00
parent 6fee3c5ff7
commit 7c653a2490
15 changed files with 523 additions and 3 deletions
+24
View File
@@ -6,6 +6,7 @@ import (
"net/http/httptest"
"strings"
"testing"
"time"
)
// Страница службы модуля встраивается в макет bj: меню и заголовок bj, содержимое — от модуля.
@@ -52,3 +53,26 @@ func TestSetupPageEmbedsQuikExport(t *testing.T) {
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{"Версии систем", "<strong>21.3.0</strong>", "QUIK — Модуль неторговых поручений: <strong>21.3.0</strong> · обновлена 05.06.2026", "не определена", "нет связи"} {
if !strings.Contains(body, want) {
t.Errorf("в странице нет %q", want)
}
}
}