From 64b0d7e0eacdd50df2f95c6dd789d615f527f87e Mon Sep 17 00:00:00 2001 From: Sam Date: Fri, 28 Mar 2014 16:34:20 +1100 Subject: [PATCH] PERF: use before suite vs before file BUGFIX: correctly punch through settings to local provider --- spec/spec_helper.rb | 36 +++++++++++++++++++++--------------- 1 file changed, 21 insertions(+), 15 deletions(-) diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 950e0dd8db2..793b51ad4f1 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -52,16 +52,33 @@ Spork.prefork do # rspec-rails. config.infer_base_class_for_anonymous_controllers = true - # if we need stuff post fork, pre tests run here - # config.before(:suite) do - # end + config.before(:suite) do - config.before do + DiscoursePluginRegistry.clear if ENV['LOAD_PLUGINS'] != "1" + Discourse.current_user_provider = TestCurrentUserProvider + + SiteSetting.refresh! + + # Rebase defaults + # + # We nuke the DB storage provider from site settings, so need to yank out the existing settings + # and pretend they are default. + # There are a bunch of settings that are seeded, they must be loaded as defaults + SiteSetting.current.each do |k,v| + SiteSetting.defaults[k] = v + end + + require_dependency 'site_settings/local_process_provider' + SiteSetting.provider = SiteSettings::LocalProcessProvider.new + end + + config.before :each do |x| # disable all observers, enable as needed during specs ActiveRecord::Base.observers.disable :all SiteSetting.provider.all.each do |setting| SiteSetting.remove_override!(setting.name) end + end class TestCurrentUserProvider < Auth::DefaultCurrentUserProvider @@ -76,17 +93,6 @@ Spork.prefork do end end - config.before(:all) do - DiscoursePluginRegistry.clear if ENV['LOAD_PLUGINS'] != "1" - Discourse.current_user_provider = TestCurrentUserProvider - - # a bit odd, but this setting is actually preloaded - SiteSetting.defaults[:uncategorized_category_id] = SiteSetting.uncategorized_category_id - - require_dependency 'site_settings/local_process_provider' - SiteSetting.provider = SiteSettings::LocalProcessProvider.new - end - end def freeze_time(now=Time.now)