@@ -14,9 +14,11 @@ import (
14
14
unit_model "code.gitea.io/gitea/models/unit"
15
15
"code.gitea.io/gitea/models/unittest"
16
16
user_model "code.gitea.io/gitea/models/user"
17
+ "code.gitea.io/gitea/modules/optional"
17
18
"code.gitea.io/gitea/modules/setting"
18
19
gitea_context "code.gitea.io/gitea/services/context"
19
20
repo_service "code.gitea.io/gitea/services/repository"
21
+ user_service "code.gitea.io/gitea/services/user"
20
22
"code.gitea.io/gitea/tests"
21
23
22
24
"github.com/stretchr/testify/assert"
@@ -32,6 +34,97 @@ func TestRepoSettingsUnits(t *testing.T) {
32
34
session .MakeRequest (t , req , http .StatusOK )
33
35
}
34
36
37
+ func TestRepoAddMoreUnitsHighlighting (t * testing.T ) {
38
+ defer tests .PrepareTestEnv (t )()
39
+ user := unittest .AssertExistsAndLoadBean (t , & user_model.User {Name : "user2" })
40
+ session := loginUser (t , user .Name )
41
+
42
+ // Make sure there are no disabled repos in the settings!
43
+ setting .Repository .DisabledRepoUnits = []string {}
44
+ unit_model .LoadUnitConfig ()
45
+
46
+ // Create a known-good repo, with some units disabled.
47
+ repo , _ , f := CreateDeclarativeRepo (t , user , "" , []unit_model.Type {
48
+ unit_model .TypeCode ,
49
+ unit_model .TypePullRequests ,
50
+ unit_model .TypeProjects ,
51
+ unit_model .TypeActions ,
52
+ unit_model .TypeIssues ,
53
+ unit_model .TypeWiki ,
54
+ }, []unit_model.Type {unit_model .TypePackages }, nil )
55
+ defer f ()
56
+
57
+ setUserHints := func (t * testing.T , hints bool ) func () {
58
+ saved := user .EnableRepoUnitHints
59
+
60
+ assert .NoError (t , user_service .UpdateUser (db .DefaultContext , user , & user_service.UpdateOptions {
61
+ EnableRepoUnitHints : optional .Some (hints ),
62
+ }))
63
+
64
+ return func () {
65
+ assert .NoError (t , user_service .UpdateUser (db .DefaultContext , user , & user_service.UpdateOptions {
66
+ EnableRepoUnitHints : optional .Some (saved ),
67
+ }))
68
+ }
69
+ }
70
+
71
+ assertHighlight := func (t * testing.T , page , uri string , highlighted bool ) {
72
+ t .Helper ()
73
+
74
+ req := NewRequest (t , "GET" , fmt .Sprintf ("%s/settings%s" , repo .Link (), page ))
75
+ resp := session .MakeRequest (t , req , http .StatusOK )
76
+ htmlDoc := NewHTMLParser (t , resp .Body )
77
+
78
+ htmlDoc .AssertElement (t , fmt .Sprintf (".overflow-menu-items a[href='%s'].active" , fmt .Sprintf ("%s/settings%s" , repo .Link (), uri )), highlighted )
79
+ }
80
+
81
+ t .Run ("hints enabled" , func (t * testing.T ) {
82
+ defer tests .PrintCurrentTest (t )()
83
+ defer setUserHints (t , true )()
84
+
85
+ t .Run ("settings" , func (t * testing.T ) {
86
+ defer tests .PrintCurrentTest (t )()
87
+
88
+ // Visiting the /settings page, "Settings" is highlighted
89
+ assertHighlight (t , "" , "" , true )
90
+ // ...but "Add more" isn't.
91
+ assertHighlight (t , "" , "/units" , false )
92
+ })
93
+
94
+ t .Run ("units" , func (t * testing.T ) {
95
+ defer tests .PrintCurrentTest (t )()
96
+
97
+ // Visiting the /settings/units page, "Add more" is highlighted
98
+ assertHighlight (t , "/units" , "/units" , true )
99
+ // ...but "Settings" isn't.
100
+ assertHighlight (t , "/units" , "" , false )
101
+ })
102
+ })
103
+
104
+ t .Run ("hints disabled" , func (t * testing.T ) {
105
+ defer tests .PrintCurrentTest (t )()
106
+ defer setUserHints (t , false )()
107
+
108
+ t .Run ("settings" , func (t * testing.T ) {
109
+ defer tests .PrintCurrentTest (t )()
110
+
111
+ // Visiting the /settings page, "Settings" is highlighted
112
+ assertHighlight (t , "" , "" , true )
113
+ // ...but "Add more" isn't (it doesn't exist).
114
+ assertHighlight (t , "" , "/units" , false )
115
+ })
116
+
117
+ t .Run ("units" , func (t * testing.T ) {
118
+ defer tests .PrintCurrentTest (t )()
119
+
120
+ // Visiting the /settings/units page, "Settings" is highlighted
121
+ assertHighlight (t , "/units" , "" , true )
122
+ // ...but "Add more" isn't (it doesn't exist)
123
+ assertHighlight (t , "/units" , "/units" , false )
124
+ })
125
+ })
126
+ }
127
+
35
128
func TestRepoAddMoreUnits (t * testing.T ) {
36
129
defer tests .PrepareTestEnv (t )()
37
130
user := unittest .AssertExistsAndLoadBean (t , & user_model.User {Name : "user2" })
0 commit comments