From 4bf6542dbd80814601de6bbc26189ee2eb42dd85 Mon Sep 17 00:00:00 2001 From: Artem Kozaev Date: Thu, 25 Jan 2018 16:56:01 +0300 Subject: [PATCH 1/2] Add reviews settings access ability --- app/models/spree/reviews_ability.rb | 6 ++++++ app/overrides/add_reviews_to_admin_configuration_sidebar.rb | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/app/models/spree/reviews_ability.rb b/app/models/spree/reviews_ability.rb index 466dcc6f..a8a63e5f 100644 --- a/app/models/spree/reviews_ability.rb +++ b/app/models/spree/reviews_ability.rb @@ -3,12 +3,18 @@ class Spree::ReviewsAbility def initialize(user) review_ability_class = self.class + can :create, Spree::Review do review_ability_class.allow_anonymous_reviews? || !user.email.blank? end + can :create, Spree::FeedbackReview do review_ability_class.allow_anonymous_reviews? || !user.email.blank? end + + if user.respond_to?(:has_spree_role?) && user.has_spree_role?('admin') + can :manage, Spree::ReviewSetting + end end def self.allow_anonymous_reviews? diff --git a/app/overrides/add_reviews_to_admin_configuration_sidebar.rb b/app/overrides/add_reviews_to_admin_configuration_sidebar.rb index e9032cd0..21a8e35a 100644 --- a/app/overrides/add_reviews_to_admin_configuration_sidebar.rb +++ b/app/overrides/add_reviews_to_admin_configuration_sidebar.rb @@ -2,5 +2,5 @@ virtual_path: 'spree/admin/shared/sub_menu/_configuration', name: 'converted_admin_configurations_menu', insert_bottom: '[data-hook="admin_configurations_sidebar_menu"]', - text: '<%= configurations_sidebar_menu_item Spree.t(:review_settings, scope: :spree_reviews), edit_admin_review_settings_path %>' + text: '<%= configurations_sidebar_menu_item(Spree.t(:review_settings, scope: :spree_reviews), edit_admin_review_settings_path) if can?(:manage, Spree::ReviewSetting) %>' ) From 6bdd33a36e0f10915c8c28904346df2d991ad920 Mon Sep 17 00:00:00 2001 From: Artem Kozaev Date: Thu, 25 Jan 2018 17:10:42 +0300 Subject: [PATCH 2/2] Add ability tests --- spec/models/reviews_ability_spec.rb | 16 ++++++++++++++++ spree_reviews.gemspec | 2 +- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/spec/models/reviews_ability_spec.rb b/spec/models/reviews_ability_spec.rb index 338422be..411eaa62 100644 --- a/spec/models/reviews_ability_spec.rb +++ b/spec/models/reviews_ability_spec.rb @@ -40,4 +40,20 @@ end end end + + describe 'access review settings' do + subject { described_class.new(user) } + + context 'when is ordinal user' do + let(:user) { build_stubbed(:user) } + + it { is_expected.not_to be_able_to(:manage, Spree::ReviewSetting) } + end + + context 'when is admin' do + let(:user) { build_stubbed(:admin_user) } + + it { is_expected.to be_able_to(:manage, Spree::ReviewSetting) } + end + end end diff --git a/spree_reviews.gemspec b/spree_reviews.gemspec index 9dd61085..7802b329 100644 --- a/spree_reviews.gemspec +++ b/spree_reviews.gemspec @@ -32,7 +32,7 @@ Gem::Specification.new do |s| s.add_development_dependency 'database_cleaner' s.add_development_dependency 'poltergeist' s.add_development_dependency 'rspec-rails' - s.add_development_dependency 'factory_girl' + s.add_development_dependency 'factory_bot' s.add_development_dependency 'sqlite3' s.add_development_dependency 'simplecov' s.add_development_dependency 'coffee-rails'