diff options
Diffstat (limited to 'spec')
-rw-r--r-- | spec/features/profiles/preferences_spec.rb | 6 | ||||
-rw-r--r-- | spec/lib/gitlab/themes_spec.rb | 51 | ||||
-rw-r--r-- | spec/models/user_spec.rb | 4 |
3 files changed, 56 insertions, 5 deletions
diff --git a/spec/features/profiles/preferences_spec.rb b/spec/features/profiles/preferences_spec.rb index 0e033652a9c..7bbb591a4ec 100644 --- a/spec/features/profiles/preferences_spec.rb +++ b/spec/features/profiles/preferences_spec.rb @@ -8,14 +8,14 @@ describe 'Profile > Preferences' do end describe 'User changes their application theme', js: true do - let(:default_class) { Gitlab::Theme.css_class_by_id(nil) } - let(:theme_5_class) { Gitlab::Theme.css_class_by_id(5) } + let(:default) { Gitlab::Themes.default } + let(:theme) { Gitlab::Themes.by_id(5) } before do visit profile_preferences_path end - it 'changes immediately' do + it 'reflects the changes immediately' do expect(page).to have_selector("body.#{default.css_class}") choose "user_theme_id_#{theme.id}" diff --git a/spec/lib/gitlab/themes_spec.rb b/spec/lib/gitlab/themes_spec.rb new file mode 100644 index 00000000000..9c6c3fd8104 --- /dev/null +++ b/spec/lib/gitlab/themes_spec.rb @@ -0,0 +1,51 @@ +require 'spec_helper' + +describe Gitlab::Themes do + describe '.body_classes' do + it 'returns a space-separated list of class names' do + css = described_class.body_classes + + expect(css).to include('ui_graphite') + expect(css).to include(' ui_charcoal ') + expect(css).to include(' ui_blue') + end + end + + describe '.by_id' do + it 'returns a Theme by its ID' do + expect(described_class.by_id(1).name).to eq 'Graphite' + expect(described_class.by_id(6).name).to eq 'Blue' + end + end + + describe '.default' do + it 'returns the default application theme' do + allow(described_class).to receive(:default_id).and_return(2) + expect(described_class.default.id).to eq 2 + end + + it 'prevents an infinite loop when configuration default is invalid' do + default = described_class::APPLICATION_DEFAULT + themes = described_class::THEMES + + config = double(default_theme: 0).as_null_object + allow(Gitlab).to receive(:config).and_return(config) + expect(described_class.default.id).to eq default + + config = double(default_theme: themes.size + 5).as_null_object + allow(Gitlab).to receive(:config).and_return(config) + expect(described_class.default.id).to eq default + end + end + + describe '.each' do + it 'passes the block to the THEMES Array' do + ids = [] + described_class.each { |theme| ids << theme.id } + expect(ids).not_to be_empty + + # TODO (rspeicher): RSpec 3.x + # expect(described_class.each).to yield_with_arg(described_class::Theme) + end + end +end diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb index f1b8afa5854..9ff4288684b 100644 --- a/spec/models/user_spec.rb +++ b/spec/models/user_spec.rb @@ -329,12 +329,12 @@ describe User do end describe 'with default overrides' do - let(:user) { User.new(projects_limit: 123, can_create_group: false, can_create_team: true, theme_id: Gitlab::Theme::BASIC) } + let(:user) { User.new(projects_limit: 123, can_create_group: false, can_create_team: true, theme_id: 1) } it "should apply defaults to user" do expect(user.projects_limit).to eq(123) expect(user.can_create_group).to be_falsey - expect(user.theme_id).to eq(Gitlab::Theme::BASIC) + expect(user.theme_id).to eq(1) end end end |