From fc141b7e3b69d3933a346efea63960afea86acf7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karel=20Pi=C4=8Dman?= Date: Tue, 24 Oct 2023 09:58:37 +0200 Subject: [PATCH] \Author should be kept when moving a folder #1484 --- app/models/dmsf_file.rb | 1 + app/models/dmsf_link.rb | 1 + test/fixtures/dmsf_links.yml | 1 + test/unit/dmsf_file_test.rb | 15 +++++++++++++++ test/unit/dmsf_folder_test.rb | 15 +++++++++++++++ test/unit/dmsf_link_test.rb | 15 +++++++++++++++ 6 files changed, 48 insertions(+) diff --git a/app/models/dmsf_file.rb b/app/models/dmsf_file.rb index 67728454..8a57e84e 100644 --- a/app/models/dmsf_file.rb +++ b/app/models/dmsf_file.rb @@ -258,6 +258,7 @@ class DmsfFile < ApplicationRecord self.project = project self.dmsf_folder = folder new_revision = last_revision.clone + new_revision.user_id = last_revision.user_id new_revision.workflow = nil new_revision.dmsf_workflow_id = nil new_revision.dmsf_workflow_assigned_by_user_id = nil diff --git a/app/models/dmsf_link.rb b/app/models/dmsf_link.rb index 3bf8295f..4797cfa3 100644 --- a/app/models/dmsf_link.rb +++ b/app/models/dmsf_link.rb @@ -109,6 +109,7 @@ class DmsfLink < ApplicationRecord link.external_url = external_url link.project_id = project.id link.dmsf_folder_id = folder ? folder.id : nil + link.user = User.current link.save! link end diff --git a/test/fixtures/dmsf_links.yml b/test/fixtures/dmsf_links.yml index ae0b1cda..be536b47 100644 --- a/test/fixtures/dmsf_links.yml +++ b/test/fixtures/dmsf_links.yml @@ -24,6 +24,7 @@ file_link: deleted_by_user_id: NULL created_at: <%= DateTime.current %> updated_at: <%= DateTime.current %> + user_id: 1 folder_link2: id: 3 diff --git a/test/unit/dmsf_file_test.rb b/test/unit/dmsf_file_test.rb index bb99b7d8..03515b3c 100644 --- a/test/unit/dmsf_file_test.rb +++ b/test/unit/dmsf_file_test.rb @@ -290,4 +290,19 @@ class DmsfFileTest < RedmineDmsf::Test::UnitTest assert_not_empty(@file13.pdf_preview) if RedmineDmsf::Preview.office_available? assert_empty @file1.pdf_preview end + + def test_move_to_author + assert_equal @admin.id, @file1.last_revision.user_id + User.current = @jsmith + assert @file1.move_to(@folder1.project, @folder1) + assert_equal @admin.id, @file1.last_revision.user_id, "Author mustn't be updated when moving" + end + + def test_copy_to_author + assert_equal @admin.id, @file1.last_revision.user_id + User.current = @jsmith + f = @file1.copy_to(@folder1.project, @folder1) + assert f + assert_equal @jsmith.id, f.last_revision.user_id, 'Author must be updated when copying' + end end diff --git a/test/unit/dmsf_folder_test.rb b/test/unit/dmsf_folder_test.rb index b0f04da9..f32c96ba 100644 --- a/test/unit/dmsf_folder_test.rb +++ b/test/unit/dmsf_folder_test.rb @@ -252,6 +252,21 @@ class DmsfFolderTest < RedmineDmsf::Test::UnitTest assert DmsfFolder.find_by(project_id: @project2.id, title: @folder1.title) end + def test_move_to_author + assert_equal @admin.id, @folder1.user_id + User.current = @jsmith + assert @folder1.move_to(@folder6.project, @folder6) + assert_equal @admin.id, @folder1.user_id, "Author mustn't be updated when moving" + end + + def test_copy_to_author + assert_equal @admin.id, @folder1.user_id + User.current = @jsmith + f = @folder1.copy_to(@folder6.project, @folder6) + assert f + assert_equal @jsmith.id, f.user_id, 'Author must be updated when copying' + end + def test_valid_parent @folder2.dmsf_folder = @folder1 assert @folder2.save diff --git a/test/unit/dmsf_link_test.rb b/test/unit/dmsf_link_test.rb index 768867b9..73df7cd7 100644 --- a/test/unit/dmsf_link_test.rb +++ b/test/unit/dmsf_link_test.rb @@ -184,6 +184,21 @@ class DmsfLinksTest < RedmineDmsf::Test::UnitTest assert_equal folder_link_copy.dmsf_folder_id, @folder2.id end + def test_move_to_author + assert_equal @admin.id, @file_link.user_id + User.current = @jsmith + assert @file_link.move_to(@project1, @folder1) + assert_equal @admin.id, @file_link.user_id, "Author mustn't be updated when moving" + end + + def test_copy_to_author + assert_equal @admin.id, @file_link.user_id + User.current = @jsmith + l = @file_link.copy_to(@project1, @folder1) + assert l + assert_equal @jsmith.id, l.user_id, 'Author must be updated when copying' + end + def test_delete_file_link assert @file_link.delete(commit: false), @file_link.errors.full_messages.to_sentence assert @file_link.deleted?, "File link hasn't been deleted"