fix(guilds): фон комнаты в READY и без дублей категорий в шаблонах

- ReadyChannel отдаёт background_file_id: после перезагрузки фон комнаты больше
  не теряется до REST-запроса (AGENT.md 7.5)
- шаблон больше не создаёт категории дважды: они перечислены в шаблоне и
  раньше создавались ещё и по ссылке из комнаты
- тест: структура «Сообщества» ровно 7 комнат без повторов
This commit is contained in:
2026-09-21 18:16:18 +03:00
parent b43452aa04
commit afcdf9c1c4
4 changed files with 62 additions and 18 deletions
+33
View File
@@ -157,3 +157,36 @@ func contains(list []string, value string) bool {
}
return false
}
func TestGuildFromTemplateCreatesNoDuplicates(t *testing.T) {
srv, _ := newTestServer(t)
owner := registerAndLogin(t, srv, "tpl_dup", "tpl-dup@example.com")
created := doJSON(t, srv, http.MethodPost, "/api/v1/guilds",
`{"name":"Дубли","template_id":"community"}`, owner)
guildID := decodeResponse[struct {
Guild struct {
ID string `json:"id"`
} `json:"guild"`
}](t, created).Guild.ID
channels := doJSON(t, srv, http.MethodGet, "/api/v1/guilds/"+guildID+"/channels", "", owner)
list := decodeResponse[struct {
Channels []struct {
Name string `json:"name"`
Type string `json:"type"`
} `json:"channels"`
}](t, channels)
seen := map[string]int{}
for _, channel := range list.Channels {
seen[channel.Type+":"+channel.Name]++
}
for key, count := range seen {
if count > 1 {
t.Fatalf("комната %s создана %d раза", key, count)
}
}
// «Сообщество»: 2 категории, 4 текстовые и 1 голосовая.
if len(list.Channels) != 7 {
t.Fatalf("комнат %d, ожидалось 7", len(list.Channels))
}
}