#183 Create document links - unit tests and fixes
This commit is contained in:
parent
adb33cd7f7
commit
5c53966873
@ -17,13 +17,14 @@
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
|
||||
class DmsfWorkflowsController < ApplicationController
|
||||
unloadable
|
||||
layout :workflows_layout
|
||||
unloadable
|
||||
model_object DmsfWorkflow
|
||||
|
||||
before_filter :find_model_object, :except => [:create, :new, :index, :assign, :assignment]
|
||||
before_filter :find_project
|
||||
before_filter :authorize_custom
|
||||
|
||||
before_filter :find_workflow, :except => [:create, :new, :index, :assign, :assignment]
|
||||
before_filter :find_project, :except => [:start]
|
||||
before_filter :authorize_global
|
||||
before_filter :authorize_custom, :except => [:assignment, :start, :new_action]
|
||||
layout :workflows_layout
|
||||
|
||||
def index
|
||||
if @project
|
||||
@ -46,7 +47,7 @@ class DmsfWorkflowsController < ApplicationController
|
||||
if action.save
|
||||
revision = DmsfFileRevision.find_by_id params[:dmsf_file_revision_id]
|
||||
if revision
|
||||
if @workflow.try_finish revision, action, (params[:step_action].to_i / 10)
|
||||
if @dmsf_workflow.try_finish revision, action, (params[:step_action].to_i / 10)
|
||||
file = DmsfFile.joins(:revisions).where(:dmsf_file_revisions => {:id => revision.id}).first
|
||||
if file
|
||||
begin
|
||||
@ -60,23 +61,23 @@ class DmsfWorkflowsController < ApplicationController
|
||||
revision.file.project.members.each do |member|
|
||||
DmsfMailer.workflow_notification(
|
||||
member.user,
|
||||
@workflow,
|
||||
@dmsf_workflow,
|
||||
revision,
|
||||
l(:text_email_subject_approved, :name => @workflow.name),
|
||||
l(:text_email_finished_approved, :name => @workflow.name, :filename => revision.file.name),
|
||||
l(:text_email_subject_approved, :name => @dmsf_workflow.name),
|
||||
l(:text_email_finished_approved, :name => @dmsf_workflow.name, :filename => revision.file.name),
|
||||
l(:text_email_to_see_history)).deliver if member.user
|
||||
end
|
||||
else
|
||||
# Just rejected
|
||||
recipients = @workflow.participiants
|
||||
recipients = @dmsf_workflow.participiants
|
||||
recipients.push User.find_by_id revision.dmsf_workflow_assigned_by
|
||||
recipients.each do |user|
|
||||
DmsfMailer.workflow_notification(
|
||||
user,
|
||||
@workflow,
|
||||
@dmsf_workflow,
|
||||
revision,
|
||||
l(:text_email_subject_rejected, :name => @workflow.name),
|
||||
l(:text_email_finished_rejected, :name => @workflow.name, :filename => revision.file.name, :notice => action.note),
|
||||
l(:text_email_subject_rejected, :name => @dmsf_workflow.name),
|
||||
l(:text_email_finished_rejected, :name => @dmsf_workflow.name, :filename => revision.file.name, :notice => action.note),
|
||||
l(:text_email_to_see_history)).deliver if user
|
||||
end
|
||||
end
|
||||
@ -86,33 +87,33 @@ class DmsfWorkflowsController < ApplicationController
|
||||
delegate = User.find_by_id params[:step_action].to_i / 10
|
||||
DmsfMailer.workflow_notification(
|
||||
delegate,
|
||||
@workflow,
|
||||
@dmsf_workflow,
|
||||
revision,
|
||||
l(:text_email_subject_delegated, :name => @workflow.name),
|
||||
l(:text_email_finished_delegated, :name => @workflow.name, :filename => revision.file.name, :notice => action.note),
|
||||
l(:text_email_subject_delegated, :name => @dmsf_workflow.name),
|
||||
l(:text_email_finished_delegated, :name => @dmsf_workflow.name, :filename => revision.file.name, :notice => action.note),
|
||||
l(:text_email_to_proceed)).deliver if delegate
|
||||
else
|
||||
# Next step
|
||||
assignments = @workflow.next_assignments revision.id
|
||||
assignments = @dmsf_workflow.next_assignments revision.id
|
||||
unless assignments.empty?
|
||||
if assignments.first.dmsf_workflow_step.step != action.dmsf_workflow_step_assignment.dmsf_workflow_step.step
|
||||
# Next step
|
||||
assignments.each do |assignment|
|
||||
DmsfMailer.workflow_notification(
|
||||
assignment.user,
|
||||
@workflow,
|
||||
@dmsf_workflow,
|
||||
revision,
|
||||
l(:text_email_subject_requires_approval, :name => @workflow.name),
|
||||
l(:text_email_finished_step, :name => @workflow.name, :filename => revision.file.name),
|
||||
l(:text_email_subject_requires_approval, :name => @dmsf_workflow.name),
|
||||
l(:text_email_finished_step, :name => @dmsf_workflow.name, :filename => revision.file.name),
|
||||
l(:text_email_to_proceed)).deliver if assignment.user
|
||||
end
|
||||
to = User.find_by_id revision.dmsf_workflow_assigned_by
|
||||
DmsfMailer.workflow_notification(
|
||||
to,
|
||||
@workflow,
|
||||
@dmsf_workflow,
|
||||
revision,
|
||||
l(:text_email_subject_updated, :name => @workflow.name),
|
||||
l(:text_email_finished_step_short, :name => @workflow.name, :filename => revision.file.name),
|
||||
l(:text_email_subject_updated, :name => @dmsf_workflow.name),
|
||||
l(:text_email_finished_step_short, :name => @dmsf_workflow.name, :filename => revision.file.name),
|
||||
l(:text_email_to_see_status)).deliver if to
|
||||
end
|
||||
end
|
||||
@ -163,12 +164,12 @@ class DmsfWorkflowsController < ApplicationController
|
||||
end
|
||||
|
||||
def new
|
||||
@workflow = DmsfWorkflow.new
|
||||
@dmsf_workflow = DmsfWorkflow.new
|
||||
end
|
||||
|
||||
def create
|
||||
@workflow = DmsfWorkflow.new(:name => params[:name], :project_id => params[:project_id])
|
||||
if request.post? && @workflow.save
|
||||
@dmsf_workflow = DmsfWorkflow.new(:name => params[:name], :project_id => params[:project_id])
|
||||
if request.post? && @dmsf_workflow.save
|
||||
flash[:notice] = l(:notice_successful_create)
|
||||
if @project
|
||||
redirect_to settings_project_path(@project, :tab => 'dmsf_workflow')
|
||||
@ -184,7 +185,7 @@ class DmsfWorkflowsController < ApplicationController
|
||||
end
|
||||
|
||||
def update
|
||||
if request.put? && @workflow.update_attributes({:name => params[:name]})
|
||||
if request.put? && @dmsf_workflow.update_attributes({:name => params[:name]})
|
||||
flash[:notice] = l(:notice_successful_update)
|
||||
if @project
|
||||
redirect_to settings_project_path(@project, :tab => 'dmsf_workflow')
|
||||
@ -198,7 +199,7 @@ class DmsfWorkflowsController < ApplicationController
|
||||
|
||||
def destroy
|
||||
begin
|
||||
@workflow.destroy
|
||||
@dmsf_workflow.destroy
|
||||
flash[:notice] = l(:notice_successful_delete)
|
||||
rescue
|
||||
flash[:error] = l(:error_unable_delete_dmsf_workflow)
|
||||
@ -218,14 +219,14 @@ class DmsfWorkflowsController < ApplicationController
|
||||
if request.post?
|
||||
users = User.find_all_by_id(params[:user_ids])
|
||||
if params[:step] == '0'
|
||||
step = @workflow.dmsf_workflow_steps.collect{|s| s.step}.uniq.count + 1
|
||||
step = @dmsf_workflow.dmsf_workflow_steps.collect{|s| s.step}.uniq.count + 1
|
||||
else
|
||||
step = params[:step].to_i
|
||||
end
|
||||
operator = (params[:commit] == l(:dmsf_and)) ? DmsfWorkflowStep::OPERATOR_AND : DmsfWorkflowStep::OPERATOR_OR
|
||||
users.each do |user|
|
||||
@workflow.dmsf_workflow_steps << DmsfWorkflowStep.new(
|
||||
:dmsf_workflow_id => @workflow.id,
|
||||
@dmsf_workflow.dmsf_workflow_steps << DmsfWorkflowStep.new(
|
||||
:dmsf_workflow_id => @dmsf_workflow.id,
|
||||
:step => step,
|
||||
:user_id => user.id,
|
||||
:operator => operator)
|
||||
@ -238,10 +239,10 @@ class DmsfWorkflowsController < ApplicationController
|
||||
|
||||
def remove_step
|
||||
if request.delete?
|
||||
DmsfWorkflowStep.where(:dmsf_workflow_id => @workflow.id, :step => params[:step]).each do |ws|
|
||||
@workflow.dmsf_workflow_steps.delete(ws)
|
||||
DmsfWorkflowStep.where(:dmsf_workflow_id => @dmsf_workflow.id, :step => params[:step]).each do |ws|
|
||||
@dmsf_workflow.dmsf_workflow_steps.delete(ws)
|
||||
end
|
||||
@workflow.dmsf_workflow_steps.each do |ws|
|
||||
@dmsf_workflow.dmsf_workflow_steps.each do |ws|
|
||||
n = ws.step.to_i
|
||||
if n > params[:step].to_i
|
||||
ws.step = n - 1
|
||||
@ -258,7 +259,7 @@ class DmsfWorkflowsController < ApplicationController
|
||||
|
||||
def reorder_steps
|
||||
if request.put?
|
||||
unless @workflow.reorder_steps(params[:step].to_i, params[:workflow_step][:move_to])
|
||||
unless @dmsf_workflow.reorder_steps(params[:step].to_i, params[:workflow_step][:move_to])
|
||||
flash[:error] = l(:notice_cannot_renumber_steps)
|
||||
end
|
||||
end
|
||||
@ -270,16 +271,16 @@ class DmsfWorkflowsController < ApplicationController
|
||||
def start
|
||||
revision = DmsfFileRevision.find_by_id(params[:dmsf_file_revision_id])
|
||||
if revision
|
||||
revision.set_workflow(@workflow.id, params[:action])
|
||||
revision.set_workflow(@dmsf_workflow.id, params[:action])
|
||||
if revision.save
|
||||
assignments = @workflow.next_assignments revision.id
|
||||
assignments = @dmsf_workflow.next_assignments revision.id
|
||||
assignments.each do |assignment|
|
||||
DmsfMailer.workflow_notification(
|
||||
assignment.user,
|
||||
@workflow,
|
||||
@dmsf_workflow,
|
||||
revision,
|
||||
l(:text_email_subject_started, :name => @workflow.name),
|
||||
l(:text_email_started, :name => @workflow.name, :filename => revision.file.name),
|
||||
l(:text_email_subject_started, :name => @dmsf_workflow.name),
|
||||
l(:text_email_started, :name => @dmsf_workflow.name, :filename => revision.file.name),
|
||||
l(:text_email_to_proceed)).deliver if assignment.user
|
||||
end
|
||||
flash[:notice] = l(:notice_workflow_started)
|
||||
@ -291,25 +292,26 @@ class DmsfWorkflowsController < ApplicationController
|
||||
end
|
||||
|
||||
private
|
||||
def find_workflow
|
||||
@workflow = DmsfWorkflow.find_by_id(params[:id])
|
||||
end
|
||||
|
||||
|
||||
def find_project
|
||||
if @workflow && @workflow.project
|
||||
@project = @workflow.project
|
||||
if @dmsf_workflow && @dmsf_workflow.project
|
||||
@project = @dmsf_workflow.project
|
||||
elsif params[:project_id].present?
|
||||
@project = Project.find_by_id params[:project_id]
|
||||
else
|
||||
@project = Project.find_by_identifier params[:id]
|
||||
end
|
||||
end
|
||||
|
||||
def workflows_layout
|
||||
find_workflow
|
||||
find_project
|
||||
def workflows_layout
|
||||
@project ? 'base' : 'admin'
|
||||
end
|
||||
|
||||
def authorize_custom
|
||||
require_admin unless @project
|
||||
def authorize_custom
|
||||
if @project
|
||||
authorize
|
||||
else
|
||||
require_admin
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
@ -66,14 +66,12 @@ class DmsfFile < ActiveRecord::Base
|
||||
:url => Proc.new {|o| {:controller => 'dmsf_files', :action => 'show', :id => o}},
|
||||
:datetime => Proc.new {|o| o.updated_at },
|
||||
:author => Proc.new {|o| o.last_revision.user }
|
||||
|
||||
|
||||
@@storage_path = Setting.plugin_redmine_dmsf['dmsf_storage_directory'].strip
|
||||
|
||||
@@storage_path = nil
|
||||
|
||||
def self.storage_path
|
||||
if !File.exists?(@@storage_path)
|
||||
Dir.mkdir(@@storage_path)
|
||||
end
|
||||
self.storage_path = Setting.plugin_redmine_dmsf['dmsf_storage_directory'].strip unless @@storage_path
|
||||
Dir.mkdir(@@storage_path) unless File.exists?(@@storage_path)
|
||||
@@storage_path
|
||||
end
|
||||
|
||||
|
||||
@ -32,7 +32,7 @@
|
||||
<div class="splitcontentleft">
|
||||
<p>
|
||||
<%= label_tag('dmsf_file_revision_title', "#{l(:label_title)}:") %>
|
||||
<%= f.text_field(:title, :size => '32') %>
|
||||
<%= f.text_field(:title, :size => 32) %>
|
||||
</p>
|
||||
</div>
|
||||
<div class="splitcontentright">
|
||||
@ -41,7 +41,7 @@
|
||||
<%= f.select(:dmsf_folder_id,
|
||||
options_for_select(DmsfFolder.directory_tree(@project),
|
||||
:selected => (@revision.folder.id if @revision.folder))) %> /
|
||||
<%= f.text_field(:name, :size => '22') %>
|
||||
<%= f.text_field(:name, :size => 22) %>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
@ -49,7 +49,7 @@
|
||||
<%= label_tag('dmsf_file_revision_description', "#{l(:label_description)}:") %>
|
||||
</p>
|
||||
<div class="wiki data clear">
|
||||
<%= f.text_area(:description, :rows=> '6', :class => 'wiki-edit') %>
|
||||
<%= f.text_area(:description, :rows => 6, :class => 'wiki-edit') %>
|
||||
</div>
|
||||
<div class="splitcontentleft">
|
||||
<p>
|
||||
@ -70,8 +70,8 @@
|
||||
<p>
|
||||
<%= label_tag('file_upload', "#{l(:label_new_content)}:") %>
|
||||
<div class="data">
|
||||
<%= file_field_tag('file_upload', :size => 30) %>
|
||||
<br />
|
||||
<%= file_field_tag('file_upload') %>
|
||||
<br/>
|
||||
<small>
|
||||
(<%= l(:label_max_size) %>: <%= number_to_human_size(Setting.attachment_max_size.to_i.kilobytes) %>)
|
||||
</small>
|
||||
@ -88,7 +88,7 @@
|
||||
<p>
|
||||
<%= label_tag('dmsf_file_revision_comment', "#{l(:label_comment)}:") %>
|
||||
<div class="data">
|
||||
<%= f.text_area(:comment, :rows=> '2', :style => 'width: 99%;') %>
|
||||
<%= f.text_area(:comment, :rows=> 2, :style => 'width: 99%;') %>
|
||||
</div>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
@ -59,7 +59,7 @@
|
||||
<%= error_messages_for('file') %>
|
||||
<%= error_messages_for('revision') %>
|
||||
<%= render(:partial => 'file_new_revision') if User.current.allowed_to?(:file_manipulation, @file.project) %>
|
||||
<%= form_tag('', :id => 'entries_form') %>
|
||||
<%#= form_tag('', :id => 'entries_form') %>
|
||||
|
||||
<h3><%= l(:heading_revisions) %></h3>
|
||||
<% @file.revisions.visible[@revision_pages.offset,@revision_pages.per_page].each do |revision| %>
|
||||
@ -147,8 +147,8 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<br/>
|
||||
<br/>
|
||||
<!--<br/>
|
||||
<br/>-->
|
||||
<% end %>
|
||||
|
||||
<p class="pagination"><%= pagination_links_full @revision_pages, @file.revisions.visible.count %></p>
|
||||
|
||||
@ -34,8 +34,8 @@
|
||||
<p>
|
||||
<%= label_tag 'delegate', l(:label_dmsf_wokflow_action_delegate) %><br/>
|
||||
<%= text_field_tag 'user_search', nil %>
|
||||
<%= javascript_tag "observeSearchfield('user_search', 'users_for_delegate', '#{ escape_javascript autocomplete_for_user_dmsf_workflow_path(@workflow, :dmsf_workflow_step_assignment_id => params[:dmsf_workflow_step_assignment_id], :dmsf_file_revision_id => params[:dmsf_file_revision_id]) }')" %>
|
||||
<%= content_tag('div', principals_radio_button_tags('step_action', @workflow.delegates(nil, params[:dmsf_workflow_step_assignment_id], params[:dmsf_file_revision_id])), :id => 'users_for_delegate') %>
|
||||
<%= javascript_tag "observeSearchfield('user_search', 'users_for_delegate', '#{ escape_javascript autocomplete_for_user_dmsf_workflow_path(@dmsf_workflow, :dmsf_workflow_step_assignment_id => params[:dmsf_workflow_step_assignment_id], :dmsf_file_revision_id => params[:dmsf_file_revision_id]) }')" %>
|
||||
<%= content_tag('div', principals_radio_button_tags('step_action', @dmsf_workflow.delegates(nil, params[:dmsf_workflow_step_assignment_id], params[:dmsf_file_revision_id])), :id => 'users_for_delegate') %>
|
||||
</p>
|
||||
|
||||
<p class="buttons">
|
||||
|
||||
@ -24,10 +24,10 @@
|
||||
<div class="log_header_box">
|
||||
<div class="log_header_left">
|
||||
<%= label_tag 'workflow_name', "#{l(:link_workflow)} #{l(:field_name).downcase}: " %>
|
||||
<% if User.current.allowed_to?(:manage_workflows, @workflow.project) %>
|
||||
<%= link_to @workflow.name, edit_dmsf_workflow_path(@workflow) %>
|
||||
<% if User.current.allowed_to?(:manage_workflows, @dmsf_workflow.project) %>
|
||||
<%= link_to @dmsf_workflow.name, edit_dmsf_workflow_path(@dmsf_workflow) %>
|
||||
<% else %>
|
||||
<%= @workflow.name %>
|
||||
<%= @dmsf_workflow.name %>
|
||||
<% end %>
|
||||
</div>
|
||||
<div>
|
||||
@ -78,7 +78,7 @@
|
||||
<td><%= link_to_user User.find_by_id(row['author_id'].present? ? row['author_id'] : row['user_id']) %></td>
|
||||
<td><%= DmsfWorkflowStepAction.action_str(row['action']) %></td>
|
||||
<td>
|
||||
<% if((row['step'].to_i == @workflow.dmsf_workflow_steps.last.step) && (revision.workflow == DmsfWorkflow::STATE_APPROVED) && (row['action'] != DmsfWorkflowStepAction::ACTION_DELEGATE)) %>
|
||||
<% if((row['step'].to_i == @dmsf_workflow.dmsf_workflow_steps.last.step) && (revision.workflow == DmsfWorkflow::STATE_APPROVED) && (row['action'] != DmsfWorkflowStepAction::ACTION_DELEGATE)) %>
|
||||
<%= l(:title_approved) %>
|
||||
<% else %>
|
||||
<%= DmsfWorkflowStepAction.workflow_str(row['action']) %>
|
||||
|
||||
@ -16,23 +16,23 @@
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.%>
|
||||
|
||||
<% if @workflow.project %>
|
||||
<h2><%= link_to l(:label_dmsf_workflow_plural), settings_project_path(@project, :tab => 'dmsf_workflow') %> » <%=h @workflow %></h2>
|
||||
<% if @dmsf_workflow.project %>
|
||||
<h2><%= link_to l(:label_dmsf_workflow_plural), settings_project_path(@project, :tab => 'dmsf_workflow') %> » <%=h @dmsf_workflow %></h2>
|
||||
<% else %>
|
||||
<h2><%= link_to l(:label_dmsf_workflow_plural), dmsf_workflows_path %> » <%=h @workflow %></h2>
|
||||
<h2><%= link_to l(:label_dmsf_workflow_plural), dmsf_workflows_path %> » <%=h @dmsf_workflow %></h2>
|
||||
<% end %>
|
||||
|
||||
<%= labelled_form_for @workflow do |f| %>
|
||||
<%= labelled_form_for @dmsf_workflow do |f| %>
|
||||
<%= error_messages_for 'workflow' %>
|
||||
<div class="box tabular">
|
||||
<p><%= f.label :label_dmsf_workflow_name %><%= text_field_tag :name, @workflow.name %><%= submit_tag l(:button_save) %></p>
|
||||
<p><%= f.label :label_dmsf_workflow_name %><%= text_field_tag :name, @dmsf_workflow.name %><%= submit_tag l(:button_save) %></p>
|
||||
</div>
|
||||
<% end %>
|
||||
|
||||
<div class="tab-content" id="tab-content-members">
|
||||
|
||||
<div class="splitcontentleft">
|
||||
<% steps = @workflow.dmsf_workflow_steps.collect{|s| s.step}.uniq %>
|
||||
<% steps = @dmsf_workflow.dmsf_workflow_steps.collect{|s| s.step}.uniq %>
|
||||
<% if steps.any? %>
|
||||
<table class="list">
|
||||
<thead><tr>
|
||||
@ -46,7 +46,7 @@
|
||||
<tr id="step-<%= i %>" class="<%= cycle 'odd', 'even' %> step">
|
||||
<td class="step"><%= i %></td>
|
||||
<td class="approval">
|
||||
<% @workflow.dmsf_workflow_steps.collect{|s| (s.step == i) ? s : nil}.compact.each_with_index do |step, j| %>
|
||||
<% @dmsf_workflow.dmsf_workflow_steps.collect{|s| (s.step == i) ? s : nil}.compact.each_with_index do |step, j| %>
|
||||
<% if j != 0 %>
|
||||
<b><%= step.soperator %></b> 
|
||||
<% end %>
|
||||
@ -54,10 +54,10 @@
|
||||
<% end %>
|
||||
</td>
|
||||
<td class="reorder">
|
||||
<%= reorder_links('workflow_step', {:action => 'edit', :id => @workflow, :step => i}, :put) %>
|
||||
<%= reorder_links('workflow_step', {:action => 'edit', :id => @dmsf_workflow, :step => i}, :put) %>
|
||||
</td>
|
||||
<td class="buttons">
|
||||
<%= delete_link edit_dmsf_workflow_path(@workflow, :step => i) %>
|
||||
<%= delete_link edit_dmsf_workflow_path(@dmsf_workflow, :step => i) %>
|
||||
</td>
|
||||
</tr>
|
||||
<% end; reset_cycle %>
|
||||
@ -69,15 +69,15 @@
|
||||
</div>
|
||||
|
||||
<div class="splitcontentright">
|
||||
<%= form_for(@workflow, :url => edit_dmsf_workflow_path(@workflow),
|
||||
<%= form_for(@dmsf_workflow, :url => edit_dmsf_workflow_path(@dmsf_workflow),
|
||||
:html => {:method => :post}) do |f| %>
|
||||
<fieldset><legend><%=l(:label_user_new)%></legend>
|
||||
|
||||
<p><%= label_tag 'user_search', l(:label_user_search) %><%= text_field_tag 'user_search', nil %></p>
|
||||
<%= javascript_tag "observeSearchfield('user_search', 'users', '#{ escape_javascript autocomplete_for_user_dmsf_workflow_path(@workflow, :dmsf_workflow_step_assignment_id => nil, :dmsf_file_revision_id => nil, :project_id => @project ? @project.id : nil) }')" %>
|
||||
<%= javascript_tag "observeSearchfield('user_search', 'users', '#{ escape_javascript autocomplete_for_user_dmsf_workflow_path(@dmsf_workflow, :dmsf_workflow_step_assignment_id => nil, :dmsf_file_revision_id => nil, :project_id => @project ? @project.id : nil) }')" %>
|
||||
|
||||
<div id="users">
|
||||
<%= render_principals_for_new_dmsf_workflow_users(@workflow, nil, nil) %>
|
||||
<%= render_principals_for_new_dmsf_workflow_users(@dmsf_workflow, nil, nil) %>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
|
||||
@ -16,6 +16,6 @@
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.%>
|
||||
|
||||
$('#ajax-modal').html('<%= escape_javascript(render :partial => 'action', :locals => {:workflow => @workflow}) %>');
|
||||
$('#ajax-modal').html('<%= escape_javascript(render :partial => 'action', :locals => {:workflow => @dmsf_workflow}) %>');
|
||||
showModal('ajax-modal', '400px');
|
||||
$('#ajax-modal').addClass('new-action');
|
||||
@ -16,6 +16,6 @@
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.%>
|
||||
|
||||
$('#ajax-modal').html('<%= escape_javascript(render :partial => 'assign', :locals => {:workflow => @workflow}) %>');
|
||||
$('#ajax-modal').html('<%= escape_javascript(render :partial => 'assign', :locals => {:workflow => @dmsf_workflow}) %>');
|
||||
showModal('ajax-modal', '400px');
|
||||
$('#ajax-modal').addClass('assignment');
|
||||
@ -16,4 +16,4 @@
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.%>
|
||||
|
||||
<%= render_principals_for_new_dmsf_workflow_users(@workflow, params[:dmsf_workflow_step_assignment_id], params[:dmsf_file_revision_id]) %>
|
||||
<%= render_principals_for_new_dmsf_workflow_users(@dmsf_workflow, params[:dmsf_workflow_step_assignment_id], params[:dmsf_file_revision_id]) %>
|
||||
|
||||
@ -16,6 +16,6 @@
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.%>
|
||||
|
||||
$('#ajax-modal').html('<%= escape_javascript(render :partial => 'log', :locals => {:workflow => @workflow}) %>');
|
||||
$('#ajax-modal').html('<%= escape_javascript(render :partial => 'log', :locals => {:workflow => @dmsf_workflow}) %>');
|
||||
showModal('ajax-modal', '800px');
|
||||
$('#ajax-modal').addClass('workflow-log');
|
||||
@ -23,7 +23,7 @@
|
||||
<h2><%= link_to l(:label_dmsf_workflow_plural), dmsf_workflows_path %> » <%=l(:label_dmsf_workflow_new)%></h2>
|
||||
<% end %>
|
||||
|
||||
<%= labelled_form_for @workflow do |f| %>
|
||||
<%= labelled_form_for @dmsf_workflow do |f| %>
|
||||
<%= error_messages_for 'workflow' %>
|
||||
<div class="box tabular">
|
||||
<p><%= f.label :label_dmsf_workflow_name %><%= text_field_tag :name %></p>
|
||||
|
||||
@ -27,7 +27,7 @@
|
||||
<h3><%= l(:label_my_locked_documents)%> (<%= folders.count %>/<%= files.count %>)</h3>
|
||||
<% if folders.any? || files.any?%>
|
||||
<%= form_tag({}) do %>
|
||||
<div><table class="list">
|
||||
<table class="list">
|
||||
<thead>
|
||||
<tr>
|
||||
<th><%=l(:field_project)%></th>
|
||||
|
||||
@ -30,7 +30,7 @@
|
||||
<h3><%= l(:label_my_open_approvals)%> (<%= assignments.count %>)</h3>
|
||||
<% if assignments.any? %>
|
||||
<%= form_tag({}) do %>
|
||||
<div><table class="list">
|
||||
<table class="list">
|
||||
<thead>
|
||||
<tr>
|
||||
<th><%=l(:field_project)%></th>
|
||||
|
||||
26
test/fixtures/dmsf_links.yml
vendored
Normal file
26
test/fixtures/dmsf_links.yml
vendored
Normal file
@ -0,0 +1,26 @@
|
||||
---
|
||||
folder_link:
|
||||
id: 1
|
||||
target_project_id: 1
|
||||
target_id: 1
|
||||
target_type: DmsfFolder
|
||||
name: folder1_link
|
||||
project_id: 1
|
||||
dmsf_folder_id: NULL
|
||||
deleted: 0
|
||||
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() %>
|
||||
2
test/fixtures/dmsf_workflows.yml
vendored
2
test/fixtures/dmsf_workflows.yml
vendored
@ -2,7 +2,7 @@
|
||||
wf1:
|
||||
id: 1
|
||||
name: wf1
|
||||
project_id: 5
|
||||
project_id: 1
|
||||
|
||||
wf2:
|
||||
id: 2
|
||||
|
||||
@ -1,8 +1,107 @@
|
||||
# Redmine plugin for Document Management System "Features"
|
||||
#
|
||||
# Copyright (C) 2014 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
|
||||
# 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.
|
||||
|
||||
require File.expand_path('../../test_helper', __FILE__)
|
||||
|
||||
class DmsfLinksControllerTest < ActionController::TestCase
|
||||
# Replace this with your real tests.
|
||||
def test_truth
|
||||
assert true
|
||||
class DmsfLinksControllerTest < RedmineDmsf::Test::TestCase
|
||||
|
||||
fixtures :projects, :members, :dmsf_files, :dmsf_file_revisions,
|
||||
:dmsf_folders, :dmsf_links, :roles, :member_roles
|
||||
|
||||
def setup
|
||||
@user_admin = User.find_by_id 1
|
||||
@user_member = User.find_by_id 2
|
||||
@user_non_member = User.find_by_id 3
|
||||
@project1 = Project.find_by_id 1
|
||||
assert_not_nil @project1
|
||||
@project1.enable_module! :dmsf
|
||||
@role_manager = Role.where(:name => 'Manager').first
|
||||
assert_not_nil @role_manager
|
||||
@role_manager.add_permission! :file_manipulation
|
||||
@folder1 = DmsfFolder.find_by_id 1
|
||||
@file1 = DmsfFile.find_by_id 1
|
||||
@request.session[:user_id] = @user_member.id
|
||||
@file_link = DmsfLink.find_by_id 1
|
||||
@request.env['HTTP_REFERER'] = dmsf_folder_path(:id => @project1.id, :folder_id => @folder1.id)
|
||||
end
|
||||
end
|
||||
|
||||
def test_truth
|
||||
assert_kind_of User, @user_admin
|
||||
assert_kind_of User, @user_member
|
||||
assert_kind_of User, @user_non_member
|
||||
assert_kind_of Project, @project1
|
||||
assert_kind_of Role, @role_manager
|
||||
assert_kind_of DmsfFolder, @folder1
|
||||
assert_kind_of DmsfFile, @file1
|
||||
assert_kind_of DmsfLink, @file_link
|
||||
end
|
||||
|
||||
def test_authorize
|
||||
# Admin
|
||||
@request.session[:user_id] = @user_admin.id
|
||||
get :new, :project_id => @project1.id
|
||||
assert_response :success
|
||||
assert_template 'new'
|
||||
|
||||
# Non member
|
||||
@request.session[:user_id] = @user_non_member.id
|
||||
get :new, :project_id => @project1.id
|
||||
assert_response :forbidden
|
||||
|
||||
# Member
|
||||
@request.session[:user_id] = @user_member.id
|
||||
get :new, :project_id => @project1.id
|
||||
assert_response :success
|
||||
|
||||
# Without the module
|
||||
@project1.disable_module!(:dmsf)
|
||||
get :new, :project_id => @project1.id
|
||||
assert_response :forbidden
|
||||
|
||||
# Without permissions
|
||||
@project1.enable_module!(:dmsf)
|
||||
@role_manager.remove_permission! :file_manipulation
|
||||
get :new, :project_id => @project1.id
|
||||
assert_response :forbidden
|
||||
end
|
||||
|
||||
def test_new
|
||||
get :new, :project_id => @project1.id
|
||||
assert_response :success
|
||||
end
|
||||
|
||||
def test_create
|
||||
assert_difference 'DmsfLink.count', +1 do
|
||||
post :create, :dmsf_link => {
|
||||
:project_id => @project1.id,
|
||||
:target_project_id => @project1.id,
|
||||
:dmsf_folder_id => @folder1.id,
|
||||
:target_file_id => @file1.id,
|
||||
:name => 'file_link'
|
||||
}
|
||||
end
|
||||
assert_redirected_to dmsf_folder_path(:id => @project1.id, :folder_id => @folder1.id)
|
||||
end
|
||||
|
||||
def test_destroy
|
||||
assert_difference 'DmsfLink.count', -1 do
|
||||
delete :destroy, :project_id => @project1.id, :id => @file_link.id
|
||||
end
|
||||
assert_redirected_to dmsf_folder_path(:id => @project1.id, :folder_id => @folder1.id)
|
||||
end
|
||||
end
|
||||
@ -30,17 +30,16 @@ class DmsfWorkflowsControllerTest < RedmineDmsf::Test::TestCase
|
||||
@user_member = User.find_by_id 2 # John Smith - manager
|
||||
@user_non_member = User.find_by_id 3 #Dave Lopper
|
||||
@request.session[:user_id] = @user_member.id
|
||||
@role_manager = Role.where(:name => 'Manager').first
|
||||
@role_manager.add_permission! :file_manipulation
|
||||
@role_manager = Role.find_by_name('Manager')
|
||||
@role_manager.add_permission! :file_manipulation
|
||||
@role_manager.add_permission! :manage_workflows
|
||||
@wfs1 = DmsfWorkflowStep.find_by_id 1 # step 1
|
||||
@wfs2 = DmsfWorkflowStep.find_by_id 2 # step 2
|
||||
@wfs3 = DmsfWorkflowStep.find_by_id 3 # step 1
|
||||
@wfs4 = DmsfWorkflowStep.find_by_id 4 # step 2
|
||||
@wfs5 = DmsfWorkflowStep.find_by_id 5 # step 3
|
||||
@manager_role = Role.find_by_name('Manager')
|
||||
@project1 = Project.find_by_id 1
|
||||
@project5 = Project.find_by_id 5
|
||||
@project5.enable_module! :dmsf
|
||||
@wfs5 = DmsfWorkflowStep.find_by_id 5 # step 3
|
||||
@project1 = Project.find_by_id 1
|
||||
@project1.enable_module! :dmsf
|
||||
@wf1 = DmsfWorkflow.find_by_id 1
|
||||
@wfsa2 = DmsfWorkflowStepAssignment.find_by_id 2
|
||||
@revision1 = DmsfFileRevision.find_by_id 1
|
||||
@ -48,6 +47,27 @@ class DmsfWorkflowsControllerTest < RedmineDmsf::Test::TestCase
|
||||
@revision3 = DmsfFileRevision.find_by_id 3
|
||||
@file1 = DmsfFile.find_by_id 1
|
||||
@file2 = DmsfFile.find_by_id 2
|
||||
@request.env['HTTP_REFERER'] = dmsf_folder_path(:id => @project1.id)
|
||||
end
|
||||
|
||||
def test_truth
|
||||
assert_kind_of User, @user_admin
|
||||
assert_kind_of User, @user_member
|
||||
assert_kind_of User, @user_non_member
|
||||
assert_kind_of Role, @role_manager
|
||||
assert_kind_of DmsfWorkflowStep, @wfs1
|
||||
assert_kind_of DmsfWorkflowStep, @wfs2
|
||||
assert_kind_of DmsfWorkflowStep, @wfs3
|
||||
assert_kind_of DmsfWorkflowStep, @wfs4
|
||||
assert_kind_of DmsfWorkflowStep, @wfs5
|
||||
assert_kind_of Project, @project1
|
||||
assert_kind_of DmsfWorkflow, @wf1
|
||||
assert_kind_of DmsfWorkflowStepAssignment, @wfsa2
|
||||
assert_kind_of DmsfFileRevision, @revision1
|
||||
assert_kind_of DmsfFileRevision, @revision2
|
||||
assert_kind_of DmsfFileRevision, @revision3
|
||||
assert_kind_of DmsfFile, @file1
|
||||
assert_kind_of DmsfFile, @file2
|
||||
end
|
||||
|
||||
def test_authorize
|
||||
@ -59,7 +79,7 @@ class DmsfWorkflowsControllerTest < RedmineDmsf::Test::TestCase
|
||||
|
||||
# Non member
|
||||
@request.session[:user_id] = @user_non_member.id
|
||||
get :index, :project_id => @project5.id
|
||||
get :index, :project_id => @project1.id
|
||||
assert_response :forbidden
|
||||
|
||||
# Member
|
||||
@ -68,28 +88,37 @@ class DmsfWorkflowsControllerTest < RedmineDmsf::Test::TestCase
|
||||
get :index
|
||||
assert_response :forbidden
|
||||
# Project
|
||||
get :index, :project_id => @project5.id
|
||||
get :index, :project_id => @project1.id
|
||||
assert_response :success
|
||||
assert_template 'index'
|
||||
# Without the module
|
||||
@project5.disable_module!(:dmsf)
|
||||
get :index, :project_id => @project5.id
|
||||
assert_response :forbidden
|
||||
|
||||
# Without permissions
|
||||
@project5.enable_module!(:dmsf)
|
||||
@role_manager.remove_permission! :manage_workflows
|
||||
get :index, :project_id => @project1.id
|
||||
assert_response :forbidden
|
||||
@role_manager.add_permission! :manage_workflows
|
||||
@revision2.dmsf_workflow_id = @wf1.id
|
||||
get :start, :id => @revision2.dmsf_workflow_id,:dmsf_file_revision_id => @revision2.id
|
||||
assert_response :redirect
|
||||
@role_manager.remove_permission! :file_manipulation
|
||||
get :index, :project_id => @project5.id
|
||||
assert_response :forbidden
|
||||
get :start, :id => @revision2.dmsf_workflow_id,:dmsf_file_revision_id => @revision2.id
|
||||
assert_response :forbidden
|
||||
|
||||
# Without the module
|
||||
@role_manager.add_permission! :file_manipulation
|
||||
@project1.disable_module!(:dmsf)
|
||||
get :index, :project_id => @project1.id
|
||||
assert_response :forbidden
|
||||
end
|
||||
|
||||
def test_index
|
||||
get :index, :project_id => @project5.id
|
||||
get :index, :project_id => @project1.id
|
||||
assert_response :success
|
||||
assert_template 'index'
|
||||
end
|
||||
|
||||
def test_new
|
||||
get :new, :project_id => @project5.id
|
||||
get :new, :project_id => @project1.id
|
||||
assert_response :success
|
||||
assert_template 'new'
|
||||
end
|
||||
@ -102,9 +131,9 @@ class DmsfWorkflowsControllerTest < RedmineDmsf::Test::TestCase
|
||||
|
||||
def test_create
|
||||
assert_difference 'DmsfWorkflow.count', +1 do
|
||||
post :create, :name => 'wf3', :project_id => @project5.id
|
||||
post :create, :name => 'wf3', :project_id => @project1.id
|
||||
end
|
||||
assert_redirected_to settings_project_path(@project5, :tab => 'dmsf_workflow')
|
||||
assert_redirected_to settings_project_path(@project1, :tab => 'dmsf_workflow')
|
||||
end
|
||||
|
||||
def test_update
|
||||
@ -113,13 +142,12 @@ class DmsfWorkflowsControllerTest < RedmineDmsf::Test::TestCase
|
||||
assert_equal 'wf1a', @wf1.name
|
||||
end
|
||||
|
||||
def test_destroy
|
||||
id = @wf1.id
|
||||
def test_destroy
|
||||
assert_difference 'DmsfWorkflow.count', -1 do
|
||||
delete :destroy, :id => @wf1.id
|
||||
end
|
||||
assert_redirected_to settings_project_path(@project5, :tab => 'dmsf_workflow')
|
||||
assert_equal 0, DmsfWorkflowStep.where(:dmsf_workflow_id => id).all.count
|
||||
assert_redirected_to settings_project_path(@project1, :tab => 'dmsf_workflow')
|
||||
assert_equal 0, DmsfWorkflowStep.where(:dmsf_workflow_id => @wf1.id).all.count
|
||||
end
|
||||
|
||||
def test_add_step
|
||||
@ -204,46 +232,42 @@ class DmsfWorkflowsControllerTest < RedmineDmsf::Test::TestCase
|
||||
assert_equal 3, @wfs3.step
|
||||
end
|
||||
|
||||
def test_action_approve
|
||||
@request.env['HTTP_REFERER'] = 'http://test.host/projects/2/dmsf'
|
||||
def test_action_approve
|
||||
post(
|
||||
:new_action,
|
||||
:commit => l(:button_submit),
|
||||
:id => @wf1.id,
|
||||
:dmsf_workflow_step_assignment_id => @wfsa2.id,
|
||||
:dmsf_file_revision_id => @revision1.id,
|
||||
:step_action => DmsfWorkflowStepAction::ACTION_APPROVE,
|
||||
:user_id => nil,
|
||||
:note => '')
|
||||
assert_redirected_to dmsf_folder_path(:id => @project1.id)
|
||||
assert DmsfWorkflowStepAction.where(
|
||||
:dmsf_workflow_step_assignment_id => @wfsa2.id,
|
||||
:action => DmsfWorkflowStepAction::ACTION_APPROVE).first
|
||||
end
|
||||
|
||||
def test_action_reject
|
||||
post(
|
||||
:new_action,
|
||||
:commit => l(:button_submit),
|
||||
:id => @wf1.id,
|
||||
:dmsf_workflow_step_assignment_id => @wfsa2.id,
|
||||
:dmsf_file_revision_id => @revision2.id,
|
||||
:step_action => DmsfWorkflowStepAction::ACTION_APPROVE,
|
||||
:user_id => nil,
|
||||
:note => '')
|
||||
:step_action => DmsfWorkflowStepAction::ACTION_REJECT,
|
||||
:note => 'Rejected because...')
|
||||
assert_response :redirect
|
||||
assert DmsfWorkflowStepAction.where(
|
||||
:dmsf_workflow_step_assignment_id => @wfsa2.id,
|
||||
:action => DmsfWorkflowStepAction::ACTION_APPROVE).first
|
||||
:action => DmsfWorkflowStepAction::ACTION_REJECT).first
|
||||
end
|
||||
#
|
||||
# def test_action_reject
|
||||
# # TODO: There is a strange error: 'ActiveRecord::RecordNotFound: Couldn't find Project with id=0'
|
||||
# # while saving the revision
|
||||
# @request.env['HTTP_REFERER'] = 'http://test.host/projects/2/dmsf'
|
||||
# post(
|
||||
# :new_action,
|
||||
# :commit => l(:button_submit),
|
||||
# :id => @wf1.id,
|
||||
# :dmsf_workflow_step_assignment_id => @wfsa2.id,
|
||||
# :dmsf_file_revision_id => @revision2.id,
|
||||
# :step_action => DmsfWorkflowStepAction::ACTION_REJECT,
|
||||
# :note => 'Rejected because...')
|
||||
# assert_response :redirect
|
||||
# assert DmsfWorkflowStepAction.where(
|
||||
# :dmsf_workflow_step_assignment_id => @wfsa2.id,
|
||||
# :action => DmsfWorkflowStepAction::ACTION_REJECT).first
|
||||
# end
|
||||
#
|
||||
|
||||
def test_action
|
||||
xhr(
|
||||
:get,
|
||||
:action,
|
||||
:project_id => @project5.id,
|
||||
:project_id => @project1.id,
|
||||
:id => @wf1.id,
|
||||
:dmsf_workflow_step_assignment_id => @wfsa2.id,
|
||||
:dmsf_file_revision_id => @revision2.id,
|
||||
@ -253,8 +277,7 @@ class DmsfWorkflowsControllerTest < RedmineDmsf::Test::TestCase
|
||||
assert_template 'action'
|
||||
end
|
||||
|
||||
def test_new_action_delegate
|
||||
@request.env['HTTP_REFERER'] = 'http://test.host/projects/2/dmsf'
|
||||
def test_new_action_delegate
|
||||
post(
|
||||
:new_action,
|
||||
:commit => l(:button_submit),
|
||||
@ -263,7 +286,7 @@ class DmsfWorkflowsControllerTest < RedmineDmsf::Test::TestCase
|
||||
:dmsf_file_revision_id => @revision2.id,
|
||||
:step_action => @user_admin.id * 10,
|
||||
:note => 'Delegated because...')
|
||||
assert_response :redirect
|
||||
assert_redirected_to dmsf_folder_path(:id => @project1.id)
|
||||
assert DmsfWorkflowStepAction.where(
|
||||
:dmsf_workflow_step_assignment_id => @wfsa2.id,
|
||||
:action => DmsfWorkflowStepAction::ACTION_DELEGATE).first
|
||||
@ -275,7 +298,7 @@ class DmsfWorkflowsControllerTest < RedmineDmsf::Test::TestCase
|
||||
xhr(
|
||||
:get,
|
||||
:assign,
|
||||
:project_id => @project5.id,
|
||||
:project_id => @project1.id,
|
||||
:id => @wf1.id,
|
||||
:dmsf_file_revision_id => @revision1.id,
|
||||
:title => l(:label_dmsf_wokflow_action_assign))
|
||||
@ -284,21 +307,21 @@ class DmsfWorkflowsControllerTest < RedmineDmsf::Test::TestCase
|
||||
assert_template 'assign'
|
||||
end
|
||||
|
||||
# def test_assignment
|
||||
# # TODO: There is a strange error: 'ActiveRecord::RecordNotFound: Couldn't find Project with id=0'
|
||||
# # while saving the revision
|
||||
# @request.env['HTTP_REFERER'] = 'http://test.host/projects/3/dmsf'
|
||||
# post(
|
||||
# :assignment,
|
||||
# :commit => l(:button_submit),
|
||||
# :id => @wf1.id,
|
||||
# :dmsf_workflow_id => @wf1.id,
|
||||
# :dmsf_file_revision_id => @revision3.id,
|
||||
# :action => 'assignment',
|
||||
# :project_id => @project5.id)
|
||||
# assert_response :redirect
|
||||
# @file1.reload
|
||||
# assert file1.locked?
|
||||
# assert true
|
||||
# end
|
||||
def test_start
|
||||
@revision2.dmsf_workflow_id = @wf1.id
|
||||
get :start, :id => @revision2.dmsf_workflow_id,:dmsf_file_revision_id => @revision2.id
|
||||
assert_redirected_to dmsf_folder_path(:id => @project1.id)
|
||||
end
|
||||
|
||||
def test_assignment
|
||||
post(
|
||||
:assignment,
|
||||
:commit => l(:button_submit),
|
||||
:id => @wf1.id,
|
||||
:dmsf_workflow_id => @wf1.id,
|
||||
:dmsf_file_revision_id => @revision2.id,
|
||||
:action => 'assignment',
|
||||
:project_id => @project1.id)
|
||||
assert_response :redirect
|
||||
end
|
||||
end
|
||||
|
||||
@ -16,7 +16,7 @@
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
|
||||
require File.dirname(__FILE__) + '/../test_helper'
|
||||
require File.expand_path('../../test_helper', __FILE__)
|
||||
|
||||
class DmsfFileTest < RedmineDmsf::Test::UnitTest
|
||||
fixtures :projects, :users, :dmsf_folders, :dmsf_files, :dmsf_file_revisions,
|
||||
|
||||
@ -18,10 +18,122 @@
|
||||
|
||||
require File.expand_path('../../test_helper', __FILE__)
|
||||
|
||||
class DmsfLinksTest < ActiveSupport::TestCase
|
||||
class DmsfLinksTest < RedmineDmsf::Test::UnitTest
|
||||
|
||||
fixtures :projects, :members, :dmsf_files, :dmsf_file_revisions,
|
||||
:dmsf_folders, :dmsf_links
|
||||
|
||||
# Replace this with your real tests.
|
||||
def test_truth
|
||||
assert true
|
||||
def setup
|
||||
@project1 = Project.find_by_id 1
|
||||
@folder1 = DmsfFolder.find_by_id 1
|
||||
@folder2 = DmsfFolder.find_by_id 2
|
||||
@file1 = DmsfFile.find_by_id 1
|
||||
@file4 = DmsfFile.find_by_id 4
|
||||
@folder_link = DmsfLink.find_by_id 1
|
||||
@file_link = DmsfLink.find_by_id 2
|
||||
end
|
||||
end
|
||||
|
||||
def test_truth
|
||||
assert_kind_of Project, @project1
|
||||
assert_kind_of DmsfFolder, @folder1
|
||||
assert_kind_of DmsfFolder, @folder2
|
||||
assert_kind_of DmsfFile, @file1
|
||||
assert_kind_of DmsfFile, @file4
|
||||
assert_kind_of DmsfLink, @folder_link
|
||||
assert_kind_of DmsfLink, @file_link
|
||||
end
|
||||
|
||||
def test_create
|
||||
# Folder link
|
||||
folder_link = DmsfLink.new(
|
||||
:target_project_id => @project1.id,
|
||||
:target_id => @folder1.id,
|
||||
:target_type => DmsfFolder.model_name,
|
||||
:name => 'folder1_link2',
|
||||
:project_id => @project1.id,
|
||||
:created_at => DateTime.now(),
|
||||
:updated_at => DateTime.now())
|
||||
assert folder_link.save
|
||||
|
||||
# File link
|
||||
file_link = DmsfLink.new(
|
||||
:target_project_id => @project1.id,
|
||||
:target_id => @file1.id,
|
||||
:target_type => DmsfFile.model_name,
|
||||
:name => 'file1_link2',
|
||||
:project_id => @project1.id,
|
||||
:created_at => DateTime.now(),
|
||||
:updated_at => DateTime.now())
|
||||
assert file_link.save
|
||||
end
|
||||
|
||||
def test_validate_name_length
|
||||
@folder_link.name = 'a' * 256
|
||||
assert !@folder_link.save
|
||||
assert_equal 1, @folder_link.errors.count
|
||||
end
|
||||
|
||||
def test_validate_name_presence
|
||||
@folder_link.name = ''
|
||||
assert !@folder_link.save
|
||||
assert_equal 1, @folder_link.errors.count
|
||||
end
|
||||
|
||||
def test_validate_target_id_presence
|
||||
@folder_link.target_id = nil
|
||||
assert !@folder_link.save
|
||||
assert_equal 1, @folder_link.errors.count
|
||||
end
|
||||
|
||||
def test_belongs_to_project
|
||||
@project1.destroy
|
||||
assert_nil DmsfLink.find_by_id 1
|
||||
assert_nil DmsfLink.find_by_id 2
|
||||
end
|
||||
|
||||
def test_belongs_to_dmsf_folder
|
||||
@folder1.destroy
|
||||
assert_nil DmsfLink.find_by_id 1
|
||||
assert_nil DmsfLink.find_by_id 2
|
||||
end
|
||||
|
||||
def test_target_folder_id
|
||||
assert_equal 2, @file_link.target_folder_id
|
||||
assert_equal 1, @folder_link.target_folder_id
|
||||
end
|
||||
|
||||
def target_folder
|
||||
assert_equal @folder2, @file_link.target_folder
|
||||
assert_equal @folder1, @folder_link.target_folder
|
||||
end
|
||||
|
||||
def target_file_id
|
||||
assert_equal 4, @file_link.target_file_id
|
||||
assert_nil @folder_link.target_file
|
||||
end
|
||||
|
||||
def target_file
|
||||
assert_equal @file4, @file_link.target_file
|
||||
assert_nil @folder_link.target_file
|
||||
end
|
||||
|
||||
def target_project
|
||||
assert_equal @project, @file_link.target_project
|
||||
assert_equal @project, @folder_link.target_project
|
||||
end
|
||||
|
||||
def folder
|
||||
assert_equal @folder1, @file_link.folder
|
||||
assert_nil @folder_link.folder
|
||||
end
|
||||
|
||||
def title
|
||||
assert_equal @file_link.name, @file_link.title
|
||||
assert_equal @folder_link.name, @folder_link.title
|
||||
end
|
||||
|
||||
def test_destroy
|
||||
@folder_link.destroy
|
||||
assert_nil DmsfLink.find_by_id 1
|
||||
end
|
||||
end
|
||||
@ -38,6 +38,7 @@ class DmsfWorkflowTest < RedmineDmsf::Test::UnitTest
|
||||
@revision1 = DmsfFileRevision.find_by_id 1
|
||||
@revision2 = DmsfFileRevision.find_by_id 2
|
||||
@project = Project.find_by_id 2
|
||||
@project5 = Project.find_by_id 5
|
||||
end
|
||||
|
||||
def test_truth
|
||||
@ -152,8 +153,8 @@ class DmsfWorkflowTest < RedmineDmsf::Test::UnitTest
|
||||
|
||||
def test_delegates
|
||||
delegates = @wf1.delegates(nil, nil, nil)
|
||||
assert_equal delegates.size, User.active.all.size
|
||||
delegates = @wf1.delegates('Redmine', nil, nil)
|
||||
assert_equal(delegates.all.count + 1, @project5.users.all.count)
|
||||
delegates = @wf1.delegates('Dave', nil, nil)
|
||||
assert_equal delegates.size, 1
|
||||
delegates = @wf1.delegates(nil, @wfsa1.id, 2)
|
||||
assert !delegates.any?{|user| user.id == @wfsa1.user_id}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user