mirror of
https://codeberg.org/forgejo/forgejo.git
synced 2025-08-02 16:35:19 +02:00
ui(settings): make user privacy settings more clear
This commit is contained in:
parent
51c5b993ab
commit
29a1c786a3
4 changed files with 32 additions and 13 deletions
|
@ -24,11 +24,6 @@ func TestUserProfileActivity(t *testing.T) {
|
|||
// Activity availability should be the same for guest and another non-admin user, so this is not tested separately
|
||||
userGuest := emptyTestSession(t)
|
||||
|
||||
// The hint may contain "Configure" link with an anchor. Verify that it works.
|
||||
response := userRegular.MakeRequest(t, NewRequest(t, "GET", "/user/settings"), http.StatusOK)
|
||||
page := NewHTMLParser(t, response.Body)
|
||||
assert.True(t, page.Find(".checkbox#keep-activity-private").Length() > 0)
|
||||
|
||||
// = Public =
|
||||
|
||||
// Set activity visibility of user2 to public. This is the default, but won't hurt to set it before testing.
|
||||
|
@ -41,9 +36,18 @@ func TestUserProfileActivity(t *testing.T) {
|
|||
|
||||
// Verify the hint for all types of users: admin, self, guest
|
||||
testUser2ActivityVisibility(t, userAdmin, "This activity is visible to everyone, but as an administrator you can also see interactions in private spaces.", true)
|
||||
testUser2ActivityVisibility(t, userRegular, "Your activity is visible to everyone, except for interactions in private spaces. Configure.", true)
|
||||
hintLink := testUser2ActivityVisibility(t, userRegular, "Your activity is visible to everyone, except for interactions in private spaces. Configure.", true)
|
||||
testUser2ActivityVisibility(t, userGuest, "", true)
|
||||
|
||||
// When viewing own profile, the user is offered to configure activity visibility. Verify that the link is correct and works, also check that it links back to the activity tab.
|
||||
linkCorrect := assert.EqualValues(t, "/user/settings#keep-activity-private", hintLink)
|
||||
if linkCorrect {
|
||||
page := NewHTMLParser(t, userRegular.MakeRequest(t, NewRequest(t, "GET", hintLink), http.StatusOK).Body)
|
||||
activityLink, exists := page.Find(".field:has(.checkbox#keep-activity-private) .help a").Attr("href")
|
||||
assert.True(t, exists)
|
||||
assert.EqualValues(t, "/user2?tab=activity", activityLink)
|
||||
}
|
||||
|
||||
// = Private =
|
||||
|
||||
// Set activity visibility of user2 to private
|
||||
|
@ -56,8 +60,11 @@ func TestUserProfileActivity(t *testing.T) {
|
|||
|
||||
// Verify the hint for all types of users: admin, self, guest
|
||||
testUser2ActivityVisibility(t, userAdmin, "This activity is visible to you because you're an administrator, but the user wants it to remain private.", true)
|
||||
testUser2ActivityVisibility(t, userRegular, "Your activity is only visible to you and the instance administrators. Configure.", true)
|
||||
hintLink = testUser2ActivityVisibility(t, userRegular, "Your activity is only visible to you and the instance administrators. Configure.", true)
|
||||
testUser2ActivityVisibility(t, userGuest, "This user has disabled the public visibility of the activity.", false)
|
||||
|
||||
// Verify that Configure link is correct
|
||||
assert.EqualValues(t, "/user/settings#keep-activity-private", hintLink)
|
||||
})
|
||||
}
|
||||
|
||||
|
@ -72,11 +79,14 @@ func testChangeUserActivityVisibility(t *testing.T, session *TestSession, newSta
|
|||
}
|
||||
|
||||
// testUser2ActivityVisibility checks visibility of UI elements on /<user>?tab=activity
|
||||
func testUser2ActivityVisibility(t *testing.T, session *TestSession, hint string, availability bool) {
|
||||
// It also returns the account visibility link if it is present on the page.
|
||||
func testUser2ActivityVisibility(t *testing.T, session *TestSession, hint string, availability bool) string {
|
||||
t.Helper()
|
||||
response := session.MakeRequest(t, NewRequest(t, "GET", "/user2?tab=activity"), http.StatusOK)
|
||||
page := NewHTMLParser(t, response.Body)
|
||||
// Check hint visibility and correctness
|
||||
testSelectorEquals(t, page, "#visibility-hint", hint)
|
||||
hintLink, hintLinkExists := page.Find("#visibility-hint a").Attr("href")
|
||||
|
||||
// Check that the hint aligns with the actual feed availability
|
||||
assert.EqualValues(t, availability, page.Find("#activity-feed").Length() > 0)
|
||||
|
@ -87,10 +97,16 @@ func testUser2ActivityVisibility(t *testing.T, session *TestSession, hint string
|
|||
// Check that the current tab is displayed and is active regardless of it's actual availability
|
||||
// For example, on /<user> it wouldn't be available to guest, but it should be still present on /<user>?tab=activity
|
||||
assert.True(t, page.Find("overflow-menu .active.item[href='/user2?tab=activity']").Length() > 0)
|
||||
|
||||
if hintLinkExists {
|
||||
return hintLink
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
// testUser2ActivityButtonsAvailability check visibility of Public activity tab on main profile page
|
||||
// testUser2ActivityButtonsAvailability checks visibility of Public activity tab on main profile page
|
||||
func testUser2ActivityButtonsAvailability(t *testing.T, session *TestSession, buttons bool) {
|
||||
t.Helper()
|
||||
response := session.MakeRequest(t, NewRequest(t, "GET", "/user2"), http.StatusOK)
|
||||
page := NewHTMLParser(t, response.Body)
|
||||
assert.EqualValues(t, buttons, page.Find("overflow-menu .item[href='/user2?tab=activity']").Length() > 0)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue