From 7a81dc65d9013dff4d8bf36cf78e027693703990 Mon Sep 17 00:00:00 2001 From: Robert Speicher Date: Wed, 26 Aug 2015 11:33:44 -0700 Subject: [PATCH] Re-add user_color_scheme helper Update PreferencesHelper specs --- app/helpers/preferences_helper.rb | 6 +- spec/helpers/preferences_helper_spec.rb | 95 ++++++++++++++++--------- 2 files changed, 68 insertions(+), 33 deletions(-) diff --git a/app/helpers/preferences_helper.rb b/app/helpers/preferences_helper.rb index 51a6b3fa997..7f1b6a69926 100644 --- a/app/helpers/preferences_helper.rb +++ b/app/helpers/preferences_helper.rb @@ -30,7 +30,11 @@ module PreferencesHelper end def user_application_theme - Gitlab::Themes.by_id(current_user.try(:theme_id)).css_class + Gitlab::Themes.for_user(current_user).css_class + end + + def user_color_scheme + Gitlab::ColorSchemes.for_user(current_user).css_class end def prefer_readme? diff --git a/spec/helpers/preferences_helper_spec.rb b/spec/helpers/preferences_helper_spec.rb index b4dee272bfd..06f69262b71 100644 --- a/spec/helpers/preferences_helper_spec.rb +++ b/spec/helpers/preferences_helper_spec.rb @@ -1,51 +1,82 @@ require 'spec_helper' describe PreferencesHelper do - describe 'user_application_theme' do - context 'with a user' do - it "returns user's theme's css_class" do - user = double('user', theme_id: 3) - allow(self).to receive(:current_user).and_return(user) - expect(user_application_theme).to eq 'ui_green' - end - - it 'returns the default when id is invalid' do - user = double('user', theme_id: Gitlab::Themes::THEMES.size + 5) - - allow(Gitlab.config.gitlab).to receive(:default_theme).and_return(2) - allow(self).to receive(:current_user).and_return(user) - - expect(user_application_theme).to eq 'ui_charcoal' - end - end - - context 'without a user' do - before do - allow(self).to receive(:current_user).and_return(nil) - end - - it 'returns the default theme' do - expect(user_application_theme).to eq Gitlab::Themes.default.css_class - end - end - end - describe 'dashboard_choices' do it 'raises an exception when defined choices may be missing' do expect(User).to receive(:dashboards).and_return(foo: 'foo') - expect { dashboard_choices }.to raise_error(RuntimeError) + expect { helper.dashboard_choices }.to raise_error(RuntimeError) end it 'raises an exception when defined choices may be using the wrong key' do expect(User).to receive(:dashboards).and_return(foo: 'foo', bar: 'bar') - expect { dashboard_choices }.to raise_error(KeyError) + expect { helper.dashboard_choices }.to raise_error(KeyError) end it 'provides better option descriptions' do - expect(dashboard_choices).to match_array [ + expect(helper.dashboard_choices).to match_array [ ['Your Projects (default)', 'projects'], ['Starred Projects', 'stars'] ] end end + + describe 'user_application_theme' do + context 'with a user' do + it "returns user's theme's css_class" do + stub_user(theme_id: 3) + + expect(helper.user_application_theme).to eq 'ui_green' + end + + it 'returns the default when id is invalid' do + stub_user(theme_id: Gitlab::Themes.count + 5) + + allow(Gitlab.config.gitlab).to receive(:default_theme).and_return(2) + + expect(helper.user_application_theme).to eq 'ui_charcoal' + end + end + + context 'without a user' do + it 'returns the default theme' do + stub_user + + expect(helper.user_application_theme).to eq Gitlab::Themes.default.css_class + end + end + end + + describe 'user_color_scheme' do + context 'with a user' do + it "returns user's scheme's css_class" do + allow(helper).to receive(:current_user). + and_return(double(color_scheme_id: 3)) + + expect(helper.user_color_scheme).to eq 'solarized-light' + end + + it 'returns the default when id is invalid' do + allow(helper).to receive(:current_user). + and_return(double(color_scheme_id: Gitlab::ColorSchemes.count + 5)) + end + end + + context 'without a user' do + it 'returns the default theme' do + stub_user + + expect(helper.user_color_scheme). + to eq Gitlab::ColorSchemes.default.css_class + end + end + end + + def stub_user(messages = {}) + if messages.empty? + allow(helper).to receive(:current_user).and_return(nil) + else + allow(helper).to receive(:current_user). + and_return(double('user', messages)) + end + end end