diff --git a/test/fixtures/dmsf_folders.yml b/test/fixtures/dmsf_folders.yml index 3a4c4282..367f4e76 100644 --- a/test/fixtures/dmsf_folders.yml +++ b/test/fixtures/dmsf_folders.yml @@ -26,10 +26,10 @@ project_id: 2 dmsf_folder_id: 3 user_id: 1 + - dmsf_folders_005: id: 5 title: folder3 project_id: 1 dmsf_folder_id: 2 - user_id: 1 - + user_id: 1 \ No newline at end of file diff --git a/test/fixtures/dmsf_links.yml b/test/fixtures/dmsf_links.yml index faf3cf8c..1f0bba3d 100644 --- a/test/fixtures/dmsf_links.yml +++ b/test/fixtures/dmsf_links.yml @@ -11,6 +11,19 @@ folder_link: deleted_by_user_id: NULL created_at: <%= DateTime.now() %> updated_at: <%= DateTime.now() %> + +file_link: + id: 2 + target_project_id: 1 + target_id: 4 + target_type: DmsfFile + name: test_link + project_id: 1 + dmsf_folder_id: 1 + deleted: 0 + deleted_by_user_id: NULL + created_at: <%= DateTime.now() %> + updated_at: <%= DateTime.now() %> folder_link2: id: 3 @@ -24,15 +37,15 @@ folder_link2: deleted_by_user_id: NULL created_at: <%= DateTime.now() %> updated_at: <%= DateTime.now() %> - -file_link: - id: 2 + +file_link2: + id: 4 target_project_id: 1 target_id: 4 target_type: DmsfFile name: test_link project_id: 1 - dmsf_folder_id: 1 + dmsf_folder_id: NULL deleted: 0 deleted_by_user_id: NULL created_at: <%= DateTime.now() %> diff --git a/test/functional/dmsf_controller_test.rb b/test/functional/dmsf_controller_test.rb index 2626d52a..8fc0f797 100644 --- a/test/functional/dmsf_controller_test.rb +++ b/test/functional/dmsf_controller_test.rb @@ -22,7 +22,7 @@ class DmsfControllerTest < RedmineDmsf::Test::TestCase include Redmine::I18n fixtures :users, :dmsf_folders, :custom_fields, :custom_values, :projects, - :roles, :members, :member_roles + :roles, :members, :member_roles, :dmsf_links, :dmsf_files, :dmsf_file_revisions def setup @request.session[:user_id] = 2 @@ -32,6 +32,9 @@ class DmsfControllerTest < RedmineDmsf::Test::TestCase @folder1 = DmsfFolder.find_by_id 1 @folder2 = DmsfFolder.find_by_id 2 @folder4 = DmsfFolder.find_by_id 4 + @file1 = DmsfFile.find_by_id 1 + @file_link2 = DmsfLink.find_by_id 4 + @folder_link1 = DmsfLink.find_by_id 1 @role = Role.find_by_id 1 @custom_field = CustomField.find_by_id 21 @custom_value = CustomValue.find_by_id 21 @@ -44,6 +47,9 @@ class DmsfControllerTest < RedmineDmsf::Test::TestCase assert_kind_of DmsfFolder, @folder1 assert_kind_of DmsfFolder, @folder2 assert_kind_of DmsfFolder, @folder4 + assert_kind_of DmsfFile, @file1 + assert_kind_of DmsfLink, @file_link2 + assert_kind_of DmsfLink, @folder_link1 assert_kind_of Role, @role assert_kind_of CustomField, @custom_field assert_kind_of CustomValue, @custom_value @@ -116,4 +122,38 @@ class DmsfControllerTest < RedmineDmsf::Test::TestCase assert_response :redirect end + def test_delete_restore_entries + # Missing permissions + get :entries_operation, :id => @project, :delete_entries => 'Delete', + :subfolders => [@folder1.id.to_s], :files => [@file1.id.to_s], + :dir_links => [@folder_link1.id.to_s], :file_links => [@file_link2.id.to_s] + assert_response :forbidden + + # Permissions OK but the folder is not empty + @request.env['HTTP_REFERER'] = dmsf_folder_path(:id => @project.id) + @role.add_permission! :folder_manipulation + @role.add_permission! :view_dmsf_files + get :entries_operation, :id => @project, :delete_entries => 'Delete', + :subfolders => [@folder1.id.to_s], :files => [@file1.id.to_s], + :dir_links => [@folder_link1.id.to_s], :file_links => [@file_link2.id.to_s] + assert_response :redirect + assert_equal flash[:error].to_s, l(:error_folder_is_not_empty) + + # Permissions OK + flash[:error] = nil + get :entries_operation, :id => @project, :delete_entries => 'Delete', + :subfolders => [], :files => [@file1.id.to_s], + :dir_links => [], :file_links => [@file_link2.id.to_s] + assert_response :redirect + assert_nil flash[:error] + + # Restore + @request.env['HTTP_REFERER'] = trash_dmsf_path(:id => @project.id) + get :entries_operation, :id => @project, :restore_entries => 'Restore', + :subfolders => [], :files => [@file1.id.to_s], + :dir_links => [], :file_links => [@file_link2.id.to_s] + assert_response :redirect + assert_nil flash[:error] + end + end \ No newline at end of file diff --git a/test/unit/dmsf_file_revision_test.rb b/test/unit/dmsf_file_revision_test.rb index 57eb1db3..5405e60c 100644 --- a/test/unit/dmsf_file_revision_test.rb +++ b/test/unit/dmsf_file_revision_test.rb @@ -31,15 +31,11 @@ class DmsfFileRevisionTest < RedmineDmsf::Test::UnitTest assert_kind_of DmsfFileRevision, @revision5 end - def test_delete_restore - assert !@revision5.file.locked_for_user?, "The file is locked" - assert @revision5.file.revisions.length > 1, "The last revision can't be deleted" - @revision5.delete false - assert_nil DmsfFileRevision.visible.where(:id => @revision5.id).first, @revision5.errors[:base][0] - assert DmsfFileRevision.deleted.where(:id => @revision5.id).first - @revision5.restore - assert_nil DmsfFileRevision.deleted.where(:id => @revision5.id).first - assert DmsfFileRevision.visible.where(:id => @revision5.id).first + def test_delete_restore + @revision5.delete false + assert @revision5.deleted + @revision5.restore + assert !@revision5.deleted end def test_destroy diff --git a/test/unit/dmsf_file_test.rb b/test/unit/dmsf_file_test.rb index eefe39ba..dd7eee1e 100644 --- a/test/unit/dmsf_file_test.rb +++ b/test/unit/dmsf_file_test.rb @@ -85,26 +85,24 @@ class DmsfFileTest < RedmineDmsf::Test::UnitTest def test_delete_restore assert_equal 1, @file4.revisions.visible.count - assert_equal 1, @file4.referenced_links.visible.count + assert_equal 2, @file4.referenced_links.visible.count # Delete - @file4.delete false - assert_nil DmsfFile.visible.where(:id => @file4.id).first, @file4.errors[:base][0] - assert DmsfFile.deleted.where(:id => @file4.id).first + @file4.delete false + assert @file4.deleted assert_equal 0, @file4.revisions.visible.count assert_equal 0, @file4.referenced_links.visible.count # Restore - @file4.restore - assert_nil DmsfFile.deleted.where(:id => @file4.id).first - assert DmsfFile.visible.where(:id => @file4.id).first + @file4.restore + assert !@file4.deleted assert_equal 1, @file4.revisions.visible.count - assert_equal 1, @file4.referenced_links.visible.count + assert_equal 2, @file4.referenced_links.visible.count end def test_destroy assert_equal 1, @file4.revisions.visible.count - assert_equal 1, @file4.referenced_links.visible.count + assert_equal 2, @file4.referenced_links.visible.count @file4.delete true assert_nil DmsfFile.find_by_id(@file4.id) assert_equal 0, @file4.revisions.count diff --git a/test/unit/dmsf_folder_test.rb b/test/unit/dmsf_folder_test.rb index 6a200f37..a5328969 100644 --- a/test/unit/dmsf_folder_test.rb +++ b/test/unit/dmsf_folder_test.rb @@ -33,13 +33,11 @@ class DmsfFolderTest < RedmineDmsf::Test::UnitTest def test_delete_restore assert_equal 1, @folder4.referenced_links.visible.count - @folder4.delete false - assert_nil DmsfFolder.visible.where(:id => @folder4.id).first, @folder4.errors[:base][0] - assert DmsfFolder.deleted.where(:id => @folder4.id).first + @folder4.delete false + assert @folder4.deleted assert_equal 0, @folder4.referenced_links.visible.count - @folder4.restore - assert_nil DmsfFolder.deleted.where(:id => @folder4.id).first - assert DmsfFolder.visible.where(:id => @folder4.id).first + @folder4.restore + assert !@folder4.deleted assert_equal 1, @folder4.referenced_links.visible.count end diff --git a/test/unit/dmsf_links_test.rb b/test/unit/dmsf_links_test.rb index b62b3d27..ebdf05fe 100644 --- a/test/unit/dmsf_links_test.rb +++ b/test/unit/dmsf_links_test.rb @@ -166,20 +166,16 @@ class DmsfLinksTest < RedmineDmsf::Test::UnitTest def test_delete_restore # File link - @file_link.delete false - assert_nil DmsfLink.visible.where(:id => @file_link.id).first, @file_link.errors[:base][0] - assert DmsfLink.deleted.where(:id => @file_link.id).first - @file_link.restore - assert_nil DmsfLink.deleted.where(:id => @file_link.id).first - assert DmsfLink.visible.where(:id => @file_link.id).first + @file_link.delete false + assert @file_link.deleted + @file_link.restore + assert !@file_link.deleted # Folder link - @folder_link.delete false - assert_nil DmsfLink.visible.where(:id => @folder_link.id).first - assert DmsfLink.deleted.where(:id => @folder_link.id).first - @folder_link.restore - assert_nil DmsfLink.deleted.where(:id => @folder_link.id).first - assert DmsfLink.visible.where(:id => @folder_link.id).first + @folder_link.delete false + assert @folder_link.deleted + @folder_link.restore + assert !@folder_link.deleted end def test_destroy