diff --git a/app/models/user.rb b/app/models/user.rb index c9873975cc932135a25bb836221bfa28f8768b49..e0868891172d02e840379684b1a94b5f55abc987 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -334,6 +334,10 @@ def update_tracked_fields!(request) validates :color_scheme_id, allow_nil: true, inclusion: { in: Gitlab::ColorSchemes.valid_ids, message: ->(*) { _("%{placeholder} is not a valid color scheme") % { placeholder: '%{value}' } } } + validates :hide_no_ssh_key, allow_nil: false, inclusion: { in: [true, false] } + validates :hide_no_password, allow_nil: false, inclusion: { in: [true, false] } + validates :notified_of_own_activity, allow_nil: false, inclusion: { in: [true, false] } + validates :project_view, presence: true after_initialize :set_projects_limit before_validation :sanitize_attrs diff --git a/app/models/user_preference.rb b/app/models/user_preference.rb index 70ffe0c85f8269fe5d120bd7be87626288054ff4..847249b22f8bc69dce4043a6d3815b213abd676c 100644 --- a/app/models/user_preference.rb +++ b/app/models/user_preference.rb @@ -25,6 +25,8 @@ class UserPreference < MainClusterwide::ApplicationRecord format: { with: ColorsHelper::HEX_COLOR_PATTERN }, allow_blank: true + validates :time_display_relative, allow_nil: false, inclusion: { in: [true, false] } + validates :render_whitespace_in_code, allow_nil: false, inclusion: { in: [true, false] } validates :pass_user_identities_to_ci_jwt, allow_nil: false, inclusion: { in: [true, false] } validates :pinned_nav_items, json_schema: { filename: 'pinned_nav_items' } diff --git a/spec/models/user_preference_spec.rb b/spec/models/user_preference_spec.rb index ee3fbb97e472ddbe01382918baeebf16cb3bd9b6..465590773396cd649341c644ff281cd8475689d2 100644 --- a/spec/models/user_preference_spec.rb +++ b/spec/models/user_preference_spec.rb @@ -8,6 +8,16 @@ let(:user_preference) { create(:user_preference, user: user) } describe 'validations' do + it { is_expected.to validate_inclusion_of(:time_display_relative).in_array([true, false]) } + it { is_expected.to validate_inclusion_of(:render_whitespace_in_code).in_array([true, false]) } + + it do + is_expected.to validate_numericality_of(:tab_width) + .only_integer + .is_greater_than_or_equal_to(Gitlab::TabWidth::MIN) + .is_less_than_or_equal_to(Gitlab::TabWidth::MAX) + end + describe 'diffs_deletion_color and diffs_addition_color' do using RSpec::Parameterized::TableSyntax @@ -163,13 +173,6 @@ expect(pref.reload.tab_width).to eq(8) end - - it do - is_expected.to validate_numericality_of(:tab_width) - .only_integer - .is_greater_than_or_equal_to(1) - .is_less_than_or_equal_to(12) - end end describe '#tab_width=' do diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb index 7014c9e685f159b4dc9c7a61fb1015a57eb0a8c3..a586f44d843325388023f213ae6b1cd3ed151e19 100644 --- a/spec/models/user_spec.rb +++ b/spec/models/user_spec.rb @@ -728,6 +728,10 @@ end it { is_expected.to validate_presence_of(:projects_limit) } + it { is_expected.to define_enum_for(:project_view).with_values(%i[readme activity files wiki]) } + it { is_expected.to validate_inclusion_of(:hide_no_ssh_key).in_array([true, false]) } + it { is_expected.to validate_inclusion_of(:hide_no_password).in_array([true, false]) } + it { is_expected.to validate_inclusion_of(:notified_of_own_activity).in_array([true, false]) } it { is_expected.to validate_numericality_of(:projects_limit) } it { is_expected.to allow_value(0).for(:projects_limit) } it { is_expected.not_to allow_value(-1).for(:projects_limit) }