From f4764fc50ab201358388d017e2712305019e585f Mon Sep 17 00:00:00 2001
From: "karel.picman@lbcfree.net"
Date: Fri, 26 Feb 2021 11:22:48 +0100
Subject: [PATCH] #1213 DMS project preferences for non-members
---
app/views/dmsf_state/_user_pref.html.erb | 66 ++++++++++-----------
test/functional/projects_controller_test.rb | 62 +++++++++++++++++++
2 files changed, 93 insertions(+), 35 deletions(-)
create mode 100644 test/functional/projects_controller_test.rb
diff --git a/app/views/dmsf_state/_user_pref.html.erb b/app/views/dmsf_state/_user_pref.html.erb
index fed328f4..ba44e6f4 100644
--- a/app/views/dmsf_state/_user_pref.html.erb
+++ b/app/views/dmsf_state/_user_pref.html.erb
@@ -19,39 +19,31 @@
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.%>
<% member = Member.find_by(project_id: @project.id, user_id: User.current.id) %>
-<% if member %>
- <% mail_notification = member.dmsf_mail_notification %>
- <% title_format = member.dmsf_title_format %>
- <% fast_links = member.dmsf_fast_links %>
-<% else %>
- <% mail_notification = false %>
- <% title_format = '' %>
- <% fast_links = false %>
-<% end %>
-
<%= form_tag(dmsf_user_pref_save_path(@project)) do %>
-
+ <% if member %>
+
+ <% end %>
<% if Setting.plugin_redmine_dmsf['dmsf_act_as_attachable'] %>
<% end %>
-
- <%= submit_tag l(:submit_save), title: l(:title_save_preferences), class: 'button-positive' %>
-
+ <% if member || Setting.plugin_redmine_dmsf['dmsf_act_as_attachable'] %>
+
+ <%= submit_tag l(:submit_save), title: l(:title_save_preferences), class: 'button-positive' %>
+
+ <% else %>
+ <%= l(:label_no_data) %>
+ <% end %>
<% end %>
diff --git a/test/functional/projects_controller_test.rb b/test/functional/projects_controller_test.rb
new file mode 100644
index 00000000..d896e9cb
--- /dev/null
+++ b/test/functional/projects_controller_test.rb
@@ -0,0 +1,62 @@
+# encoding: utf-8
+# frozen_string_literal: true
+#
+# Redmine plugin for Document Management System "Features"
+#
+# Copyright © 2011-21 Karel Pičman
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+require File.expand_path('../../test_helper', __FILE__)
+
+class ProjectsControllerTest < RedmineDmsf::Test::TestCase
+
+ include Redmine::I18n
+
+ def test_settings_dms_member
+ @request.session[:user_id] = @jsmith.id
+ @role_manager.add_permission! :user_preferences
+ with_settings plugin_redmine_dmsf: {'dmsf_act_as_attachable' => '1'} do
+ get :settings, params: { id: @project1.id, tab: 'dmsf' }
+ end
+ assert_response :success
+ assert_select 'fieldset legend', text: l(:link_user_preferences)
+ assert_select 'fieldset legend', text: "#{l(:field_project)} #{l(:label_preferences)}"
+ end
+
+ def test_settings_dms_member_no_permission
+ @request.session[:user_id] = @jsmith.id
+ @role_manager.remove_permission! :user_preferences
+ get :settings, params: { id: @project1.id, tab: 'dmsf' }
+ assert_response :success
+ assert_select 'fieldset legend', text: l(:link_user_preferences), count: 0
+ end
+
+ def test_settings_dms_non_member
+ @request.session[:user_id] = @admin.id
+ get :settings, params: { id: @project1.id, tab: 'dmsf' }
+ assert_response :success
+ assert_select 'fieldset legend', text: l(:link_user_preferences), count: 0
+ end
+
+ def test_settings_dms_member_no_act_as_attachments
+ @request.session[:user_id] = @jsmith.id
+ @role_manager.add_permission! :user_preferences
+ get :settings, params: { id: @project1.id, tab: 'dmsf' }
+ assert_response :success
+ assert_select 'fieldset legend', text: "#{l(:field_project)} #{l(:label_preferences)}", count: 0
+ end
+
+end
\ No newline at end of file