loading up the forgejo repo on tangled to test page performance
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

feat(ui themes): better place for theme list ctx, testing (#7163)

`AllThemes` is only used by `user/settings/appearance.tmpl`, not by all settings pages.

Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/7163
Reviewed-by: Gusted <gusted@noreply.codeberg.org>
Co-authored-by: 0ko <0ko@noreply.codeberg.org>
Co-committed-by: 0ko <0ko@noreply.codeberg.org>

authored by

0ko
0ko
and committed by
Gusted
9cef129f 30982b9e

+50 -1
+1
routers/web/user/setting/profile.go
··· 329 329 func Appearance(ctx *context.Context) { 330 330 ctx.Data["Title"] = ctx.Tr("settings.appearance") 331 331 ctx.Data["PageIsSettingsAppearance"] = true 332 + ctx.Data["AllThemes"] = setting.UI.Themes 332 333 333 334 var hiddenCommentTypes *big.Int 334 335 val, err := user_model.GetUserSetting(ctx, ctx.Doer.ID, user_model.SettingsKeyHiddenCommentTypes)
+1 -1
routers/web/web.go
··· 640 640 m.Post("/unblock", user_setting.UnblockUser) 641 641 }) 642 642 m.Get("/storage_overview", user_setting.StorageOverview) 643 - }, reqSignIn, ctxDataSet("PageIsUserSettings", true, "AllThemes", setting.UI.Themes, "EnablePackages", setting.Packages.Enabled, "EnableQuota", setting.Quota.Enabled)) 643 + }, reqSignIn, ctxDataSet("PageIsUserSettings", true, "EnablePackages", setting.Packages.Enabled, "EnableQuota", setting.Quota.Enabled)) 644 644 645 645 m.Group("/user", func() { 646 646 m.Get("/activate", auth.Activate)
+48
tests/integration/appearance_settings_test.go
··· 1 + // Copyright 2025 The Forgejo Authors. All rights reserved. 2 + // SPDX-License-Identifier: GPL-3.0-or-later 3 + 4 + package integration 5 + 6 + import ( 7 + "net/http" 8 + "testing" 9 + 10 + "code.gitea.io/gitea/tests" 11 + 12 + "github.com/stretchr/testify/assert" 13 + ) 14 + 15 + func TestThemeChange(t *testing.T) { 16 + defer tests.PrepareTestEnv(t)() 17 + user := loginUser(t, "user2") 18 + 19 + testSelectedTheme(t, user, "forgejo-auto") 20 + 21 + testChangeTheme(t, user, "forgejo-dark") 22 + testSelectedTheme(t, user, "forgejo-dark") 23 + } 24 + 25 + // testSelectedTheme checks that the expected theme is used in html[data-theme] 26 + // and is default on appearance page 27 + func testSelectedTheme(t *testing.T, session *TestSession, expectedTheme string) { 28 + t.Helper() 29 + response := session.MakeRequest(t, NewRequest(t, "GET", "/user/settings/appearance"), http.StatusOK) 30 + page := NewHTMLParser(t, response.Body) 31 + 32 + dataTheme, dataThemeExists := page.Find("html").Attr("data-theme") 33 + assert.True(t, dataThemeExists) 34 + assert.EqualValues(t, expectedTheme, dataTheme) 35 + 36 + selectorTheme, selectorThemeExists := page.Find("form[action='/user/settings/appearance/theme'] input[name='theme']").Attr("value") 37 + assert.True(t, selectorThemeExists) 38 + assert.EqualValues(t, expectedTheme, selectorTheme) 39 + } 40 + 41 + // testSelectedTheme changes user's theme 42 + func testChangeTheme(t *testing.T, session *TestSession, newTheme string) { 43 + t.Helper() 44 + session.MakeRequest(t, NewRequestWithValues(t, "POST", "/user/settings/appearance/theme", map[string]string{ 45 + "_csrf": GetCSRF(t, session, "/user/settings/appearance"), 46 + "theme": newTheme, 47 + }), http.StatusSeeOther) 48 + }