Redirection to current folder after deleting objects in subfolders
This commit is contained in:
parent
ab79242927
commit
3e7f68a668
@ -28,7 +28,7 @@ class DmsfController < ApplicationController
|
|||||||
before_action :authorize, except: [:expand_folder]
|
before_action :authorize, except: [:expand_folder]
|
||||||
before_action :find_folder, except: [:new, :create, :edit_root, :save_root, :add_email, :append_email,
|
before_action :find_folder, except: [:new, :create, :edit_root, :save_root, :add_email, :append_email,
|
||||||
:autocomplete_for_user]
|
:autocomplete_for_user]
|
||||||
before_action :find_parent, only: [:new, :create]
|
before_action :find_parent, only: [:new, :create, :delete]
|
||||||
before_action :permissions
|
before_action :permissions
|
||||||
# Also try to lookup folder by title if this is an API call
|
# Also try to lookup folder by title if this is an API call
|
||||||
before_action :find_folder_by_title, only: [:show]
|
before_action :find_folder_by_title, only: [:show]
|
||||||
@ -284,7 +284,7 @@ class DmsfController < ApplicationController
|
|||||||
if commit
|
if commit
|
||||||
redirect_to :back
|
redirect_to :back
|
||||||
else
|
else
|
||||||
redirect_to dmsf_folder_path(id: @project, folder_id: @folder.dmsf_folder)
|
redirect_to dmsf_folder_path(id: @project, folder_id: @parent)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
format.api { result ? render_api_ok : render_validation_errors(@folder) }
|
format.api { result ? render_api_ok : render_validation_errors(@folder) }
|
||||||
|
|||||||
@ -26,6 +26,7 @@ class DmsfFilesController < ApplicationController
|
|||||||
|
|
||||||
before_action :find_file, except: [:delete_revision, :obsolete_revision]
|
before_action :find_file, except: [:delete_revision, :obsolete_revision]
|
||||||
before_action :find_revision, only: [:delete_revision, :obsolete_revision]
|
before_action :find_revision, only: [:delete_revision, :obsolete_revision]
|
||||||
|
before_action :find_folder, only: [:delete, :create_revision]
|
||||||
before_action :authorize
|
before_action :authorize
|
||||||
before_action :permissions
|
before_action :permissions
|
||||||
|
|
||||||
@ -224,7 +225,7 @@ class DmsfFilesController < ApplicationController
|
|||||||
end
|
end
|
||||||
respond_to do |format|
|
respond_to do |format|
|
||||||
format.html do
|
format.html do
|
||||||
redirect_to dmsf_folder_path(id: @project, folder_id: @file.dmsf_folder)
|
redirect_to dmsf_folder_path(id: @project, folder_id: @folder)
|
||||||
end
|
end
|
||||||
format.api { result ? render_api_ok : render_validation_errors(@file) }
|
format.api { result ? render_api_ok : render_validation_errors(@file) }
|
||||||
end
|
end
|
||||||
@ -347,6 +348,12 @@ class DmsfFilesController < ApplicationController
|
|||||||
render_404
|
render_404
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def find_folder
|
||||||
|
@folder = DmsfFolder.find params[:folder_id] if params[:folder_id].present?
|
||||||
|
rescue ActiveRecord::RecordNotFound
|
||||||
|
render_404
|
||||||
|
end
|
||||||
|
|
||||||
def check_project(entry)
|
def check_project(entry)
|
||||||
if entry && entry.project != @project
|
if entry && entry.project != @project
|
||||||
raise DmsfAccessError, l(:error_entry_project_does_not_match_current_project)
|
raise DmsfAccessError, l(:error_entry_project_does_not_match_current_project)
|
||||||
|
|||||||
@ -25,6 +25,7 @@ class DmsfLinksController < ApplicationController
|
|||||||
|
|
||||||
before_action :find_model_object, only: [:destroy, :restore]
|
before_action :find_model_object, only: [:destroy, :restore]
|
||||||
before_action :find_link_project
|
before_action :find_link_project
|
||||||
|
before_action :find_folder, only: [:destroy]
|
||||||
before_action :authorize
|
before_action :authorize
|
||||||
before_action :permissions
|
before_action :permissions
|
||||||
|
|
||||||
@ -150,7 +151,7 @@ class DmsfLinksController < ApplicationController
|
|||||||
respond_to do |format|
|
respond_to do |format|
|
||||||
format.html {
|
format.html {
|
||||||
if params[:dmsf_link][:type] == 'link_from'
|
if params[:dmsf_link][:type] == 'link_from'
|
||||||
redirect_to dmsf_folder_path(id: @project.id, folder_id: @dmsf_link.dmsf_folder_id)
|
redirect_to dmsf_folder_path(id: @project, folder_id: @dmsf_link.dmsf_folder_id)
|
||||||
else
|
else
|
||||||
if params[:dmsf_link][:dmsf_file_id].present?
|
if params[:dmsf_link][:dmsf_file_id].present?
|
||||||
redirect_to dmsf_file_path(@dmsf_link.target_file)
|
redirect_to dmsf_file_path(@dmsf_link.target_file)
|
||||||
@ -172,16 +173,14 @@ class DmsfLinksController < ApplicationController
|
|||||||
if @dmsf_link.delete(commit)
|
if @dmsf_link.delete(commit)
|
||||||
flash[:notice] = l(:notice_successful_delete)
|
flash[:notice] = l(:notice_successful_delete)
|
||||||
else
|
else
|
||||||
@dmsf_link.errors.each do |_, msg|
|
flash[:error] = @dmsf_link.errors.full_messages.to_sentence
|
||||||
flash[:error] = msg
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
rescue => e
|
rescue => e
|
||||||
errors[:base] << e.message
|
errors[:base] << e.message
|
||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
redirect_back fallback_location: dmsf_folder_path(id: @project, folder_id: @dmsf_link&.dmsf_folder)
|
redirect_back fallback_location: dmsf_folder_path(id: @project, folder_id: @folder)
|
||||||
end
|
end
|
||||||
|
|
||||||
def restore
|
def restore
|
||||||
@ -216,4 +215,10 @@ class DmsfLinksController < ApplicationController
|
|||||||
render_404
|
render_404
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def find_folder
|
||||||
|
@folder = DmsfFolder.find params[:folder_id] if params[:folder_id].present?
|
||||||
|
rescue ActiveRecord::RecordNotFound
|
||||||
|
render_404
|
||||||
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|||||||
@ -23,7 +23,7 @@
|
|||||||
<% query_options = nil unless defined?(query_options) %>
|
<% query_options = nil unless defined?(query_options) %>
|
||||||
<% query_options ||= {} %>
|
<% query_options ||= {} %>
|
||||||
|
|
||||||
<%= form_tag({}, data: { cm_url: query.deleted ? dmsf_trash_context_menu_path : dmsf_context_menu_path }) do %>
|
<%= form_tag({}, data: { cm_url: query.deleted ? dmsf_trash_context_menu_path : dmsf_context_menu_path(folder_id: folder) }) do %>
|
||||||
<%= hidden_field_tag 'back_url', url_for(params: request.query_parameters), id: nil %>
|
<%= hidden_field_tag 'back_url', url_for(params: request.query_parameters), id: nil %>
|
||||||
<%= query_columns_hidden_tags(query) %>
|
<%= query_columns_hidden_tags(query) %>
|
||||||
<div class="autoscroll">
|
<div class="autoscroll">
|
||||||
|
|||||||
@ -73,7 +73,7 @@
|
|||||||
<% if @dmsf_count == 0 %>
|
<% if @dmsf_count == 0 %>
|
||||||
<p class="nodata"><%= l(:label_no_data) %></p>
|
<p class="nodata"><%= l(:label_no_data) %></p>
|
||||||
<% else %>
|
<% else %>
|
||||||
<%= render partial: 'query_list', locals: { query: @query, dmsf_pages: @dmsf_pages } %>
|
<%= render partial: 'query_list', locals: { query: @query, dmsf_pages: @dmsf_pages, folder: @folder } %>
|
||||||
<span class="pagination"><%= pagination_links_full @dmsf_pages, @dmsf_count %></span>
|
<span class="pagination"><%= pagination_links_full @dmsf_pages, @dmsf_count %></span>
|
||||||
<% end %>
|
<% end %>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|||||||
@ -31,8 +31,7 @@
|
|||||||
<% unless dmsf_link %>
|
<% unless dmsf_link %>
|
||||||
<li>
|
<li>
|
||||||
<%= link_to l(:label_link_to),
|
<%= link_to l(:label_link_to),
|
||||||
new_dmsf_link_path(project_id: project.id,
|
new_dmsf_link_path(project_id: project.id, dmsf_folder_id: dmsf_file.dmsf_folder&.id,
|
||||||
dmsf_folder_id: dmsf_file.dmsf_folder ? dmsf_file.dmsf_folder.id : nil,
|
|
||||||
dmsf_file_id: dmsf_file.id, type: 'link_to'),
|
dmsf_file_id: dmsf_file.id, type: 'link_to'),
|
||||||
title: l(:title_create_link), class: 'icon icon-link' %>
|
title: l(:title_create_link), class: 'icon icon-link' %>
|
||||||
</li>
|
</li>
|
||||||
@ -80,7 +79,8 @@
|
|||||||
disabled: url.blank? || locked %>
|
disabled: url.blank? || locked %>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<%= context_menu_link l(:button_delete), dmsf_link ? dmsf_link_path(dmsf_link) : dmsf_file_path(dmsf_file),
|
<%= context_menu_link l(:button_delete),
|
||||||
method: :delete, class: 'icon icon-del', data: { confirm: l(:text_are_you_sure) },
|
dmsf_link ? dmsf_link_path(id: dmsf_link, folder_id: folder) : dmsf_file_path(id: dmsf_file, folder_id: folder),
|
||||||
id: 'dmsf-cm-delete', disabled: !allowed || locked %>
|
method: :delete, class: 'icon icon-del', data: { confirm: l(:text_are_you_sure) }, id: 'dmsf-cm-delete',
|
||||||
|
disabled: !allowed || locked %>
|
||||||
</li>
|
</li>
|
||||||
|
|||||||
@ -59,13 +59,13 @@
|
|||||||
id: 'dmsf-cm-download', disabled: false %>
|
id: 'dmsf-cm-download', disabled: false %>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<%= context_menu_link l(:field_mail), entries_operations_dmsf_path(id: @project, folder_id: folder,
|
<%= context_menu_link l(:field_mail), entries_operations_dmsf_path(id: project, folder_id: folder,
|
||||||
ids: params[:ids], email_entries: true), method: :post, class: 'icon icon-email',
|
ids: params[:ids], email_entries: true), method: :post, class: 'icon icon-email',
|
||||||
disabled: !email_allowed %>
|
disabled: !email_allowed %>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<%= context_menu_link l(:button_delete),
|
<%= context_menu_link l(:button_delete),
|
||||||
dmsf_link ? dmsf_link_path(dmsf_link) : delete_dmsf_path(id: project, folder_id: dmsf_folder),
|
dmsf_link ? dmsf_link_path(id: dmsf_link, folder_id: folder) : delete_dmsf_path(id: project, folder_id: dmsf_folder, parent_id: folder),
|
||||||
data: { confirm: l(:text_are_you_sure) }, method: :delete, class: 'icon icon-del', id: 'dmsf-cm-delete',
|
data: { confirm: l(:text_are_you_sure) }, method: :delete, class: 'icon icon-del', id: 'dmsf-cm-delete',
|
||||||
disabled: !allowed || locked %>
|
disabled: !allowed || locked %>
|
||||||
</li>
|
</li>
|
||||||
|
|||||||
1
test/fixtures/dmsf_links.yml
vendored
1
test/fixtures/dmsf_links.yml
vendored
@ -57,6 +57,7 @@ url_link:
|
|||||||
target_type: DmsfUrl
|
target_type: DmsfUrl
|
||||||
name: url_link
|
name: url_link
|
||||||
project_id: 1
|
project_id: 1
|
||||||
|
dmsf_folder_id: 1
|
||||||
external_url: 'https://www.kontron.com'
|
external_url: 'https://www.kontron.com'
|
||||||
deleted: 0
|
deleted: 0
|
||||||
deleted_by_user_id: NULL
|
deleted_by_user_id: NULL
|
||||||
|
|||||||
@ -107,9 +107,15 @@ class DmsfControllerTest < RedmineDmsf::Test::TestCase
|
|||||||
|
|
||||||
def test_delete_ok
|
def test_delete_ok
|
||||||
# Empty and not locked folder
|
# Empty and not locked folder
|
||||||
@request.env['HTTP_REFERER'] = dmsf_folder_path(id: @project1.id, folder_id: @folder1.id)
|
@request.env['HTTP_REFERER'] = dmsf_folder_path(id: @project1, folder_id: @folder1.dmsf_folder)
|
||||||
get :delete, params: { id: @project1, folder_id: @folder1.id, commit: false }
|
get :delete, params: { id: @project1, folder_id: @folder1, parent_id: @folder1.dmsf_folder, commit: false }
|
||||||
assert_response :redirect
|
assert_redirected_to dmsf_folder_path(id: @project1, folder_id: @folder1.dmsf_folder)
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_delete_subfolder
|
||||||
|
@request.env['HTTP_REFERER'] = dmsf_folder_path(id: @project1, folder_id: @folder2.dmsf_folder)
|
||||||
|
get :delete, params: { id: @project1, folder_id: @folder2, parent_id: @folder2.dmsf_folder, commit: false }
|
||||||
|
assert_redirected_to dmsf_folder_path(id: @project1, folder_id: @folder2.dmsf_folder)
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_restore_forbidden
|
def test_restore_forbidden
|
||||||
|
|||||||
@ -58,13 +58,13 @@ class DmsfFilesControllerTest < RedmineDmsf::Test::TestCase
|
|||||||
get :show, params: { id: @file1.id }
|
get :show, params: { id: @file1.id }
|
||||||
assert_response :forbidden
|
assert_response :forbidden
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_view_file_ok
|
def test_view_file_ok
|
||||||
# Permissions OK
|
# Permissions OK
|
||||||
get :view, params: { id: @file1.id }
|
get :view, params: { id: @file1.id }
|
||||||
assert_response :success
|
assert_response :success
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_view_file_forbidden
|
def test_view_file_forbidden
|
||||||
# Missing permissions
|
# Missing permissions
|
||||||
@role_manager.remove_permission! :view_dmsf_files
|
@role_manager.remove_permission! :view_dmsf_files
|
||||||
@ -75,22 +75,26 @@ class DmsfFilesControllerTest < RedmineDmsf::Test::TestCase
|
|||||||
def delete_forbidden
|
def delete_forbidden
|
||||||
# Missing permissions
|
# Missing permissions
|
||||||
@role_manager.remove_permission! :file_manipulation
|
@role_manager.remove_permission! :file_manipulation
|
||||||
delete @file1, params: { commit: false }
|
delete :delete, params: { id: @file1, folder_id: @file1.dmsf_folder, commit: false }
|
||||||
assert_response :forbidden
|
assert_response :forbidden
|
||||||
end
|
end
|
||||||
|
|
||||||
def delete_locked
|
def delete_locked
|
||||||
# Permissions OK but the file is locked
|
# Permissions OK but the file is locked
|
||||||
delete @file2, params: { commit: false }
|
delete :delete, params: { id: @file2, folder_id: @file2.dmsf_folder, commit: false }
|
||||||
assert_response :redirect
|
assert_response :redirect
|
||||||
assert_include l(:error_file_is_locked), flash[:error]
|
assert_include l(:error_file_is_locked), flash[:error]
|
||||||
end
|
end
|
||||||
|
|
||||||
def delete_ok
|
def delete_ok
|
||||||
# Permissions OK and not locked
|
# Permissions OK and not locked
|
||||||
delete @file1, params: { commit: false }
|
delete :delete, params: { id: @file1, folder_id: @file1.dmsf_folder, commit: false }
|
||||||
assert_response :redirect
|
assert_redirected_to dmsf_folder_path(id: @file1.project, folder_id: @file1.dmsf_folder)
|
||||||
assert_equal 0, flash[:error].size
|
end
|
||||||
|
|
||||||
|
def test_delete_in_subfolder
|
||||||
|
delete :delete, params: { id: @file4, folder_id: @file4.dmsf_folder, commit: false }
|
||||||
|
assert_redirected_to dmsf_folder_path(id: @file4.project, folder_id: @file4.dmsf_folder)
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_obsolete_revision_ok
|
def test_obsolete_revision_ok
|
||||||
|
|||||||
@ -29,6 +29,7 @@ class DmsfLinksControllerTest < RedmineDmsf::Test::TestCase
|
|||||||
def setup
|
def setup
|
||||||
super
|
super
|
||||||
@file_link = DmsfLink.find 1
|
@file_link = DmsfLink.find 1
|
||||||
|
@url_link = DmsfLink.find 5
|
||||||
@request.session[:user_id] = @jsmith.id
|
@request.session[:user_id] = @jsmith.id
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -93,7 +94,7 @@ class DmsfLinksControllerTest < RedmineDmsf::Test::TestCase
|
|||||||
type: 'link_from'
|
type: 'link_from'
|
||||||
}}
|
}}
|
||||||
end
|
end
|
||||||
assert_redirected_to dmsf_folder_path(id: @project1.id, folder_id: @folder1.id)
|
assert_redirected_to dmsf_folder_path(id: @project1, folder_id: @folder1)
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_create_file_link_from_f2
|
def test_create_file_link_from_f2
|
||||||
@ -109,14 +110,14 @@ class DmsfLinksControllerTest < RedmineDmsf::Test::TestCase
|
|||||||
type: 'link_from'
|
type: 'link_from'
|
||||||
}}
|
}}
|
||||||
end
|
end
|
||||||
assert_redirected_to dmsf_folder_path(id: @project1.id, folder_id: @folder1.id)
|
assert_redirected_to dmsf_folder_path(id: @project1, folder_id: @folder1)
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_create_file_link_from_f3
|
def test_create_file_link_from_f3
|
||||||
# 3. File link in a root folder from another folder
|
# 3. File link in a root folder from another folder
|
||||||
assert_difference 'DmsfLink.count', +1 do
|
assert_difference 'DmsfLink.count', +1 do
|
||||||
post :create, params: { dmsf_link: {
|
post :create, params: { dmsf_link: {
|
||||||
project_id: @project1.id,
|
project_id: @project1,
|
||||||
target_project_id: @project2.id,
|
target_project_id: @project2.id,
|
||||||
target_file_id: @file6.id,
|
target_file_id: @file6.id,
|
||||||
target_folder_id: @folder3.id,
|
target_folder_id: @folder3.id,
|
||||||
@ -124,85 +125,85 @@ class DmsfLinksControllerTest < RedmineDmsf::Test::TestCase
|
|||||||
type: 'link_from'
|
type: 'link_from'
|
||||||
}}
|
}}
|
||||||
end
|
end
|
||||||
assert_redirected_to dmsf_folder_path(id: @project1.id)
|
assert_redirected_to dmsf_folder_path(id: @project1)
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_create_file_link_from_f4
|
def test_create_file_link_from_f4
|
||||||
# 4. File link in a root folder from another root folder
|
# 4. File link in a root folder from another root folder
|
||||||
assert_difference 'DmsfLink.count', +1 do
|
assert_difference 'DmsfLink.count', +1 do
|
||||||
post :create, params: { dmsf_link: {
|
post :create, params: { dmsf_link: {
|
||||||
project_id: @project1.id,
|
project_id: @project1,
|
||||||
target_project_id: @project2.id,
|
target_project_id: @project2.id,
|
||||||
target_file_id: @file2.id,
|
target_file_id: @file2.id,
|
||||||
name: 'file_link',
|
name: 'file_link',
|
||||||
type: 'link_from'
|
type: 'link_from'
|
||||||
}}
|
}}
|
||||||
end
|
end
|
||||||
assert_redirected_to dmsf_folder_path(id: @project1.id)
|
assert_redirected_to dmsf_folder_path(id: @project1)
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_create_folder_link_from_d1
|
def test_create_folder_link_from_d1
|
||||||
# 1. Folder link in a folder from another folder
|
# 1. Folder link in a folder from another folder
|
||||||
assert_difference 'DmsfLink.count', +1 do
|
assert_difference 'DmsfLink.count', +1 do
|
||||||
post :create, params: { dmsf_link: {
|
post :create, params: { dmsf_link: {
|
||||||
project_id: @project1.id,
|
project_id: @project1,
|
||||||
dmsf_folder_id: @folder1.id,
|
dmsf_folder_id: @folder1,
|
||||||
target_project_id: @project2.id,
|
target_project_id: @project2.id,
|
||||||
target_folder_id: @folder3.id,
|
target_folder_id: @folder3.id,
|
||||||
name: 'folder_link',
|
name: 'folder_link',
|
||||||
type: 'link_from'
|
type: 'link_from'
|
||||||
}}
|
}}
|
||||||
end
|
end
|
||||||
assert_redirected_to dmsf_folder_path(id: @project1.id, folder_id: @folder1.id)
|
assert_redirected_to dmsf_folder_path(id: @project1, folder_id: @folder1)
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_create_folder_link_from_d2
|
def test_create_folder_link_from_d2
|
||||||
# 2. Folder link in a folder from another root folder
|
# 2. Folder link in a folder from another root folder
|
||||||
assert_difference 'DmsfLink.count', +1 do
|
assert_difference 'DmsfLink.count', +1 do
|
||||||
post :create, params: { dmsf_link: {
|
post :create, params: { dmsf_link: {
|
||||||
project_id: @project1.id,
|
project_id: @project1,
|
||||||
dmsf_folder_id: @folder1.id,
|
dmsf_folder_id: @folder1,
|
||||||
target_project_id: @project2.id,
|
target_project_id: @project2.id,
|
||||||
name: 'folder_link',
|
name: 'folder_link',
|
||||||
type: 'link_from'
|
type: 'link_from'
|
||||||
}}
|
}}
|
||||||
end
|
end
|
||||||
assert_redirected_to dmsf_folder_path(id: @project1.id, folder_id: @folder1.id)
|
assert_redirected_to dmsf_folder_path(id: @project1, folder_id: @folder1)
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_create_folder_link_from_d3
|
def test_create_folder_link_from_d3
|
||||||
# 3. Folder link in a root folder from another folder
|
# 3. Folder link in a root folder from another folder
|
||||||
assert_difference 'DmsfLink.count', +1 do
|
assert_difference 'DmsfLink.count', +1 do
|
||||||
post :create, params: { dmsf_link: {
|
post :create, params: { dmsf_link: {
|
||||||
project_id: @project1.id,
|
project_id: @project1,
|
||||||
target_project_id: @project2.id,
|
target_project_id: @project2.id,
|
||||||
target_folder_id: @folder3.id,
|
target_folder_id: @folder3.id,
|
||||||
name: 'folder_link',
|
name: 'folder_link',
|
||||||
type: 'link_from'
|
type: 'link_from'
|
||||||
}}
|
}}
|
||||||
end
|
end
|
||||||
assert_redirected_to dmsf_folder_path(id: @project1.id)
|
assert_redirected_to dmsf_folder_path(id: @project1)
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_create_folder_link_from_d4
|
def test_create_folder_link_from_d4
|
||||||
# 4. Folder link in a root folder from another root folder
|
# 4. Folder link in a root folder from another root folder
|
||||||
assert_difference 'DmsfLink.count', +1 do
|
assert_difference 'DmsfLink.count', +1 do
|
||||||
post :create, params: { dmsf_link: {
|
post :create, params: { dmsf_link: {
|
||||||
project_id: @project1.id,
|
project_id: @project1,
|
||||||
target_project_id: @project2.id,
|
target_project_id: @project2.id,
|
||||||
name: 'folder_link',
|
name: 'folder_link',
|
||||||
type: 'link_from'
|
type: 'link_from'
|
||||||
}}
|
}}
|
||||||
end
|
end
|
||||||
assert_redirected_to dmsf_folder_path(id: @project1.id)
|
assert_redirected_to dmsf_folder_path(id: @project1)
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_create_file_link_to_f1
|
def test_create_file_link_to_f1
|
||||||
# 1. File link to a root folder from another folder
|
# 1. File link to a root folder from another folder
|
||||||
assert_difference 'DmsfLink.count', +1 do
|
assert_difference 'DmsfLink.count', +1 do
|
||||||
post :create, params: { dmsf_link: {
|
post :create, params: { dmsf_link: {
|
||||||
project_id: @project1.id,
|
project_id: @project1,
|
||||||
dmsf_file_id: @file1.id,
|
dmsf_file_id: @file1,
|
||||||
target_project_id: @project2.id,
|
target_project_id: @project2.id,
|
||||||
target_folder_id: @folder3.id,
|
target_folder_id: @folder3.id,
|
||||||
name: 'file_link',
|
name: 'file_link',
|
||||||
@ -216,8 +217,8 @@ class DmsfLinksControllerTest < RedmineDmsf::Test::TestCase
|
|||||||
# 2. File link to a folder from another folder
|
# 2. File link to a folder from another folder
|
||||||
assert_difference 'DmsfLink.count', +1 do
|
assert_difference 'DmsfLink.count', +1 do
|
||||||
post :create, params: { dmsf_link: {
|
post :create, params: { dmsf_link: {
|
||||||
project_id: @project2.id,
|
project_id: @project2,
|
||||||
dmsf_folder_id: @folder3.id,
|
dmsf_folder_id: @folder3,
|
||||||
target_project_id: @project1.id,
|
target_project_id: @project1.id,
|
||||||
target_folder_id: @folder1.id,
|
target_folder_id: @folder1.id,
|
||||||
dmsf_file_id: @file6.id,
|
dmsf_file_id: @file6.id,
|
||||||
@ -232,7 +233,7 @@ class DmsfLinksControllerTest < RedmineDmsf::Test::TestCase
|
|||||||
# 3. File link to a root folder from another root folder
|
# 3. File link to a root folder from another root folder
|
||||||
assert_difference 'DmsfLink.count', +1 do
|
assert_difference 'DmsfLink.count', +1 do
|
||||||
post :create, params: { dmsf_link: {
|
post :create, params: { dmsf_link: {
|
||||||
project_id: @project2.id,
|
project_id: @project2,
|
||||||
target_project_id: @project1.id,
|
target_project_id: @project1.id,
|
||||||
dmsf_file_id: @file6.id,
|
dmsf_file_id: @file6.id,
|
||||||
name: 'file_link',
|
name: 'file_link',
|
||||||
@ -246,8 +247,8 @@ class DmsfLinksControllerTest < RedmineDmsf::Test::TestCase
|
|||||||
# 4. File link to a folder from another root folder
|
# 4. File link to a folder from another root folder
|
||||||
assert_difference 'DmsfLink.count', +1 do
|
assert_difference 'DmsfLink.count', +1 do
|
||||||
post :create, params: { dmsf_link: {
|
post :create, params: { dmsf_link: {
|
||||||
project_id: @project2.id,
|
project_id: @project2,
|
||||||
dmsf_folder_id: @folder3.id,
|
dmsf_folder_id: @folder3,
|
||||||
target_project_id: @project1.id,
|
target_project_id: @project1.id,
|
||||||
dmsf_file_id: @file6.id,
|
dmsf_file_id: @file6.id,
|
||||||
name: 'file_link',
|
name: 'file_link',
|
||||||
@ -260,14 +261,14 @@ class DmsfLinksControllerTest < RedmineDmsf::Test::TestCase
|
|||||||
def test_create_external_link_from
|
def test_create_external_link_from
|
||||||
assert_difference 'DmsfLink.count', +1 do
|
assert_difference 'DmsfLink.count', +1 do
|
||||||
post :create, params: { dmsf_link: {
|
post :create, params: { dmsf_link: {
|
||||||
project_id: @project1.id,
|
project_id: @project1,
|
||||||
target_project_id: @project1.id,
|
target_project_id: @project1.id,
|
||||||
name: 'file_link',
|
name: 'file_link',
|
||||||
external_link: 'true',
|
external_link: 'true',
|
||||||
type: 'link_from'
|
type: 'link_from'
|
||||||
}}
|
}}
|
||||||
end
|
end
|
||||||
assert_redirected_to dmsf_folder_path(id: @project1.id)
|
assert_redirected_to dmsf_folder_path(id: @project1)
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_create_folder_link_to_f1
|
def test_create_folder_link_to_f1
|
||||||
@ -301,23 +302,30 @@ class DmsfLinksControllerTest < RedmineDmsf::Test::TestCase
|
|||||||
|
|
||||||
def test_destroy
|
def test_destroy
|
||||||
assert_difference 'DmsfLink.visible.count', -1 do
|
assert_difference 'DmsfLink.visible.count', -1 do
|
||||||
delete :destroy, params: { project_id: @project1.id, id: @file_link.id }
|
delete :destroy, params: { project_id: @project1, id: @file_link }
|
||||||
end
|
end
|
||||||
assert_redirected_to dmsf_folder_path(id: @file_link&.project, folder_id: @file_link&.dmsf_folder)
|
assert_redirected_to dmsf_folder_path(id: @file_link.project, folder_id: @file_link.dmsf_folder)
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_destroy_in_subfolder
|
||||||
|
assert_difference 'DmsfLink.visible.count', -1 do
|
||||||
|
delete :destroy, params: { project_id: @url_link.project, id: @url_link, folder_id: @url_link.dmsf_folder }
|
||||||
|
end
|
||||||
|
assert_redirected_to dmsf_folder_path(id: @url_link.project, folder_id: @url_link.dmsf_folder)
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_restore_forbidden
|
def test_restore_forbidden
|
||||||
# Missing permissions
|
# Missing permissions
|
||||||
@request.env['HTTP_REFERER'] = trash_dmsf_path(id: @project1.id)
|
@request.env['HTTP_REFERER'] = trash_dmsf_path(id: @project1)
|
||||||
@role_manager.remove_permission! :file_manipulation
|
@role_manager.remove_permission! :file_manipulation
|
||||||
get :restore, params: { project_id: @project1.id, id: @file_link.id }
|
get :restore, params: { project_id: @project1, id: @file_link }
|
||||||
assert_response :forbidden
|
assert_response :forbidden
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_restore_ok
|
def test_restore_ok
|
||||||
# Permissions OK
|
# Permissions OK
|
||||||
@request.env['HTTP_REFERER'] = trash_dmsf_path(id: @project1.id)
|
@request.env['HTTP_REFERER'] = trash_dmsf_path(id: @project1)
|
||||||
get :restore, params: { project_id: @project1.id, id: @file_link.id }
|
get :restore, params: { project_id: @project1, id: @file_link }
|
||||||
assert_response :redirect
|
assert_response :redirect
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user