From 0325dd619978553b179b0c5f9201b2fe53f592da Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Juanjo=20Baza=CC=81n?= Date: Thu, 4 Feb 2016 17:29:05 +0100 Subject: [PATCH] refactors settings/flags helper to memoize values --- app/helpers/admin_helper.rb | 2 +- app/helpers/feature_flags_helper.rb | 5 --- app/helpers/settings_helper.rb | 11 +++++++ app/mailers/application_mailer.rb | 1 + app/mailers/devise_mailer.rb | 2 +- app/views/layouts/_admin_header.html.erb | 2 +- app/views/layouts/_footer.html.erb | 16 +++++----- app/views/layouts/_header.html.erb | 8 ++--- app/views/layouts/application.html.erb | 4 +-- app/views/layouts/mailer.html.erb | 4 +-- app/views/layouts/management.html.erb | 2 +- app/views/proposals/_featured_votes.html.erb | 4 +-- app/views/proposals/_votes.html.erb | 4 +-- .../shared/_social_media_meta_tags.html.erb | 10 +++--- spec/helpers/geozones_helper_spec.rb | 1 - spec/helpers/settings_helper_spec.rb | 31 +++++++++++++++++++ 16 files changed, 72 insertions(+), 35 deletions(-) delete mode 100644 app/helpers/feature_flags_helper.rb create mode 100644 app/helpers/settings_helper.rb create mode 100644 spec/helpers/settings_helper_spec.rb diff --git a/app/helpers/admin_helper.rb b/app/helpers/admin_helper.rb index 2e4ab08f3..f986eee8d 100644 --- a/app/helpers/admin_helper.rb +++ b/app/helpers/admin_helper.rb @@ -7,7 +7,7 @@ module AdminHelper def official_level_options options = [["",0]] (1..5).each do |i| - options << [[t("admin.officials.level_#{i}"), Setting["official_level_#{i}_name"]].compact.join(': '), i] + options << [[t("admin.officials.level_#{i}"), setting["official_level_#{i}_name"]].compact.join(': '), i] end options end diff --git a/app/helpers/feature_flags_helper.rb b/app/helpers/feature_flags_helper.rb deleted file mode 100644 index 1e74c016b..000000000 --- a/app/helpers/feature_flags_helper.rb +++ /dev/null @@ -1,5 +0,0 @@ -module FeatureFlagsHelper - def feature?(name) - !!Setting["feature.#{name}"] - end -end diff --git a/app/helpers/settings_helper.rb b/app/helpers/settings_helper.rb new file mode 100644 index 000000000..cd90a8a39 --- /dev/null +++ b/app/helpers/settings_helper.rb @@ -0,0 +1,11 @@ +module SettingsHelper + + def feature?(name) + setting["feature.#{name}"].presence + end + + def setting + @all_settings ||= Hash[ Setting.all.map{|s| [s.key, s.value.presence]} ] + end + +end diff --git a/app/mailers/application_mailer.rb b/app/mailers/application_mailer.rb index e5d793e1e..c1f3e4bb6 100644 --- a/app/mailers/application_mailer.rb +++ b/app/mailers/application_mailer.rb @@ -1,4 +1,5 @@ class ApplicationMailer < ActionMailer::Base + helper :settings default from: "participacion@madrid.es" layout 'mailer' end diff --git a/app/mailers/devise_mailer.rb b/app/mailers/devise_mailer.rb index a1eebcdb4..6c053cb52 100644 --- a/app/mailers/devise_mailer.rb +++ b/app/mailers/devise_mailer.rb @@ -1,5 +1,5 @@ class DeviseMailer < Devise::Mailer - helper :application + helper :application, :settings include Devise::Controllers::UrlHelpers default template_path: 'devise/mailer' diff --git a/app/views/layouts/_admin_header.html.erb b/app/views/layouts/_admin_header.html.erb index 797797aa6..bc946e534 100644 --- a/app/views/layouts/_admin_header.html.erb +++ b/app/views/layouts/_admin_header.html.erb @@ -11,7 +11,7 @@
  • <%= link_to root_path do %> <%= image_tag('header_logo_madrid.png', class: 'left', size: '96x96', alt: t("layouts.header.logo")) %> - <%= Setting['org_name'] %> | <%= t("admin.dashboard.index.title") %> + <%= setting['org_name'] %> | <%= t("admin.dashboard.index.title") %> <% end %>
  • diff --git a/app/views/layouts/_footer.html.erb b/app/views/layouts/_footer.html.erb index d7c31d6da..e616e4f79 100644 --- a/app/views/layouts/_footer.html.erb +++ b/app/views/layouts/_footer.html.erb @@ -53,26 +53,26 @@
    - <% if Setting['twitter_handle'] %> - <%= link_to "https://twitter.com/#{Setting['twitter_handle']}", target: "_blank", title: t("social.twitter") do %> + <% if setting['twitter_handle'] %> + <%= link_to "https://twitter.com/#{setting['twitter_handle']}", target: "_blank", title: t("social.twitter") do %> <%= t("social.twitter") %> <% end %> <% end %> - <% if Setting['facebook_handle'] %> - <%= link_to "https://www.facebook.com/#{Setting['facebook_handle']}/", target: "_blank", title: t("social.facebook") do %> + <% if setting['facebook_handle'] %> + <%= link_to "https://www.facebook.com/#{setting['facebook_handle']}/", target: "_blank", title: t("social.facebook") do %> <%= t("social.facebook") %> <% end %> <% end %> - <% if Setting['blog_url'] %> - <%= link_to Setting['blog_url'], target: "_blank", title: t("social.blog") do %> + <% if setting['blog_url'] %> + <%= link_to setting['blog_url'], target: "_blank", title: t("social.blog") do %> <%= t("social.blog") %> <% end %> <% end %> - <% if Setting['youtube_handle'] %> - <%= link_to "https://www.youtube.com/#{Setting['youtube_handle']}", target: "_blank", title: t("social.youtube") do %> + <% if setting['youtube_handle'] %> + <%= link_to "https://www.youtube.com/#{setting['youtube_handle']}", target: "_blank", title: t("social.youtube") do %> <%= t("social.youtube") %> <% end %> diff --git a/app/views/layouts/_header.html.erb b/app/views/layouts/_header.html.erb index 4b160e00a..b71341e30 100644 --- a/app/views/layouts/_header.html.erb +++ b/app/views/layouts/_header.html.erb @@ -3,7 +3,7 @@
    <%= render "shared/locale_switcher" %> @@ -21,7 +21,7 @@ <%= t("layouts.header.open_gov", open: "#{t('layouts.header.open')}") %> | <%= t("layouts.header.open_data") %> <% else %> - <%= Setting['org_name'] %> + <%= setting['org_name'] %> <% end %> <% end %> @@ -43,8 +43,8 @@ <%= link_to t("layouts.header.spending_proposals"), spending_proposals_path, class: ("active" if controller_name == "spending_proposals") %> <% end %> <%= link_to t("layouts.header.more_information"), page_path('more_information'), class: ("active" if current_page?("/more_information")) %> - <% if Setting['blog_url'] %> - <%= link_to Setting['blog_url'], target: "_blank" do %> + <% if setting['blog_url'] %> + <%= link_to setting['blog_url'], target: "_blank" do %> <%= t("layouts.header.external_link_blog") %> <% end %> diff --git a/app/views/layouts/application.html.erb b/app/views/layouts/application.html.erb index c0050e107..fd95e30f1 100644 --- a/app/views/layouts/application.html.erb +++ b/app/views/layouts/application.html.erb @@ -4,7 +4,7 @@ - <%= content_for?(:title) ? yield(:title) : Setting['org_name'] %> + <%= content_for?(:title) ? yield(:title) : setting['org_name'] %> <%= stylesheet_link_tag "application" %> <%= javascript_include_tag "vendor/modernizr" %> <%= javascript_include_tag "application", 'data-turbolinks-track' => true %> @@ -16,7 +16,7 @@ type: "image/png" %> <%= content_for :social_media_meta_tags %> - <%= Setting['per_page_code'].try(:html_safe) %> + <%= setting['per_page_code'].try(:html_safe) %> diff --git a/app/views/layouts/mailer.html.erb b/app/views/layouts/mailer.html.erb index 94fc4d231..548636c82 100644 --- a/app/views/layouts/mailer.html.erb +++ b/app/views/layouts/mailer.html.erb @@ -14,7 +14,7 @@ - <%= image_tag('logo_email_gobierno_abierto.png', style: "border: 0; display: block; width: 100%;max-width: 370px", alt: Setting['org_name']) %> + <%= image_tag('logo_email_gobierno_abierto.png', style: "border: 0; display: block; width: 100%;max-width: 370px", alt: setting['org_name']) %> @@ -31,7 +31,7 @@

    - <%= Setting['org_name'] %>

    + <%= setting['org_name'] %>

    diff --git a/app/views/layouts/management.html.erb b/app/views/layouts/management.html.erb index 31d674ec4..1758e42a2 100644 --- a/app/views/layouts/management.html.erb +++ b/app/views/layouts/management.html.erb @@ -29,7 +29,7 @@
  • <%= link_to management_root_path do %> <%= image_tag('header_logo_madrid.png', class: 'left', size: '96x96') %> - <%= Setting['org_name'] %> | <%= t("management.dashboard.index.title") %> + <%= setting['org_name'] %> | <%= t("management.dashboard.index.title") %> <% end %>
  • diff --git a/app/views/proposals/_featured_votes.html.erb b/app/views/proposals/_featured_votes.html.erb index e828b7fb5..bafe3d583 100644 --- a/app/views/proposals/_featured_votes.html.erb +++ b/app/views/proposals/_featured_votes.html.erb @@ -35,9 +35,9 @@ <% end %> <% if voted_for?(@featured_proposals_votes, proposal) %> - <% if Setting['twitter_handle'] %> + <% if setting['twitter_handle'] %> <% end %> <% end %> diff --git a/app/views/proposals/_votes.html.erb b/app/views/proposals/_votes.html.erb index 9a7c18dce..d6e015c3f 100644 --- a/app/views/proposals/_votes.html.erb +++ b/app/views/proposals/_votes.html.erb @@ -51,9 +51,9 @@
    <% end %> - <% if voted_for?(@proposal_votes, proposal) && Setting['twitter_handle'] %> + <% if voted_for?(@proposal_votes, proposal) && setting['twitter_handle'] %> <% end %>
    diff --git a/app/views/shared/_social_media_meta_tags.html.erb b/app/views/shared/_social_media_meta_tags.html.erb index 65149e04d..5a2efbd04 100644 --- a/app/views/shared/_social_media_meta_tags.html.erb +++ b/app/views/shared/_social_media_meta_tags.html.erb @@ -6,15 +6,15 @@ -<% if Setting['url'] %> - /> +<% if setting['url'] %> + /> <% end %> -<% if Setting['facebook_handle'] %> - +<% if setting['facebook_handle'] %> + <% end %> - + diff --git a/spec/helpers/geozones_helper_spec.rb b/spec/helpers/geozones_helper_spec.rb index d85ff8753..605a774a6 100644 --- a/spec/helpers/geozones_helper_spec.rb +++ b/spec/helpers/geozones_helper_spec.rb @@ -5,7 +5,6 @@ describe GeozonesHelper do describe "#geozones_name" do let(:geozone) { create :geozone } - it "returns geozone name if present" do spending_proposal = create(:spending_proposal, geozone: geozone) expect(geozone_name(spending_proposal)).to eq geozone.name diff --git a/spec/helpers/settings_helper_spec.rb b/spec/helpers/settings_helper_spec.rb new file mode 100644 index 000000000..0aa9b8541 --- /dev/null +++ b/spec/helpers/settings_helper_spec.rb @@ -0,0 +1,31 @@ +require 'rails_helper' + +RSpec.describe SettingsHelper, type: :helper do + + describe "#setting" do + + it "returns a hash with all settings values" do + Setting["key1"] = "value1" + Setting["key2"] = "value2" + + expect(setting["key1"]).to eq("value1") + expect(setting["key2"]).to eq("value2") + expect(setting["key3"]).to eq(nil) + end + end + + describe "#feature?" do + it "returns presence of feature flag setting value" do + + Setting["feature.f1"] = "active" + Setting["feature.f2"] = "" + Setting["feature.f3"] = nil + + expect(feature? "f1").to eq("active") + expect(feature? "f2").to eq(nil) + expect(feature? "f3").to eq(nil) + expect(feature? "f4").to eq(nil) + end + end + +end \ No newline at end of file