# HG changeset patch # User Jittat Fakcharoenphol # Date 2010-03-28 05:36:38 # Node ID 463e9531da32db6e70b1b04d646c17835761ca85 # Parent 35efcd905ebbbd870226772645122a1817974964 fixed dependency errors in spec diff --git a/app/models/configuration.rb b/app/models/configuration.rb --- a/app/models/configuration.rb +++ b/app/models/configuration.rb @@ -107,6 +107,7 @@ end def self.multicontests? + g = get('system.multicontests') return get('system.multicontests') == true end diff --git a/spec/config_spec_helper.rb b/spec/config_spec_helper.rb new file mode 100644 --- /dev/null +++ b/spec/config_spec_helper.rb @@ -0,0 +1,20 @@ + +module ConfigSpecHelperMethods + + def find_or_create_and_set_config(key, type, value) + c = Configuration.find_by_key(key) + c ||= Configuration.new(:key => key, + :value_type => type) + c.value = value + c.save! + end + + def enable_multicontest + find_or_create_and_set_config('system.multicontests','boolean','true') + end + + def disable_multicontest + find_or_create_and_set_config('system.multicontests','boolean','false') + end + +end diff --git a/spec/controllers/main_controller_spec.rb b/spec/controllers/main_controller_spec.rb --- a/spec/controllers/main_controller_spec.rb +++ b/spec/controllers/main_controller_spec.rb @@ -1,20 +1,5 @@ require File.dirname(__FILE__) + '/../spec_helper' - -module ConfigHelperMethods - def enable_multicontest - c = Configuration.new(:key => 'system.multicontests', - :value_type => 'boolean', - :value => 'true') - c.save - end - - def disable_multicontest - c = Configuration.new(:key => 'system.multicontests', - :value_type => 'boolean', - :value => 'false') - c.save - end -end +require File.dirname(__FILE__) + '/../config_spec_helper' describe MainController, "when a user comes to list page" do @@ -28,7 +13,7 @@ describe MainController, "when a logged in user comes to list page, with multicontests off" do integrate_views - include ConfigHelperMethods + include ConfigSpecHelperMethods fixtures :users fixtures :problems @@ -53,7 +38,7 @@ describe MainController, "when a logged in user comes to list page, with multicontests on" do integrate_views - include ConfigHelperMethods + include ConfigSpecHelperMethods fixtures :users fixtures :problems diff --git a/spec/controllers/users_controller_spec.rb b/spec/controllers/users_controller_spec.rb --- a/spec/controllers/users_controller_spec.rb +++ b/spec/controllers/users_controller_spec.rb @@ -17,6 +17,10 @@ any_number_of_times. and_return(@john_activation_key) + Configuration.new(:key => 'system.online_registration', + :value_type => 'boolean', + :value => 'true').save + get :new response.should render_template('users/new') end diff --git a/spec/models/configuration_spec.rb b/spec/models/configuration_spec.rb --- a/spec/models/configuration_spec.rb +++ b/spec/models/configuration_spec.rb @@ -1,14 +1,10 @@ require File.dirname(__FILE__) + '/../spec_helper' -describe Configuration do - - # only work with cached configuration - class Configuration - @@cache = true - end +describe Configuration, "when using cache" do before(:each) do + Configuration.cache = true @int_config = mock(Configuration, :id => 1, :key => 'mode', @@ -27,6 +23,10 @@ :value_type => 'boolean', :value => 'true') end + + after(:each) do + Configuration.cache = false + end it "should retrieve int config" do Configuration.should_receive(:find).once.with(:all). diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb --- a/spec/models/user_spec.rb +++ b/spec/models/user_spec.rb @@ -1,5 +1,5 @@ - require File.dirname(__FILE__) + '/../spec_helper' +require File.dirname(__FILE__) + '/../config_spec_helper' describe User do @@ -104,6 +104,8 @@ end describe User, "when requesting problem description," do + + include ConfigSpecHelperMethods fixtures :users fixtures :problems @@ -134,9 +136,14 @@ it "should not be able to view problem not in user's contests, when multicontests is on" do enable_multicontest + @james.can_view_problem?(@hard).should be_false + end + + it "with no assigned contest should not be able to view problem in contests when multicontests is on" do + enable_multicontest + @john.can_view_problem?(@add).should be_true @john.can_view_problem?(@easy).should be_false @john.can_view_problem?(@hard).should be_false - @james.can_view_problem?(@hard).should be_false end it "should be able to view all available problems, when multicontests is off" do @@ -153,17 +160,4 @@ @james.can_view_problem?(@add).should be_true end - def enable_multicontest - c = Configuration.new(:key => 'system.multicontests', - :value_type => 'boolean', - :value => 'true') - c.save - end - - def disable_multicontest - c = Configuration.new(:key => 'system.multicontests', - :value_type => 'boolean', - :value => 'false') - c.save - end end