SQLite compatibility
This commit is contained in:
parent
71281cdebd
commit
e7126d85d2
@ -4,7 +4,7 @@
|
||||
#
|
||||
# Copyright (C) 2011 Vít Jonáš <vit.jonas@gmail.com>
|
||||
# Copyright (C) 2012 Daniel Munn <dan.munn@munnster.co.uk>
|
||||
# Copyright (C) 2011-15 Karel Pičman <karel.picman@kontron.com>
|
||||
# Copyright (C) 2011-16 Karel Pičman <karel.picman@kontron.com>
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License
|
||||
@ -121,7 +121,7 @@ class DmsfController < ApplicationController
|
||||
@locked_for_user = false
|
||||
else
|
||||
|
||||
if @folder.deleted
|
||||
if @folder.deleted?
|
||||
render_404
|
||||
return
|
||||
end
|
||||
|
||||
@ -3,7 +3,7 @@
|
||||
# Redmine plugin for Document Management System "Features"
|
||||
#
|
||||
# Copyright (C) 2011 Vít Jonáš <vit.jonas@gmail.com>
|
||||
# Copyright (C) 2011-15 Karel Pičman <karel.picman@kontron.com>
|
||||
# Copyright (C) 2011-16 Karel Pičman <karel.picman@kontron.com>
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License
|
||||
@ -42,7 +42,7 @@ class DmsfFilesController < ApplicationController
|
||||
raise DmsfAccessError if @revision.file != @file
|
||||
end
|
||||
check_project(@revision.file)
|
||||
raise ActionController::MissingFile if @file.deleted
|
||||
raise ActionController::MissingFile if @file.deleted?
|
||||
log_activity('downloaded')
|
||||
access = DmsfFileRevisionAccess.new
|
||||
access.user = User.current
|
||||
@ -74,7 +74,7 @@ class DmsfFilesController < ApplicationController
|
||||
raise DmsfAccessError if @revision.file != @file
|
||||
end
|
||||
check_project(@revision.file)
|
||||
raise ActionController::MissingFile if @revision.file.deleted
|
||||
raise ActionController::MissingFile if @revision.file.deleted?
|
||||
log_activity('downloaded')
|
||||
access = DmsfFileRevisionAccess.new
|
||||
access.user = User.current
|
||||
@ -231,7 +231,7 @@ class DmsfFilesController < ApplicationController
|
||||
end
|
||||
|
||||
def delete_revision
|
||||
if @revision # && !@revision.deleted
|
||||
if @revision
|
||||
if @revision.delete(true)
|
||||
flash[:notice] = l(:notice_revision_deleted)
|
||||
log_activity('deleted')
|
||||
|
||||
@ -43,14 +43,13 @@ class DmsfFile < ActiveRecord::Base
|
||||
:class_name => 'DmsfLock', :foreign_key => 'entity_id', :dependent => :destroy
|
||||
has_many :referenced_links, -> { where target_type: DmsfFile.model_name.to_s},
|
||||
:class_name => 'DmsfLink', :foreign_key => 'target_id', :dependent => :destroy
|
||||
accepts_nested_attributes_for :revisions, :locks, :referenced_links, :project
|
||||
accepts_nested_attributes_for :revisions, :locks, :referenced_links, :project
|
||||
|
||||
scope :visible, lambda { |*args|
|
||||
where(deleted: false)
|
||||
}
|
||||
scope :deleted, lambda { |*args|
|
||||
where(deleted: true)
|
||||
}
|
||||
STATUS_DELETED = 1
|
||||
STATUS_ACTIVE = 0
|
||||
|
||||
scope :visible, -> { where(:deleted => STATUS_ACTIVE) }
|
||||
scope :deleted, -> { where(:deleted => STATUS_DELETED) }
|
||||
|
||||
validates :name, :presence => true
|
||||
validates_format_of :name, :with => DmsfFolder.invalid_characters,
|
||||
@ -82,7 +81,7 @@ class DmsfFile < ActiveRecord::Base
|
||||
|
||||
acts_as_searchable :columns => ["#{table_name}.name", "#{DmsfFileRevision.table_name}.title", "#{DmsfFileRevision.table_name}.description", "#{DmsfFileRevision.table_name}.comment"],
|
||||
:project_key => 'project_id',
|
||||
:date_column => "#{table_name}.updated_at"
|
||||
:date_column => "#{table_name}.updated_at"
|
||||
|
||||
before_create :default_values
|
||||
def default_values
|
||||
@ -121,7 +120,7 @@ class DmsfFile < ActiveRecord::Base
|
||||
|
||||
def last_revision
|
||||
unless @last_revision
|
||||
@last_revision = deleted ? self.revisions.first : self.revisions.visible.first
|
||||
@last_revision = self.deleted? ? self.revisions.first : self.revisions.visible.first
|
||||
end
|
||||
@last_revision
|
||||
end
|
||||
@ -129,6 +128,10 @@ class DmsfFile < ActiveRecord::Base
|
||||
def set_last_revision(new_revision)
|
||||
@last_revision = new_revision
|
||||
end
|
||||
|
||||
def deleted?
|
||||
self.deleted == STATUS_DELETED
|
||||
end
|
||||
|
||||
def delete(commit)
|
||||
if locked_for_user?
|
||||
@ -143,7 +146,7 @@ class DmsfFile < ActiveRecord::Base
|
||||
if commit
|
||||
self.destroy
|
||||
else
|
||||
self.deleted = true
|
||||
self.deleted = STATUS_DELETED
|
||||
self.deleted_by_user = User.current
|
||||
save
|
||||
end
|
||||
@ -155,13 +158,13 @@ class DmsfFile < ActiveRecord::Base
|
||||
end
|
||||
|
||||
def restore
|
||||
if self.dmsf_folder_id && (self.folder.nil? || self.folder.deleted)
|
||||
if self.dmsf_folder_id && (self.folder.nil? || self.folder.deleted?)
|
||||
errors[:base] << l(:error_parent_folder)
|
||||
return false
|
||||
end
|
||||
self.revisions.each { |r| r.restore }
|
||||
self.referenced_links.each { |l| l.restore }
|
||||
self.deleted = false
|
||||
self.deleted = STATUS_ACTIVE
|
||||
self.deleted_by_user = nil
|
||||
save
|
||||
end
|
||||
|
||||
@ -30,9 +30,11 @@ class DmsfFileRevision < ActiveRecord::Base
|
||||
has_many :dmsf_workflow_step_assignment, :dependent => :destroy
|
||||
accepts_nested_attributes_for :access, :dmsf_workflow_step_assignment, :file, :user
|
||||
|
||||
# Returns a list of revisions that are not deleted here, or deleted at parent level either
|
||||
scope :visible, -> { where(deleted: false) }
|
||||
scope :deleted, -> { where(deleted: true) }
|
||||
STATUS_DELETED = 1
|
||||
STATUS_ACTIVE = 0
|
||||
|
||||
scope :visible, -> { where(:deleted => STATUS_ACTIVE) }
|
||||
scope :deleted, -> { where(:deleted => STATUS_DELETED) }
|
||||
|
||||
acts_as_customizable
|
||||
acts_as_event :title => Proc.new {|o| "#{l(:label_dmsf_updated)}: #{o.file.dmsf_path_str}"},
|
||||
@ -49,11 +51,11 @@ class DmsfFileRevision < ActiveRecord::Base
|
||||
joins(
|
||||
"INNER JOIN #{DmsfFile.table_name} ON #{DmsfFileRevision.table_name}.dmsf_file_id = #{DmsfFile.table_name}.id " +
|
||||
"INNER JOIN #{Project.table_name} ON #{DmsfFile.table_name}.project_id = #{Project.table_name}.id").
|
||||
where("#{DmsfFile.table_name}.deleted = :false", {:false => false})
|
||||
where("#{DmsfFile.table_name}.deleted = ?", STATUS_ACTIVE)
|
||||
|
||||
validates :title, :presence => true
|
||||
validates_format_of :name, :with => DmsfFolder.invalid_characters,
|
||||
:message => l(:error_contains_invalid_character)
|
||||
:message => l(:error_contains_invalid_character)
|
||||
|
||||
def project
|
||||
self.file.project if self.file
|
||||
@ -88,14 +90,14 @@ class DmsfFileRevision < ActiveRecord::Base
|
||||
if commit
|
||||
self.destroy
|
||||
else
|
||||
self.deleted = true
|
||||
self.deleted = DmsfFile::STATUS_DELETED
|
||||
self.deleted_by_user = User.current
|
||||
save
|
||||
end
|
||||
end
|
||||
|
||||
def restore
|
||||
self.deleted = false
|
||||
self.deleted = DmsfFile::STATUS_ACTIVE
|
||||
self.deleted_by_user = nil
|
||||
save
|
||||
end
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
# Redmine plugin for Document Management System "Features"
|
||||
#
|
||||
# Copyright (C) 2011 Vít Jonáš <vit.jonas@gmail.com>
|
||||
# Copyright (C) 2011 Vít Jonáš <vit.jonas@gmail.com>
|
||||
# Copyright (C) 2011-16 Karel Pičman <karel.picman@kontron.com>
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License
|
||||
@ -42,6 +43,6 @@ class DmsfFileRevisionAccess < ActiveRecord::Base
|
||||
"INNER JOIN #{DmsfFileRevision.table_name} ON #{DmsfFileRevisionAccess.table_name}.dmsf_file_revision_id = #{DmsfFileRevision.table_name}.id " +
|
||||
"INNER JOIN #{DmsfFile.table_name} ON #{DmsfFileRevision.table_name}.dmsf_file_id = #{DmsfFile.table_name}.id " +
|
||||
"INNER JOIN #{Project.table_name} ON #{DmsfFile.table_name}.project_id = #{Project.table_name}.id").
|
||||
where("#{DmsfFile.table_name}.deleted = :false", {:false => false})
|
||||
where("#{DmsfFile.table_name}.deleted = ?", DmsfFile::STATUS_ACTIVE)
|
||||
|
||||
end
|
||||
|
||||
@ -3,7 +3,7 @@
|
||||
# Redmine plugin for Document Management System "Features"
|
||||
#
|
||||
# Copyright (C) 2011 Vít Jonáš <vit.jonas@gmail.com>
|
||||
# Copyright (C) 2011-15 Karel Pičman <karel.picman@konton.com>
|
||||
# Copyright (C) 2011-16 Karel Pičman <karel.picman@konton.com>
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License
|
||||
@ -48,12 +48,11 @@ class DmsfFolder < ActiveRecord::Base
|
||||
:class_name => 'DmsfLock', :foreign_key => 'entity_id', :dependent => :destroy
|
||||
accepts_nested_attributes_for :user, :project, :folder, :subfolders, :files, :folder_links, :file_links, :url_links, :referenced_links, :locks
|
||||
|
||||
scope :visible, lambda { |*args|
|
||||
where(deleted: false)
|
||||
}
|
||||
scope :deleted, lambda { |*args|
|
||||
where(deleted: true)
|
||||
}
|
||||
STATUS_DELETED = 1
|
||||
STATUS_ACTIVE = 0
|
||||
|
||||
scope :visible, -> { where(:deleted => STATUS_ACTIVE) }
|
||||
scope :deleted, -> { where(:deleted => STATUS_DELETED) }
|
||||
|
||||
acts_as_customizable
|
||||
|
||||
@ -71,10 +70,10 @@ class DmsfFolder < ActiveRecord::Base
|
||||
|
||||
validates :title, :presence => true
|
||||
validates_uniqueness_of :title, :scope => [:dmsf_folder_id, :project_id, :deleted],
|
||||
conditions: -> { where.not(deleted: true) }
|
||||
conditions: -> { where(:deleted => STATUS_ACTIVE) }
|
||||
validates_format_of :title, :with => @@invalid_characters,
|
||||
:message => l(:error_contains_invalid_character)
|
||||
validate :check_cycle
|
||||
validate :check_cycle
|
||||
|
||||
before_create :default_values
|
||||
def default_values
|
||||
@ -119,19 +118,23 @@ class DmsfFolder < ActiveRecord::Base
|
||||
if commit
|
||||
self.destroy
|
||||
else
|
||||
self.deleted = true
|
||||
self.deleted = STATUS_DELETED
|
||||
self.deleted_by_user = User.current
|
||||
self.save
|
||||
end
|
||||
end
|
||||
|
||||
def deleted?
|
||||
self.deleted == STATUS_DELETED
|
||||
end
|
||||
|
||||
def restore
|
||||
if self.dmsf_folder_id && (self.folder.nil? || self.folder.deleted)
|
||||
if self.dmsf_folder_id && (self.folder.nil? || self.folder.deleted?)
|
||||
errors[:base] << l(:error_parent_folder)
|
||||
return false
|
||||
end
|
||||
self.referenced_links.each { |l| l.restore }
|
||||
self.deleted = false
|
||||
self.deleted = STATUS_ACTIVE
|
||||
self.deleted_by_user = nil
|
||||
self.save
|
||||
end
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
#
|
||||
# Redmine plugin for Document Management System "Features"
|
||||
#
|
||||
# Copyright (C) 2011-15 Karel Pičman <karel.picman@kontron.com>
|
||||
# Copyright (C) 2011-16 Karel Pičman <karel.picman@kontron.com>
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License
|
||||
@ -42,8 +42,11 @@ class DmsfLink < ActiveRecord::Base
|
||||
end
|
||||
end
|
||||
|
||||
scope :visible, -> { where(deleted: false) }
|
||||
scope :deleted, -> { where(deleted: true) }
|
||||
STATUS_DELETED = 1
|
||||
STATUS_ACTIVE = 0
|
||||
|
||||
scope :visible, -> { where(:deleted => STATUS_ACTIVE) }
|
||||
scope :deleted, -> { where(:deleted => STATUS_DELETED) }
|
||||
|
||||
def target_folder_id
|
||||
if self.target_type == DmsfFolder.model_name.to_s
|
||||
@ -119,20 +122,20 @@ class DmsfLink < ActiveRecord::Base
|
||||
if commit
|
||||
self.destroy
|
||||
else
|
||||
self.deleted = true
|
||||
self.deleted = STATUS_DELETED
|
||||
self.deleted_by_user = User.current
|
||||
save
|
||||
end
|
||||
end
|
||||
|
||||
def restore
|
||||
if self.dmsf_folder_id && (self.folder.nil? || self.folder.deleted)
|
||||
if self.dmsf_folder_id && (self.folder.nil? || self.folder.deleted?)
|
||||
errors[:base] << l(:error_parent_folder)
|
||||
return false
|
||||
end
|
||||
self.deleted = false
|
||||
self.deleted = STATUS_ACTIVE
|
||||
self.deleted_by_user = nil
|
||||
save
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
@ -1,7 +1,9 @@
|
||||
<%#
|
||||
# encoding: utf-8
|
||||
#
|
||||
# Redmine plugin for Document Management System "Features"
|
||||
#
|
||||
# Copyright (C) 2011-15 Karel Picman <karel.picman@kontron.com>
|
||||
# Copyright (C) 2011-16 Karel Pičman <karel.picman@kontron.com>
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License
|
||||
@ -24,7 +26,7 @@
|
||||
<% assignments = Array.new %>
|
||||
<% all_assignments.each do |assignment| %>
|
||||
<% if assignment.dmsf_file_revision.file.last_revision &&
|
||||
!assignment.dmsf_file_revision.file.last_revision.deleted &&
|
||||
!assignment.dmsf_file_revision.file.last_revision.deleted? &&
|
||||
(assignment.dmsf_file_revision.workflow == DmsfWorkflow::STATE_WAITING_FOR_APPROVAL) &&
|
||||
(assignment.dmsf_file_revision == assignment.dmsf_file_revision.file.last_revision) %>
|
||||
<% assignments << assignment %>
|
||||
|
||||
35
db/migrate/20160217133001_status_deleted.rb
Normal file
35
db/migrate/20160217133001_status_deleted.rb
Normal file
@ -0,0 +1,35 @@
|
||||
# encoding: utf-8
|
||||
#
|
||||
# Redmine plugin for Document Management System "Features"
|
||||
#
|
||||
# Copyright (C) 2011-16 Karel Pičman <karel.picman@kontron.com>
|
||||
#
|
||||
# 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.
|
||||
|
||||
class StatusDeleted < ActiveRecord::Migration
|
||||
def self.up
|
||||
change_column :dmsf_folders, :deleted, :integer, :null => false, :default => DmsfFolder::STATUS_ACTIVE
|
||||
change_column :dmsf_files, :deleted, :integer, :null => false, :default => DmsfFile::STATUS_ACTIVE
|
||||
change_column :dmsf_file_revisions, :deleted, :integer, :null => false, :default => DmsfFileRevision::STATUS_ACTIVE
|
||||
change_column :dmsf_links, :deleted, :integer, :null => false, :default => DmsfLink::STATUS_ACTIVE
|
||||
end
|
||||
|
||||
def self.down
|
||||
change_column :dmsf_folders, :deleted, :boolean, :null => false, :default => false
|
||||
change_column :dmsf_files, :deleted, :boolean, :null => false, :default => false
|
||||
change_column :dmsf_file_revisions, :deleted, :boolean, :null => false, :default => false
|
||||
change_column :dmsf_links, :deleted, :boolean, :null => false, :default => false
|
||||
end
|
||||
end
|
||||
@ -104,7 +104,7 @@ class DmsfWebdavDeleteTest < RedmineDmsf::Test::IntegrationTest
|
||||
delete "/dmsf/webdav/#{@project1.identifier}/#{@file1.name}", nil, @admin
|
||||
assert_response :success # If its in the 20x range it's acceptable, should be 204.
|
||||
@file1.reload
|
||||
assert @file1.deleted, "File #{@file1.name} hasn't been deleted"
|
||||
assert @file1.deleted?, "File #{@file1.name} hasn't been deleted"
|
||||
end
|
||||
|
||||
def test_unathorized_user
|
||||
@ -112,7 +112,7 @@ class DmsfWebdavDeleteTest < RedmineDmsf::Test::IntegrationTest
|
||||
delete "/dmsf/webdav/#{@project1.identifier}/#{@file1.name}", nil, @jsmith
|
||||
assert_response :missing # Without folder_view permission, he will not even be aware of its existence.
|
||||
@file1.reload
|
||||
assert !@file1.deleted, "File #{@file1.name} is expected to exist"
|
||||
assert !@file1.deleted?, "File #{@file1.name} is expected to exist"
|
||||
end
|
||||
|
||||
def test_unathorized_user_forbidden
|
||||
@ -121,7 +121,7 @@ class DmsfWebdavDeleteTest < RedmineDmsf::Test::IntegrationTest
|
||||
delete "/dmsf/webdav/#{@project1.identifier}/#{@file1.name}", nil, @jsmith
|
||||
assert_response :forbidden # Now jsmith's role has view_folder rights, however they do not hold file manipulation rights.
|
||||
@file1.reload
|
||||
assert !@file1.deleted, "File #{@file1.name} is expected to exist"
|
||||
assert !@file1.deleted?, "File #{@file1.name} is expected to exist"
|
||||
end
|
||||
|
||||
def test_view_folder_not_allowed
|
||||
@ -130,7 +130,7 @@ class DmsfWebdavDeleteTest < RedmineDmsf::Test::IntegrationTest
|
||||
delete "/dmsf/webdav/#{@project1.identifier}/#{@folder1.title}", nil, @jsmith
|
||||
assert_response :missing # Without folder_view permission, he will not even be aware of its existence.
|
||||
@folder1.reload
|
||||
assert !@folder1.deleted, "Folder #{@folder1.title} is expected to exist"
|
||||
assert !@folder1.deleted?, "Folder #{@folder1.title} is expected to exist"
|
||||
end
|
||||
|
||||
def test_folder_manipulation_not_allowed
|
||||
@ -139,7 +139,7 @@ class DmsfWebdavDeleteTest < RedmineDmsf::Test::IntegrationTest
|
||||
delete "/dmsf/webdav/#{@project1.identifier}/#{@folder1.title}", nil, @jsmith
|
||||
assert_response :forbidden # Without manipulation permission, action is forbidden.
|
||||
@folder1.reload
|
||||
assert !@folder1.deleted, "Foler #{@folder1.title} is expected to exist"
|
||||
assert !@folder1.deleted?, "Foler #{@folder1.title} is expected to exist"
|
||||
end
|
||||
|
||||
def test_folder_delete_by_admin
|
||||
@ -147,7 +147,7 @@ class DmsfWebdavDeleteTest < RedmineDmsf::Test::IntegrationTest
|
||||
delete "/dmsf/webdav/#{@project1.identifier}/#{@folder6.title}", nil, @admin
|
||||
assert_response :success
|
||||
@folder6.reload
|
||||
assert @folder6.deleted, "Folder #{@folder1.title} is not expected to exist"
|
||||
assert @folder6.deleted?, "Folder #{@folder1.title} is not expected to exist"
|
||||
end
|
||||
|
||||
def test_folder_delete_by_user
|
||||
@ -157,7 +157,7 @@ class DmsfWebdavDeleteTest < RedmineDmsf::Test::IntegrationTest
|
||||
delete "/dmsf/webdav/#{@project1.identifier}/#{@folder6.title}", nil, @jsmith
|
||||
assert_response :success
|
||||
@folder6.reload
|
||||
assert @folder6.deleted, "Folder #{@folder1.title} is not expected to exist"
|
||||
assert @folder6.deleted?, "Folder #{@folder1.title} is not expected to exist"
|
||||
end
|
||||
|
||||
def test_file_delete_by_administrator
|
||||
@ -165,7 +165,7 @@ class DmsfWebdavDeleteTest < RedmineDmsf::Test::IntegrationTest
|
||||
delete "/dmsf/webdav/#{@project1.identifier}/#{@file1.name}", nil, @admin
|
||||
assert_response :success
|
||||
@file1.reload
|
||||
assert @file1.deleted, "File #{@file1.name} is not expected to exist"
|
||||
assert @file1.deleted?, "File #{@file1.name} is not expected to exist"
|
||||
end
|
||||
|
||||
def test_file_delete_by_user
|
||||
@ -175,7 +175,7 @@ class DmsfWebdavDeleteTest < RedmineDmsf::Test::IntegrationTest
|
||||
delete "/dmsf/webdav/#{@project1.identifier}/#{@file1.name}", nil, @jsmith
|
||||
assert_response :success
|
||||
@file1.reload
|
||||
assert @file1.deleted, "File #{@file1.name} is not expected to exist"
|
||||
assert @file1.deleted?, "File #{@file1.name} is not expected to exist"
|
||||
end
|
||||
|
||||
def test_locked_folder
|
||||
@ -186,7 +186,7 @@ class DmsfWebdavDeleteTest < RedmineDmsf::Test::IntegrationTest
|
||||
delete "/dmsf/webdav/#{@project1.identifier}/#{@folder6.title}", nil, @jsmith
|
||||
assert_response 423 # Locked
|
||||
@folder6.reload
|
||||
assert !@folder6.deleted, "Folder #{@folder6.title} is expected to exist"
|
||||
assert !@folder6.deleted?, "Folder #{@folder6.title} is expected to exist"
|
||||
end
|
||||
|
||||
def test_locked_file
|
||||
@ -197,7 +197,7 @@ class DmsfWebdavDeleteTest < RedmineDmsf::Test::IntegrationTest
|
||||
delete "/dmsf/webdav/#{@project1.identifier}/#{@file1.name}", nil, @jsmith
|
||||
assert_response 423 # Locked
|
||||
@file1.reload
|
||||
assert !@file1.deleted, "File #{@file1.name} is expected to exist"
|
||||
assert !@file1.deleted?, "File #{@file1.name} is expected to exist"
|
||||
end
|
||||
|
||||
end
|
||||
@ -35,10 +35,10 @@ class DmsfFileRevisionTest < RedmineDmsf::Test::UnitTest
|
||||
|
||||
def test_delete_restore
|
||||
@revision5.delete false
|
||||
assert @revision5.deleted,
|
||||
assert @revision5.deleted?,
|
||||
"File revision #{@revision5.name} hasn't been deleted"
|
||||
@revision5.restore
|
||||
assert !@revision5.deleted,
|
||||
assert !@revision5.deleted?,
|
||||
"File revision #{@revision5.name} hasn't been restored"
|
||||
end
|
||||
|
||||
|
||||
@ -54,12 +54,12 @@ class DmsfFileTest < RedmineDmsf::Test::UnitTest
|
||||
end
|
||||
|
||||
def test_project_dmsf_file_listing_contains_deleted_items
|
||||
assert @project1.dmsf_files.index{ |f| f.deleted },
|
||||
assert @project1.dmsf_files.index{ |f| f.deleted? },
|
||||
'Expected at least one deleted item in <all items>'
|
||||
end
|
||||
|
||||
def test_project_dmsf_file_visible_listing_contains_no_deleted_items
|
||||
assert @project1.dmsf_files.visible.index{ |f| f.deleted }.nil?,
|
||||
assert @project1.dmsf_files.visible.index{ |f| f.deleted? }.nil?,
|
||||
'There is a deleted file, this was unexpected'
|
||||
end
|
||||
|
||||
@ -106,7 +106,7 @@ class DmsfFileTest < RedmineDmsf::Test::UnitTest
|
||||
User.current = @admin
|
||||
@file4.folder.unlock!
|
||||
assert @file4.delete(false), @file4.errors.full_messages.to_sentence
|
||||
assert @file4.deleted, "File #{@file4.name} is not deleted"
|
||||
assert @file4.deleted?, "File #{@file4.name} is not deleted"
|
||||
assert_equal 0, @file4.revisions.visible.count
|
||||
assert_equal 0, @file4.referenced_links.visible.count
|
||||
@file4.folder.lock!
|
||||
@ -117,7 +117,7 @@ class DmsfFileTest < RedmineDmsf::Test::UnitTest
|
||||
@file4.folder.unlock!
|
||||
assert @file4.delete(false), @file4.errors.full_messages.to_sentence
|
||||
@file4.restore
|
||||
assert !@file4.deleted, "File #{@file4} hasn't been restored"
|
||||
assert !@file4.deleted?, "File #{@file4} hasn't been restored"
|
||||
assert_equal 1, @file4.revisions.visible.count
|
||||
assert_equal 2, @file4.referenced_links.visible.count
|
||||
@file4.folder.lock!
|
||||
|
||||
@ -35,14 +35,14 @@ class DmsfFolderTest < RedmineDmsf::Test::UnitTest
|
||||
|
||||
def test_delete
|
||||
assert @folder6.delete(false), @folder6.errors.full_messages.to_sentence
|
||||
assert @folder6.deleted, "Folder #{@folder6} hasn't been deleted"
|
||||
assert @folder6.deleted?, "Folder #{@folder6} hasn't been deleted"
|
||||
end
|
||||
|
||||
def test_restore
|
||||
assert @folder6.delete(false), @folder6.errors.full_messages.to_sentence
|
||||
assert @folder6.deleted, "Folder #{@folder6} hasn't been deleted"
|
||||
assert @folder6.deleted?, "Folder #{@folder6} hasn't been deleted"
|
||||
assert @folder6.restore, @folder6.errors.full_messages.to_sentence
|
||||
assert !@folder6.deleted, "Folder #{@folder6} hasn't been restored"
|
||||
assert !@folder6.deleted?, "Folder #{@folder6} hasn't been restored"
|
||||
end
|
||||
|
||||
def test_destroy
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
#
|
||||
# Redmine plugin for Document Management System "Features"
|
||||
#
|
||||
# Copyright (C) 2011-15 Karel Pičman <karel.picman@lbcfree.net>
|
||||
# Copyright (C) 2011-16 Karel Pičman <karel.picman@lbcfree.net>
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License
|
||||
@ -185,28 +185,28 @@ class DmsfLinksTest < RedmineDmsf::Test::UnitTest
|
||||
|
||||
def test_delete_file_link
|
||||
assert @file_link.delete(false), @file_link.errors.full_messages.to_sentence
|
||||
assert @file_link.deleted, "File link hasn't been deleted"
|
||||
assert @file_link.deleted?, "File link hasn't been deleted"
|
||||
end
|
||||
|
||||
def test_restore_file_link
|
||||
assert @file_link.delete(false), @file_link.errors.full_messages.to_sentence
|
||||
assert @file_link.deleted, "File link hasn't been deleted"
|
||||
assert @file_link.deleted?, "File link hasn't been deleted"
|
||||
assert @file_link.restore, @file_link.errors.full_messages.to_sentence
|
||||
assert !@file_link.deleted, "File link hasn't been restored"
|
||||
assert !@file_link.deleted?, "File link hasn't been restored"
|
||||
end
|
||||
|
||||
def test_delete_folder_link
|
||||
assert @folder_link.delete(false),
|
||||
@folder_link.errors.full_messages.to_sentence
|
||||
assert @folder_link.deleted, "Folder link hasn't been deleted"
|
||||
assert @folder_link.deleted?, "Folder link hasn't been deleted"
|
||||
end
|
||||
|
||||
def test_restore_folder_link
|
||||
assert @folder_link.delete(false),
|
||||
@folder_link.errors.full_messages.to_sentence
|
||||
assert @folder_link.deleted, "Folder link hasn't been deleted"
|
||||
assert @folder_link.deleted?, "Folder link hasn't been deleted"
|
||||
assert @folder_link.restore, @folder_link.errors.full_messages.to_sentence
|
||||
assert !@folder_link.deleted, "Folder link hasn't been restored"
|
||||
assert !@folder_link.deleted?, "Folder link hasn't been restored"
|
||||
end
|
||||
|
||||
def test_destroy_file_link
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user