# frozen_string_literal: true RSpec.describe "site setting integrity checks" do let(:site_setting_file) { File.join(Rails.root, 'config', 'site_settings.yml') } let(:yaml) { YAML.load_file(site_setting_file) } %w(hidden client).each do |property| it "set #{property} value as true or not set" do yaml.each_value do |category| category.each_value do |setting| next unless setting.is_a?(Hash) expect(setting[property] == nil || setting[property] == true).to be_truthy end end end end it "has no duplicate keys" do duplicates = DuplicateKeyFinder.new.find_duplicates(site_setting_file) expect(duplicates).to be_empty end it "no locale default has different type than default or invalid key" do yaml.each_value do |category| category.each do |setting_name, setting| next unless setting.is_a?(Hash) if setting['locale_default'] setting['locale_default'].each_pair do |k, v| expect(LocaleSiteSetting.valid_value?(k.to_s)).to be_truthy, "'#{k}' is not a valid locale_default key for '#{setting_name}' site setting" case setting['default'] when TrueClass, FalseClass expect(v.class == TrueClass || v.class == FalseClass).to be_truthy else expect(v).to be_a_kind_of(setting['default'].class) end end end end end end end