File tree Expand file tree Collapse file tree 5 files changed +62
-2
lines changed
Expand file tree Collapse file tree 5 files changed +62
-2
lines changed Original file line number Diff line number Diff line change @@ -5,6 +5,10 @@ def spaces_info
55 end
66
77 def space_feature_options
8- Space ::FEATURES . map { |f | [ t ( "features.#{ f } .short" ) , f ] }
8+ Space ::FEATURES . select do |f |
9+ TeSS ::Config . feature [ f ]
10+ end . map do |f |
11+ [ t ( "features.#{ f } .short" ) , f ]
12+ end
913 end
1014end
Original file line number Diff line number Diff line change @@ -51,7 +51,7 @@ def users_with_role(role)
5151
5252 def feature_enabled? ( feature )
5353 if FEATURES . include? ( feature )
54- !disabled_features . include? ( feature )
54+ TeSS :: Config . feature [ feature ] && !disabled_features . include? ( feature )
5555 else
5656 TeSS ::Config . feature [ feature ]
5757 end
Original file line number Diff line number Diff line change @@ -238,4 +238,28 @@ class SpacesControllerTest < ActionController::TestCase
238238 assert_includes admins , existing_admin
239239 assert_includes admins , new_admin
240240 end
241+
242+ test 'only instance-enabled features are listed on management page' do
243+ sign_in @space . user
244+ features = { 'events' : true ,
245+ 'materials' : false ,
246+ 'elearning_materials' : false ,
247+ 'learning_paths' : false ,
248+ 'workflows' : true ,
249+ 'collections' : false ,
250+ 'content_providers' : false ,
251+ 'trainers' : false ,
252+ 'nodes' : false
253+ }
254+
255+ with_settings ( feature : features ) do
256+ get :edit , params : { id : @space }
257+ assert_response :success
258+ assert_select '[name="space[enabled_features][]"]' , count : 3 # +1 because of the blank input that allows you to
259+ # clear the list
260+ assert_select '#space_enabled_features_events' , count : 1
261+ assert_select '#space_enabled_features_workflows' , count : 1
262+ assert_select '#space_enabled_features_materials' , count : 0
263+ end
264+ end
241265end
Original file line number Diff line number Diff line change @@ -694,4 +694,22 @@ class StaticControllerTest < ActionController::TestCase
694694 end
695695 end
696696 end
697+
698+ test 'space enabled features are limited by instance enabled features' do
699+ space = spaces ( :plants )
700+ space . disabled_features = [ ]
701+ space . save!
702+
703+ assert_includes space . enabled_features , 'events'
704+
705+ with_settings ( feature : { 'events' : false } ) do
706+ with_host ( 'plants.mytess.training' ) do
707+ get :home
708+ assert_select 'ul.nav.navbar-nav' do
709+ assert_select 'li a[href=?]' , materials_path , count : 1
710+ assert_select 'li a[href=?]' , events_path , count : 0
711+ end
712+ end
713+ end
714+ end
697715end
Original file line number Diff line number Diff line change @@ -85,6 +85,20 @@ class SpaceTest < ActiveSupport::TestCase
8585 end
8686 end
8787
88+ test 'feature_enabled? is limited by instance enabled features' do
89+ @space . disabled_features = [ ]
90+ assert_includes @space . enabled_features , 'events'
91+ with_settings ( feature : { 'events' => true } ) do
92+ assert @space . feature_enabled? ( 'events' )
93+ assert @space . feature_enabled? ( 'materials' )
94+ end
95+
96+ with_settings ( feature : { 'events' => false } ) do
97+ refute @space . feature_enabled? ( 'events' )
98+ assert @space . feature_enabled? ( 'materials' )
99+ end
100+ end
101+
88102 test 'enabled_features returns all features except disabled ones' do
89103 @space . disabled_features = [ 'events' , 'materials' ]
90104 enabled = @space . enabled_features
You can’t perform that action at this time.
0 commit comments