Мастер: одинаковые отметки шагов, «Обновление» после «Лицензии», переходы

- ключ, подключённый мастером ключа, засчитывается сразу и в мастере, и на главной
  (сверка справочника шлюза отстаёт)
- точка в заголовке шага — то же «выполнено», что в колонке (с «Настроить позже»)
- выход из мастера — «Выйти из мастера», не «Настроить позже»
- шаг «Обновление» — сразу после «Лицензии»; на шаге 1 — указание на него, без второй кнопки
- «Далее»/«Назад» со шага вне пути (сделан установщиком) — соседи по порядку глав
- последний шаг при несделанном обязательном — «Вернуться к шагу …», не «Перейти к работе»

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Q7eREaYwUt1i4fNLZcGnjn
This commit is contained in:
fontvielle
2026-10-21 23:50:02 +03:00
parent f1065e369a
commit 90aacf9ef4
7 changed files with 65 additions and 33 deletions
+9 -5
View File
@@ -210,16 +210,20 @@ func TestWizardChaptersWithoutLicense(t *testing.T) {
rc, _ := NewRuntimeConfig(t.TempDir() + "/setup.json")
done := map[int]bool{2: true, 6: true}
path, chapters := wizPath(rc, done, 4)
want := []int{14, 1, 12, 4, 7, 8, 9, 13, 10} // обновление — первый пункт; без лицензии нет учёта DEPO, QUIK и модулей; база и Валидата — сделаны; учётные записи — перед проверкой
want := []int{1, 14, 12, 4, 7, 8, 9, 13, 10} // обновление — сразу после лицензии; без лицензии нет учёта DEPO, QUIK и модулей; база и Валидата — сделаны; учётные записи — перед проверкой
if fmt.Sprint(path) != fmt.Sprint(want) {
t.Fatalf("путь %v, ожидался %v", path, want)
}
if len(chapters) != 5 || !chapters[2].Current || chapters[2].Steps[0].N != 4 {
if len(chapters) != 4 || !chapters[1].Current || chapters[1].Steps[0].N != 4 {
t.Fatalf("главы: %+v", chapters)
}
if p, n := wizNeighbours(path, 4); p != 12 || n != 7 {
t.Fatalf("соседи шага 4: %d %d", p, n)
}
// шаг «База bj» сделан установщиком и в пути его нет (открыт по ссылке) — соседи по порядку глав, не начало
if p, n := wizNeighbours(path, 2); p != 14 || n != 12 {
t.Fatalf("соседи шага 2 вне пути: %d %d", p, n)
}
if d := wizDefaultStep(path, map[int]bool{1: true, 4: false}); d != 4 {
t.Fatalf("по умолчанию: %d", d)
}
@@ -233,10 +237,10 @@ func TestWizardChaptersWithoutLicense(t *testing.T) {
if len(wizModuleViews(rc, rc.Snapshot())) != 0 {
t.Fatal("без лицензии модулей в мастере быть не должно")
}
if chapters[2].Title != "Организация" {
t.Fatalf("без учёта DEPO и QUIK глава «Организация», а не %q", chapters[2].Title)
if chapters[1].Title != "Организация" {
t.Fatalf("без учёта DEPO и QUIK глава «Организация», а не %q", chapters[1].Title)
}
if l := wizChaptersLine(chapters); l != "Пять глав: обновление, сервер, организация, НРД, запуск." {
if l := wizChaptersLine(chapters); l != "Четыре главы: сервер, организация, НРД, запуск." {
t.Fatalf("подзаголовок: %q", l)
}
}