WebDav move: moving a zero sized file does not create a new revision.

This commit is contained in:
COLA@Redmine.local 2017-02-09 22:58:07 +01:00
parent cea097de4a
commit 22b71a0e14
4 changed files with 67 additions and 2 deletions

View File

@ -336,7 +336,12 @@ module RedmineDmsf
file.copy_to_filename(resource.project, f, resource.basename)
Created
else
return InternalServerError unless file.move_to(resource.project, f)
if (project == resource.project) && (file.last_revision.size == 0)
# Moving a zero sized file within the same project, just update the dmsf_folder
file.dmsf_folder = f
else
return InternalServerError unless file.move_to(resource.project, f)
end
# Update Revision and names of file [We can link to old physical resource, as it's not changed]
if file.last_revision

View File

@ -139,4 +139,24 @@ dmsf_file_revisions_007:
deleted_by_user_id: NULL
user_id: 1
dmsf_workflow_assigned_by: NULL
dmsf_workflow_started_by: NULL
dmsf_workflow_started_by: NULL
dmsf_file_revisions_008:
id: 8
dmsf_file_id: 10
source_dmsf_file_revision_id: NULL
name: "zero.txt"
disk_filename: "zero.txt"
size: 0
mime_type: text/plain
title: "Zero Size File"
description: NULL
workflow: NULL
minor_version: 0
major_version: 1
comment: NULL
deleted: 0
deleted_by_user_id: NULL
user_id: 1
dmsf_workflow_assigned_by: NULL
dmsf_workflow_started_by: NULL

View File

@ -90,3 +90,13 @@ dmsf_files_009:
notification: 0
deleted: 0
deleted_by_user_id: NULL
dmsf_files_010:
id: 10
container_id: 1
container_type: "Project"
dmsf_folder_id: NULL
name: "zero.txt"
notification: 0
deleted: 0
deleted_by_user_id: NULL

View File

@ -131,6 +131,19 @@ class DmsfWebdavMoveTest < RedmineDmsf::Test::IntegrationTest
end
end
def test_move_zero_sized_to_new_filename
file = DmsfFile.find_by_id 10
new_name = "#{file.name}.moved"
assert_no_difference 'file.dmsf_file_revisions.count' do
xml_http_request :move, "/dmsf/webdav/#{@project1.identifier}/#{file.name}", nil,
@jsmith.merge!({:destination => "http://www.example.com/dmsf/webdav/#{@project1.identifier}/#{new_name}"})
assert_response 201 # Created
f = DmsfFile.find_file_by_name @project1, nil, "#{new_name}"
assert f, "Moved file '#{new_name}' not found in project."
end
end
def test_move_to_new_folder
file = DmsfFile.find_by_id 1
folder = DmsfFolder.find_by_id 1
@ -141,6 +154,23 @@ class DmsfWebdavMoveTest < RedmineDmsf::Test::IntegrationTest
xml_http_request :move, "/dmsf/webdav/#{@project1.identifier}/#{file.name}", nil,
@jsmith.merge!({:destination => "http://www.example.com/dmsf/webdav/#{@project1.identifier}/#{folder.title}/#{file.name}"})
assert_response 201 # Created
file2 = DmsfFile.find_by_id 1
assert_equal folder.id, file2.dmsf_folder_id
end
end
def test_move_zero_sized_to_new_folder
file = DmsfFile.find_by_id 10
folder = DmsfFolder.find_by_id 1
assert_kind_of DmsfFile, file
assert_kind_of DmsfFolder, folder
assert_no_difference 'file.dmsf_file_revisions.count' do
xml_http_request :move, "/dmsf/webdav/#{@project1.identifier}/#{file.name}", nil,
@jsmith.merge!({:destination => "http://www.example.com/dmsf/webdav/#{@project1.identifier}/#{folder.title}/#{file.name}"})
assert_response 201 # Created
file2 = DmsfFile.find_by_id 10
assert_equal folder.id, file2.dmsf_folder_id
end
end