-# Redmine - project management software\r
-# Copyright (C) 2006-2009 Jean-Philippe Lang\r
-#\r
-# This program is free software; you can redistribute it and/or\r
-# modify it under the terms of the GNU General Public License\r
-# as published by the Free Software Foundation; either version 2\r
-# of the License, or (at your option) any later version.\r
-# \r
-# This program is distributed in the hope that it will be useful,\r
-# but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r
-# GNU General Public License for more details.\r
-# \r
-# You should have received a copy of the GNU General Public License\r
-# along with this program; if not, write to the Free Software\r
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\r
-\r
-class Principal < ActiveRecord::Base\r
- set_table_name 'users'\r
-\r
- has_many :members, :foreign_key => 'user_id', :dependent => :destroy\r
- has_many :memberships, :class_name => 'Member', :foreign_key => 'user_id', :include => [ :project, :roles ], :conditions => "#{Project.table_name}.status=#{Project::STATUS_ACTIVE}", :order => "#{Project.table_name}.name"\r
- has_many :projects, :through => :memberships\r
-\r
- # Groups and active users\r
- named_scope :active, :conditions => "#{Principal.table_name}.type='Group' OR (#{Principal.table_name}.type='User' AND #{Principal.table_name}.status = 1)"\r
- \r
- named_scope :like, lambda {|q| \r
- s = "%#{q.to_s.strip.downcase}%"\r
- {:conditions => ["LOWER(login) LIKE ? OR LOWER(firstname) LIKE ? OR LOWER(lastname) LIKE ?", s, s, s],\r
- :order => 'type, login, lastname, firstname'\r
- }\r
- }\r
- \r
- def <=>(principal)\r
- self.to_s.downcase <=> principal.to_s.downcase\r
- end\r
-end\r
+# Redmine - project management software
+# Copyright (C) 2006-2009 Jean-Philippe Lang
+#
+# 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 Principal < ActiveRecord::Base
+ set_table_name 'users'
+
+ has_many :members, :foreign_key => 'user_id', :dependent => :destroy
+ has_many :memberships, :class_name => 'Member', :foreign_key => 'user_id', :include => [ :project, :roles ], :conditions => "#{Project.table_name}.status=#{Project::STATUS_ACTIVE}", :order => "#{Project.table_name}.name"
+ has_many :projects, :through => :memberships
+
+ # Groups and active users
+ named_scope :active, :conditions => "#{Principal.table_name}.type='Group' OR (#{Principal.table_name}.type='User' AND #{Principal.table_name}.status = 1)"
+
+ named_scope :like, lambda {|q|
+ s = "%#{q.to_s.strip.downcase}%"
+ {:conditions => ["LOWER(login) LIKE ? OR LOWER(firstname) LIKE ? OR LOWER(lastname) LIKE ?", s, s, s],
+ :order => 'type, login, lastname, firstname'
+ }
+ }
+
+ def <=>(principal)
+ self.to_s.downcase <=> principal.to_s.downcase
+ end
+end
-<h3><%=l(:label_watched_issues)%> (<%= Issue.visible.count(:include => :watchers,\r
- :conditions => ["#{Watcher.table_name}.user_id = ?", user.id]) %>)</h3>\r
-<% watched_issues = Issue.visible.find(:all, \r
- :include => [:status, :project, :tracker, :watchers],\r
- :limit => 10, \r
- :conditions => ["#{Watcher.table_name}.user_id = ?", user.id],\r
- :order => "#{Issue.table_name}.updated_on DESC") %>\r
-\r
-<%= render :partial => 'issues/list_simple', :locals => { :issues => watched_issues } %>\r
-<% if watched_issues.length > 0 %>\r
-<p class="small"><%= link_to l(:label_issue_view_all), :controller => 'issues',\r
- :action => 'index',\r
- :set_filter => 1,\r
- :watcher_id => 'me',\r
- :sort => 'updated_on:desc' %></p>\r
-<% end %>\r
+<h3><%=l(:label_watched_issues)%> (<%= Issue.visible.count(:include => :watchers,
+ :conditions => ["#{Watcher.table_name}.user_id = ?", user.id]) %>)</h3>
+<% watched_issues = Issue.visible.find(:all,
+ :include => [:status, :project, :tracker, :watchers],
+ :limit => 10,
+ :conditions => ["#{Watcher.table_name}.user_id = ?", user.id],
+ :order => "#{Issue.table_name}.updated_on DESC") %>
+
+<%= render :partial => 'issues/list_simple', :locals => { :issues => watched_issues } %>
+<% if watched_issues.length > 0 %>
+<p class="small"><%= link_to l(:label_issue_view_all), :controller => 'issues',
+ :action => 'index',
+ :set_filter => 1,
+ :watcher_id => 'me',
+ :sort => 'updated_on:desc' %></p>
+<% end %>
-<h2><%= l(:label_query_new) %></h2>\r
-\r
-<% form_tag({:action => 'new', :project_id => @query.project}, :onsubmit => 'selectAllOptions("selected_columns");') do %>\r
- <%= render :partial => 'form', :locals => {:query => @query} %>\r
- <%= submit_tag l(:button_save) %>\r
-<% end %>\r
+<h2><%= l(:label_query_new) %></h2>
+
+<% form_tag({:action => 'new', :project_id => @query.project}, :onsubmit => 'selectAllOptions("selected_columns");') do %>
+ <%= render :partial => 'form', :locals => {:query => @query} %>
+ <%= submit_tag l(:button_save) %>
+<% end %>
-<h2><%= l(:label_statistics) %></h2>\r
-\r
-<p>\r
-<%= tag("embed", :width => 800, :height => 300, :type => "image/svg+xml", :src => url_for(:controller => 'repositories', :action => 'graph', :id => @project, :graph => "commits_per_month")) %>\r
-</p>\r
-<p>\r
-<%= tag("embed", :width => 800, :height => 400, :type => "image/svg+xml", :src => url_for(:controller => 'repositories', :action => 'graph', :id => @project, :graph => "commits_per_author")) %>\r
-</p>\r
-\r
-<p><%= link_to l(:button_back), :action => 'show', :id => @project %></p>\r
-\r
-<% html_title(l(:label_repository), l(:label_statistics)) -%>\r
+<h2><%= l(:label_statistics) %></h2>
+
+<p>
+<%= tag("embed", :width => 800, :height => 300, :type => "image/svg+xml", :src => url_for(:controller => 'repositories', :action => 'graph', :id => @project, :graph => "commits_per_month")) %>
+</p>
+<p>
+<%= tag("embed", :width => 800, :height => 400, :type => "image/svg+xml", :src => url_for(:controller => 'repositories', :action => 'graph', :id => @project, :graph => "commits_per_author")) %>
+</p>
+
+<p><%= link_to l(:button_back), :action => 'show', :id => @project %></p>
+
+<% html_title(l(:label_repository), l(:label_statistics)) -%>
-<h2><%= l(:label_search) %></h2>\r
-\r
-<div class="box">\r
-<% form_tag({}, :method => :get) do %>\r
-<p><%= text_field_tag 'q', @question, :size => 60, :id => 'search-input' %>\r
-<%= javascript_tag "Field.focus('search-input')" %>\r
-<%= project_select_tag %>\r
-<label><%= check_box_tag 'all_words', 1, @all_words %> <%= l(:label_all_words) %></label>\r
-<label><%= check_box_tag 'titles_only', 1, @titles_only %> <%= l(:label_search_titles_only) %></label>\r
-</p>\r
-<p>\r
-<% @object_types.each do |t| %>\r
-<label><%= check_box_tag t, 1, @scope.include?(t) %> <%= type_label(t) %></label>\r
-<% end %>\r
-</p>\r
-\r
-<p><%= submit_tag l(:button_submit), :name => 'submit' %></p>\r
-<% end %>\r
-</div>\r
-\r
-<% if @results %>\r
- <div id="search-results-counts">\r
- <%= render_results_by_type(@results_by_type) unless @scope.size == 1 %>\r
- </div>\r
- \r
- <h3><%= l(:label_result_plural) %> (<%= @results_by_type.values.sum %>)</h3>\r
- <dl id="search-results">\r
- <% @results.each do |e| %>\r
- <dt class="<%= e.event_type %>"><%= content_tag('span', h(e.project), :class => 'project') unless @project == e.project %> <%= link_to highlight_tokens(truncate(e.event_title, :length => 255), @tokens), e.event_url %></dt>\r
- <dd><span class="description"><%= highlight_tokens(e.event_description, @tokens) %></span>\r
- <span class="author"><%= format_time(e.event_datetime) %></span></dd>\r
- <% end %>\r
- </dl>\r
-<% end %>\r
-\r
-<p><center>\r
-<% if @pagination_previous_date %>\r
-<%= link_to_remote ('« ' + l(:label_previous)),\r
- {:update => :content,\r
- :url => params.merge(:previous => 1, :offset => @pagination_previous_date.strftime("%Y%m%d%H%M%S"))\r
- }, :href => url_for(params.merge(:previous => 1, :offset => @pagination_previous_date.strftime("%Y%m%d%H%M%S"))) %> \r
-<% end %>\r
-<% if @pagination_next_date %>\r
-<%= link_to_remote (l(:label_next) + ' »'),\r
- {:update => :content,\r
- :url => params.merge(:previous => nil, :offset => @pagination_next_date.strftime("%Y%m%d%H%M%S"))\r
- }, :href => url_for(params.merge(:previous => nil, :offset => @pagination_next_date.strftime("%Y%m%d%H%M%S"))) %>\r
-<% end %>\r
-</center></p>\r
-\r
-<% html_title(l(:label_search)) -%>\r
+<h2><%= l(:label_search) %></h2>
+
+<div class="box">
+<% form_tag({}, :method => :get) do %>
+<p><%= text_field_tag 'q', @question, :size => 60, :id => 'search-input' %>
+<%= javascript_tag "Field.focus('search-input')" %>
+<%= project_select_tag %>
+<label><%= check_box_tag 'all_words', 1, @all_words %> <%= l(:label_all_words) %></label>
+<label><%= check_box_tag 'titles_only', 1, @titles_only %> <%= l(:label_search_titles_only) %></label>
+</p>
+<p>
+<% @object_types.each do |t| %>
+<label><%= check_box_tag t, 1, @scope.include?(t) %> <%= type_label(t) %></label>
+<% end %>
+</p>
+
+<p><%= submit_tag l(:button_submit), :name => 'submit' %></p>
+<% end %>
+</div>
+
+<% if @results %>
+ <div id="search-results-counts">
+ <%= render_results_by_type(@results_by_type) unless @scope.size == 1 %>
+ </div>
+
+ <h3><%= l(:label_result_plural) %> (<%= @results_by_type.values.sum %>)</h3>
+ <dl id="search-results">
+ <% @results.each do |e| %>
+ <dt class="<%= e.event_type %>"><%= content_tag('span', h(e.project), :class => 'project') unless @project == e.project %> <%= link_to highlight_tokens(truncate(e.event_title, :length => 255), @tokens), e.event_url %></dt>
+ <dd><span class="description"><%= highlight_tokens(e.event_description, @tokens) %></span>
+ <span class="author"><%= format_time(e.event_datetime) %></span></dd>
+ <% end %>
+ </dl>
+<% end %>
+
+<p><center>
+<% if @pagination_previous_date %>
+<%= link_to_remote ('« ' + l(:label_previous)),
+ {:update => :content,
+ :url => params.merge(:previous => 1, :offset => @pagination_previous_date.strftime("%Y%m%d%H%M%S"))
+ }, :href => url_for(params.merge(:previous => 1, :offset => @pagination_previous_date.strftime("%Y%m%d%H%M%S"))) %>
+<% end %>
+<% if @pagination_next_date %>
+<%= link_to_remote (l(:label_next) + ' »'),
+ {:update => :content,
+ :url => params.merge(:previous => nil, :offset => @pagination_next_date.strftime("%Y%m%d%H%M%S"))
+ }, :href => url_for(params.merge(:previous => nil, :offset => @pagination_next_date.strftime("%Y%m%d%H%M%S"))) %>
+<% end %>
+</center></p>
+
+<% html_title(l(:label_search)) -%>
-<div class="contextual">\r
-<%= link_to_if_authorized l(:button_log_time), {:controller => 'timelog', :action => 'edit', :project_id => @project, :issue_id => @issue}, :class => 'icon icon-time-add' %>\r
-</div>\r
-\r
-<%= render_timelog_breadcrumb %>\r
-\r
-<h2><%= l(:label_spent_time) %></h2>\r
-\r
-<% form_remote_tag( :url => {}, :html => {:method => :get, :id => 'query_form'}, :method => :get, :update => 'content' ) do %>\r
-<%# TOOD: remove the project_id and issue_id hidden fields, that information is\r
-already in the URI %>\r
-<%= hidden_field_tag('project_id', params[:project_id]) if @project %>\r
-<%= hidden_field_tag 'issue_id', params[:issue_id] if @issue %>\r
-<%= render :partial => 'date_range' %>\r
-<% end %>\r
-\r
-<div class="total-hours">\r
-<p><%= l(:label_total) %>: <%= html_hours(l_hours(@total_hours)) %></p>\r
-</div>\r
-\r
-<% unless @entries.empty? %>\r
-<%= render :partial => 'list', :locals => { :entries => @entries }%>\r
-<p class="pagination"><%= pagination_links_full @entry_pages, @entry_count %></p>\r
-\r
-<% other_formats_links do |f| %>\r
- <%= f.link_to 'Atom', :url => params.merge({:issue_id => @issue, :key => User.current.rss_key}) %>\r
- <%= f.link_to 'CSV', :url => params %>\r
-<% end %>\r
-<% end %>\r
-\r
-<% html_title l(:label_spent_time), l(:label_details) %>\r
-\r
-<% content_for :header_tags do %>\r
- <%= auto_discovery_link_tag(:atom, {:issue_id => @issue, :format => 'atom', :key => User.current.rss_key}, :title => l(:label_spent_time)) %>\r
-<% end %>\r
+<div class="contextual">
+<%= link_to_if_authorized l(:button_log_time), {:controller => 'timelog', :action => 'edit', :project_id => @project, :issue_id => @issue}, :class => 'icon icon-time-add' %>
+</div>
+
+<%= render_timelog_breadcrumb %>
+
+<h2><%= l(:label_spent_time) %></h2>
+
+<% form_remote_tag( :url => {}, :html => {:method => :get, :id => 'query_form'}, :method => :get, :update => 'content' ) do %>
+<%# TOOD: remove the project_id and issue_id hidden fields, that information is
+already in the URI %>
+<%= hidden_field_tag('project_id', params[:project_id]) if @project %>
+<%= hidden_field_tag 'issue_id', params[:issue_id] if @issue %>
+<%= render :partial => 'date_range' %>
+<% end %>
+
+<div class="total-hours">
+<p><%= l(:label_total) %>: <%= html_hours(l_hours(@total_hours)) %></p>
+</div>
+
+<% unless @entries.empty? %>
+<%= render :partial => 'list', :locals => { :entries => @entries }%>
+<p class="pagination"><%= pagination_links_full @entry_pages, @entry_count %></p>
+
+<% other_formats_links do |f| %>
+ <%= f.link_to 'Atom', :url => params.merge({:issue_id => @issue, :key => User.current.rss_key}) %>
+ <%= f.link_to 'CSV', :url => params %>
+<% end %>
+<% end %>
+
+<% html_title l(:label_spent_time), l(:label_details) %>
+
+<% content_for :header_tags do %>
+ <%= auto_discovery_link_tag(:atom, {:issue_id => @issue, :format => 'atom', :key => User.current.rss_key}, :title => l(:label_spent_time)) %>
+<% end %>
-<h2><%= l(:label_spent_time) %></h2>\r
-\r
-<% labelled_tabular_form_for :time_entry, @time_entry, :url => {:action => 'edit', :id => @time_entry, :project_id => @time_entry.project} do |f| %>\r
-<%= error_messages_for 'time_entry' %>\r
-<%= back_url_hidden_field_tag %>\r
-\r
-<div class="box">\r
-<p><%= f.text_field :issue_id, :size => 6 %> <em><%= h("#{@time_entry.issue.tracker.name} ##{@time_entry.issue.id}: #{@time_entry.issue.subject}") if @time_entry.issue %></em></p>\r
-<p><%= f.text_field :spent_on, :size => 10, :required => true %><%= calendar_for('time_entry_spent_on') %></p>\r
-<p><%= f.text_field :hours, :size => 6, :required => true %></p>\r
-<p><%= f.text_field :comments, :size => 100 %></p>\r
-<p><%= f.select :activity_id, activity_collection_for_select_options, :required => true %></p>\r
-<% @time_entry.custom_field_values.each do |value| %>\r
- <p><%= custom_field_tag_with_label :time_entry, value %></p>\r
-<% end %>\r
-<%= call_hook(:view_timelog_edit_form_bottom, { :time_entry => @time_entry, :form => f }) %>\r
-</div>\r
-\r
-<%= submit_tag l(:button_save) %>\r
-\r
-<% end %>\r
+<h2><%= l(:label_spent_time) %></h2>
+
+<% labelled_tabular_form_for :time_entry, @time_entry, :url => {:action => 'edit', :id => @time_entry, :project_id => @time_entry.project} do |f| %>
+<%= error_messages_for 'time_entry' %>
+<%= back_url_hidden_field_tag %>
+
+<div class="box">
+<p><%= f.text_field :issue_id, :size => 6 %> <em><%= h("#{@time_entry.issue.tracker.name} ##{@time_entry.issue.id}: #{@time_entry.issue.subject}") if @time_entry.issue %></em></p>
+<p><%= f.text_field :spent_on, :size => 10, :required => true %><%= calendar_for('time_entry_spent_on') %></p>
+<p><%= f.text_field :hours, :size => 6, :required => true %></p>
+<p><%= f.text_field :comments, :size => 100 %></p>
+<p><%= f.select :activity_id, activity_collection_for_select_options, :required => true %></p>
+<% @time_entry.custom_field_values.each do |value| %>
+ <p><%= custom_field_tag_with_label :time_entry, value %></p>
+<% end %>
+<%= call_hook(:view_timelog_edit_form_bottom, { :time_entry => @time_entry, :form => f }) %>
+</div>
+
+<%= submit_tag l(:button_save) %>
+
+<% end %>
label_descending: Opadajuće
label_greater_or_equal: ">="
label_less_or_equal: <=
- text_wiki_page_destroy_question: This page has {{descendants}} child page(s) and descendant(s). What do you want to do?\r
- text_wiki_page_reassign_children: Reassign child pages to this parent page\r
- text_wiki_page_nullify_children: Keep child pages as root pages\r
- text_wiki_page_destroy_children: Delete child pages and all their descendants\r
- setting_password_min_length: Minimum password length\r
- field_group_by: Group results by\r
- mail_subject_wiki_content_updated: "'{{page}}' wiki page has been updated"\r
- label_wiki_content_added: Wiki page added\r
- mail_subject_wiki_content_added: "'{{page}}' wiki page has been added"\r
- mail_body_wiki_content_added: The '{{page}}' wiki page has been added by {{author}}.\r
- label_wiki_content_updated: Wiki page updated\r
- mail_body_wiki_content_updated: The '{{page}}' wiki page has been updated by {{author}}.\r
- permission_add_project: Create project\r
- setting_new_project_user_role_id: Role given to a non-admin user who creates a project\r
+ text_wiki_page_destroy_question: This page has {{descendants}} child page(s) and descendant(s). What do you want to do?
+ text_wiki_page_reassign_children: Reassign child pages to this parent page
+ text_wiki_page_nullify_children: Keep child pages as root pages
+ text_wiki_page_destroy_children: Delete child pages and all their descendants
+ setting_password_min_length: Minimum password length
+ field_group_by: Group results by
+ mail_subject_wiki_content_updated: "'{{page}}' wiki page has been updated"
+ label_wiki_content_added: Wiki page added
+ mail_subject_wiki_content_added: "'{{page}}' wiki page has been added"
+ mail_body_wiki_content_added: The '{{page}}' wiki page has been added by {{author}}.
+ label_wiki_content_updated: Wiki page updated
+ mail_body_wiki_content_updated: The '{{page}}' wiki page has been updated by {{author}}.
+ permission_add_project: Create project
+ setting_new_project_user_role_id: Role given to a non-admin user who creates a project
label_view_all_revisions: View all revisions
label_tag: Tag
label_branch: Branch
text_journal_changed: "{{label}} changed from {{old}} to {{new}}"
text_journal_set_to: "{{label}} set to {{value}}"
text_journal_deleted: "{{label}} deleted"
- label_group_plural: Groups\r
- label_group: Group\r
- label_group_new: New group\r
- label_time_entry_plural: Spent time\r
+ label_group_plural: Groups
+ label_group: Group
+ label_group_new: New group
+ label_time_entry_plural: Spent time
text_journal_changed: "{{label}} changed from {{old}} to {{new}}"
text_journal_set_to: "{{label}} set to {{value}}"
text_journal_deleted: "{{label}} deleted"
- label_group_plural: Groups\r
- label_group: Group\r
- label_group_new: New group\r
- label_time_entry_plural: Spent time\r
+ label_group_plural: Groups
+ label_group: Group
+ label_group_new: New group
+ label_time_entry_plural: Spent time
---- \r
-attachments_001: \r
- created_on: 2006-07-19 21:07:27 +02:00\r
- downloads: 0\r
- content_type: text/plain\r
- disk_filename: 060719210727_error281.txt\r
- container_id: 3\r
- digest: b91e08d0cf966d5c6ff411bd8c4cc3a2\r
- id: 1\r
- container_type: Issue\r
- filesize: 28\r
- filename: error281.txt\r
- author_id: 2\r
-attachments_002: \r
- created_on: 2006-07-19 21:07:27 +02:00\r
- downloads: 0\r
- content_type: text/plain\r
- disk_filename: 060719210727_document.txt\r
- container_id: 1\r
- digest: b91e08d0cf966d5c6ff411bd8c4cc3a2\r
- id: 2\r
- container_type: Document\r
- filesize: 28\r
- filename: document.txt\r
- author_id: 2\r
-attachments_003: \r
- created_on: 2006-07-19 21:07:27 +02:00\r
- downloads: 0\r
- content_type: image/gif\r
- disk_filename: 060719210727_logo.gif\r
- container_id: 4\r
- digest: b91e08d0cf966d5c6ff411bd8c4cc3a2\r
- id: 3\r
- container_type: WikiPage\r
- filesize: 280\r
- filename: logo.gif\r
- description: This is a logo\r
- author_id: 2\r
-attachments_004: \r
- created_on: 2006-07-19 21:07:27 +02:00\r
- container_type: Issue\r
- container_id: 3\r
- downloads: 0\r
- disk_filename: 060719210727_source.rb\r
- digest: b91e08d0cf966d5c6ff411bd8c4cc3a2\r
- id: 4\r
- filesize: 153\r
- filename: source.rb\r
- author_id: 2\r
- description: This is a Ruby source file\r
- content_type: application/x-ruby\r
-attachments_005: \r
- created_on: 2006-07-19 21:07:27 +02:00\r
- container_type: Issue\r
- container_id: 3\r
- downloads: 0\r
- disk_filename: 060719210727_changeset.diff\r
- digest: b91e08d0cf966d5c6ff411bd8c4cc3a2\r
- id: 5\r
- filesize: 687\r
- filename: changeset.diff\r
- author_id: 2\r
- content_type: text/x-diff\r
-attachments_006: \r
- created_on: 2006-07-19 21:07:27 +02:00\r
- container_type: Issue\r
- container_id: 3\r
- downloads: 0\r
- disk_filename: 060719210727_archive.zip\r
- digest: b91e08d0cf966d5c6ff411bd8c4cc3a2\r
- id: 6\r
- filesize: 157\r
- filename: archive.zip\r
- author_id: 2\r
- content_type: application/octet-stream\r
-attachments_007: \r
- created_on: 2006-07-19 21:07:27 +02:00\r
- container_type: Issue\r
- container_id: 4\r
- downloads: 0\r
- disk_filename: 060719210727_archive.zip\r
- digest: b91e08d0cf966d5c6ff411bd8c4cc3a2\r
- id: 7\r
- filesize: 157\r
- filename: archive.zip\r
- author_id: 1\r
- content_type: application/octet-stream\r
-attachments_008: \r
- created_on: 2006-07-19 21:07:27 +02:00\r
- container_type: Project\r
- container_id: 1\r
- downloads: 0\r
- disk_filename: 060719210727_project_file.zip\r
- digest: b91e08d0cf966d5c6ff411bd8c4cc3a2\r
- id: 8\r
- filesize: 320\r
- filename: project_file.zip\r
- author_id: 2\r
- content_type: application/octet-stream\r
-attachments_009: \r
- created_on: 2006-07-19 21:07:27 +02:00\r
- container_type: Version\r
- container_id: 1\r
- downloads: 0\r
- disk_filename: 060719210727_version_file.zip\r
- digest: b91e08d0cf966d5c6ff411bd8c4cc3a2\r
- id: 9\r
- filesize: 452\r
- filename: version_file.zip\r
- author_id: 2\r
- content_type: application/octet-stream\r
-attachments_010: \r
- created_on: 2006-07-19 21:07:27 +02:00\r
- container_type: Issue\r
- container_id: 2\r
- downloads: 0\r
- disk_filename: 060719210727_picture.jpg\r
- digest: b91e08d0cf966d5c6ff411bd8c4cc3a2\r
- id: 10\r
- filesize: 452\r
- filename: picture.jpg\r
- author_id: 2\r
- content_type: image/jpeg\r
+---
+attachments_001:
+ created_on: 2006-07-19 21:07:27 +02:00
+ downloads: 0
+ content_type: text/plain
+ disk_filename: 060719210727_error281.txt
+ container_id: 3
+ digest: b91e08d0cf966d5c6ff411bd8c4cc3a2
+ id: 1
+ container_type: Issue
+ filesize: 28
+ filename: error281.txt
+ author_id: 2
+attachments_002:
+ created_on: 2006-07-19 21:07:27 +02:00
+ downloads: 0
+ content_type: text/plain
+ disk_filename: 060719210727_document.txt
+ container_id: 1
+ digest: b91e08d0cf966d5c6ff411bd8c4cc3a2
+ id: 2
+ container_type: Document
+ filesize: 28
+ filename: document.txt
+ author_id: 2
+attachments_003:
+ created_on: 2006-07-19 21:07:27 +02:00
+ downloads: 0
+ content_type: image/gif
+ disk_filename: 060719210727_logo.gif
+ container_id: 4
+ digest: b91e08d0cf966d5c6ff411bd8c4cc3a2
+ id: 3
+ container_type: WikiPage
+ filesize: 280
+ filename: logo.gif
+ description: This is a logo
+ author_id: 2
+attachments_004:
+ created_on: 2006-07-19 21:07:27 +02:00
+ container_type: Issue
+ container_id: 3
+ downloads: 0
+ disk_filename: 060719210727_source.rb
+ digest: b91e08d0cf966d5c6ff411bd8c4cc3a2
+ id: 4
+ filesize: 153
+ filename: source.rb
+ author_id: 2
+ description: This is a Ruby source file
+ content_type: application/x-ruby
+attachments_005:
+ created_on: 2006-07-19 21:07:27 +02:00
+ container_type: Issue
+ container_id: 3
+ downloads: 0
+ disk_filename: 060719210727_changeset.diff
+ digest: b91e08d0cf966d5c6ff411bd8c4cc3a2
+ id: 5
+ filesize: 687
+ filename: changeset.diff
+ author_id: 2
+ content_type: text/x-diff
+attachments_006:
+ created_on: 2006-07-19 21:07:27 +02:00
+ container_type: Issue
+ container_id: 3
+ downloads: 0
+ disk_filename: 060719210727_archive.zip
+ digest: b91e08d0cf966d5c6ff411bd8c4cc3a2
+ id: 6
+ filesize: 157
+ filename: archive.zip
+ author_id: 2
+ content_type: application/octet-stream
+attachments_007:
+ created_on: 2006-07-19 21:07:27 +02:00
+ container_type: Issue
+ container_id: 4
+ downloads: 0
+ disk_filename: 060719210727_archive.zip
+ digest: b91e08d0cf966d5c6ff411bd8c4cc3a2
+ id: 7
+ filesize: 157
+ filename: archive.zip
+ author_id: 1
+ content_type: application/octet-stream
+attachments_008:
+ created_on: 2006-07-19 21:07:27 +02:00
+ container_type: Project
+ container_id: 1
+ downloads: 0
+ disk_filename: 060719210727_project_file.zip
+ digest: b91e08d0cf966d5c6ff411bd8c4cc3a2
+ id: 8
+ filesize: 320
+ filename: project_file.zip
+ author_id: 2
+ content_type: application/octet-stream
+attachments_009:
+ created_on: 2006-07-19 21:07:27 +02:00
+ container_type: Version
+ container_id: 1
+ downloads: 0
+ disk_filename: 060719210727_version_file.zip
+ digest: b91e08d0cf966d5c6ff411bd8c4cc3a2
+ id: 9
+ filesize: 452
+ filename: version_file.zip
+ author_id: 2
+ content_type: application/octet-stream
+attachments_010:
+ created_on: 2006-07-19 21:07:27 +02:00
+ container_type: Issue
+ container_id: 2
+ downloads: 0
+ disk_filename: 060719210727_picture.jpg
+ digest: b91e08d0cf966d5c6ff411bd8c4cc3a2
+ id: 10
+ filesize: 452
+ filename: picture.jpg
+ author_id: 2
+ content_type: image/jpeg
\ No newline at end of file
---- \r
-boards_001: \r
- name: Help\r
- project_id: 1\r
- topics_count: 2\r
- id: 1\r
- description: Help board\r
- position: 1\r
- last_message_id: 6\r
- messages_count: 6\r
-boards_002: \r
- name: Discussion\r
- project_id: 1\r
- topics_count: 0\r
- id: 2\r
- description: Discussion board\r
- position: 2\r
- last_message_id: \r
- messages_count: 0\r
+---
+boards_001:
+ name: Help
+ project_id: 1
+ topics_count: 2
+ id: 1
+ description: Help board
+ position: 1
+ last_message_id: 6
+ messages_count: 6
+boards_002:
+ name: Discussion
+ project_id: 1
+ topics_count: 0
+ id: 2
+ description: Discussion board
+ position: 2
+ last_message_id:
+ messages_count: 0
---- \r
-changes_001: \r
- id: 1\r
- changeset_id: 100\r
- action: A\r
- path: /test/some/path/in/the/repo\r
- from_path:\r
- from_revision:\r
-changes_002: \r
- id: 2\r
- changeset_id: 100\r
- action: A\r
- path: /test/some/path/elsewhere/in/the/repo\r
- from_path:\r
- from_revision:\r
-changes_003: \r
- id: 3\r
- changeset_id: 101\r
- action: M\r
- path: /test/some/path/in/the/repo\r
- from_path:\r
- from_revision:\r
+---
+changes_001:
+ id: 1
+ changeset_id: 100
+ action: A
+ path: /test/some/path/in/the/repo
+ from_path:
+ from_revision:
+changes_002:
+ id: 2
+ changeset_id: 100
+ action: A
+ path: /test/some/path/elsewhere/in/the/repo
+ from_path:
+ from_revision:
+changes_003:
+ id: 3
+ changeset_id: 101
+ action: M
+ path: /test/some/path/in/the/repo
+ from_path:
+ from_revision:
\ No newline at end of file
---- \r
-changesets_001: \r
- commit_date: 2007-04-11\r
- committed_on: 2007-04-11 15:14:44 +02:00\r
- revision: 1\r
- id: 100\r
- comments: My very first commit\r
- repository_id: 10\r
- committer: dlopper\r
- user_id: 3\r
-changesets_002: \r
- commit_date: 2007-04-12\r
- committed_on: 2007-04-12 15:14:44 +02:00\r
- revision: 2\r
- id: 101\r
- comments: 'This commit fixes #1, #2 and references #1 & #3'\r
- repository_id: 10\r
- committer: dlopper\r
- user_id: 3\r
-changesets_003: \r
- commit_date: 2007-04-12\r
- committed_on: 2007-04-12 15:14:44 +02:00\r
- revision: 3\r
- id: 102\r
- comments: |-\r
- A commit with wrong issue ids\r
- IssueID 666 3\r
- repository_id: 10\r
- committer: dlopper\r
- user_id: 3\r
-changesets_004: \r
- commit_date: 2007-04-12\r
- committed_on: 2007-04-12 15:14:44 +02:00\r
- revision: 4\r
- id: 103\r
- comments: |-\r
- A commit with an issue id of an other project\r
- IssueID 4 2\r
- repository_id: 10\r
- committer: dlopper\r
- user_id: 3\r
-changesets_005: \r
- commit_date: "2007-09-10"\r
- comments: Modified one file in the folder.\r
- committed_on: 2007-09-10 19:01:08\r
- revision: "5"\r
- id: 104\r
- scmid:\r
- user_id: 3\r
- repository_id: 10\r
- committer: dlopper\r
-changesets_006: \r
- commit_date: "2007-09-10"\r
- comments: Moved helloworld.rb from / to /folder.\r
- committed_on: 2007-09-10 19:01:47\r
- revision: "6"\r
- id: 105\r
- scmid:\r
- user_id: 3\r
- repository_id: 10\r
- committer: dlopper\r
-changesets_007: \r
- commit_date: "2007-09-10"\r
- comments: Removed one file.\r
- committed_on: 2007-09-10 19:02:16\r
- revision: "7"\r
- id: 106\r
- scmid:\r
- user_id: 3\r
- repository_id: 10\r
- committer: dlopper\r
-changesets_008: \r
- commit_date: "2007-09-10"\r
- comments: |-\r
- This commits references an issue.\r
- Refs #2\r
- committed_on: 2007-09-10 19:04:35\r
- revision: "8"\r
- id: 107\r
- scmid:\r
- user_id: 3\r
- repository_id: 10\r
- committer: dlopper\r
+---
+changesets_001:
+ commit_date: 2007-04-11
+ committed_on: 2007-04-11 15:14:44 +02:00
+ revision: 1
+ id: 100
+ comments: My very first commit
+ repository_id: 10
+ committer: dlopper
+ user_id: 3
+changesets_002:
+ commit_date: 2007-04-12
+ committed_on: 2007-04-12 15:14:44 +02:00
+ revision: 2
+ id: 101
+ comments: 'This commit fixes #1, #2 and references #1 & #3'
+ repository_id: 10
+ committer: dlopper
+ user_id: 3
+changesets_003:
+ commit_date: 2007-04-12
+ committed_on: 2007-04-12 15:14:44 +02:00
+ revision: 3
+ id: 102
+ comments: |-
+ A commit with wrong issue ids
+ IssueID 666 3
+ repository_id: 10
+ committer: dlopper
+ user_id: 3
+changesets_004:
+ commit_date: 2007-04-12
+ committed_on: 2007-04-12 15:14:44 +02:00
+ revision: 4
+ id: 103
+ comments: |-
+ A commit with an issue id of an other project
+ IssueID 4 2
+ repository_id: 10
+ committer: dlopper
+ user_id: 3
+changesets_005:
+ commit_date: "2007-09-10"
+ comments: Modified one file in the folder.
+ committed_on: 2007-09-10 19:01:08
+ revision: "5"
+ id: 104
+ scmid:
+ user_id: 3
+ repository_id: 10
+ committer: dlopper
+changesets_006:
+ commit_date: "2007-09-10"
+ comments: Moved helloworld.rb from / to /folder.
+ committed_on: 2007-09-10 19:01:47
+ revision: "6"
+ id: 105
+ scmid:
+ user_id: 3
+ repository_id: 10
+ committer: dlopper
+changesets_007:
+ commit_date: "2007-09-10"
+ comments: Removed one file.
+ committed_on: 2007-09-10 19:02:16
+ revision: "7"
+ id: 106
+ scmid:
+ user_id: 3
+ repository_id: 10
+ committer: dlopper
+changesets_008:
+ commit_date: "2007-09-10"
+ comments: |-
+ This commits references an issue.
+ Refs #2
+ committed_on: 2007-09-10 19:04:35
+ revision: "8"
+ id: 107
+ scmid:
+ user_id: 3
+ repository_id: 10
+ committer: dlopper
\ No newline at end of file
---- \r
-custom_fields_001: \r
- name: Database\r
- min_length: 0\r
- regexp: ""\r
- is_for_all: true\r
- is_filter: true\r
- type: IssueCustomField\r
- max_length: 0\r
- possible_values: \r
- - MySQL\r
- - PostgreSQL\r
- - Oracle\r
- id: 1\r
- is_required: false\r
- field_format: list\r
- default_value: ""\r
- editable: true\r
-custom_fields_002: \r
- name: Searchable field\r
- min_length: 1\r
- regexp: ""\r
- is_for_all: true\r
- type: IssueCustomField\r
- max_length: 100\r
- possible_values: ""\r
- id: 2\r
- is_required: false\r
- field_format: string\r
- searchable: true\r
- default_value: "Default string"\r
- editable: true\r
-custom_fields_003: \r
- name: Development status\r
- min_length: 0\r
- regexp: ""\r
- is_for_all: false\r
- is_filter: true\r
- type: ProjectCustomField\r
- max_length: 0\r
- possible_values: \r
- - Stable\r
- - Beta\r
- - Alpha\r
- - Planning\r
- id: 3\r
- is_required: true\r
- field_format: list\r
- default_value: ""\r
- editable: true\r
-custom_fields_004: \r
- name: Phone number\r
- min_length: 0\r
- regexp: ""\r
- is_for_all: false\r
- type: UserCustomField\r
- max_length: 0\r
- possible_values: ""\r
- id: 4\r
- is_required: false\r
- field_format: string\r
- default_value: ""\r
- editable: true\r
-custom_fields_005: \r
- name: Money\r
- min_length: 0\r
- regexp: ""\r
- is_for_all: false\r
- type: UserCustomField\r
- max_length: 0\r
- possible_values: ""\r
- id: 5\r
- is_required: false\r
- field_format: float\r
- default_value: ""\r
- editable: true\r
-custom_fields_006: \r
- name: Float field\r
- min_length: 0\r
- regexp: ""\r
- is_for_all: true\r
- type: IssueCustomField\r
- max_length: 0\r
- possible_values: ""\r
- id: 6\r
- is_required: false\r
- field_format: float\r
- default_value: ""\r
- editable: true\r
+---
+custom_fields_001:
+ name: Database
+ min_length: 0
+ regexp: ""
+ is_for_all: true
+ is_filter: true
+ type: IssueCustomField
+ max_length: 0
+ possible_values:
+ - MySQL
+ - PostgreSQL
+ - Oracle
+ id: 1
+ is_required: false
+ field_format: list
+ default_value: ""
+ editable: true
+custom_fields_002:
+ name: Searchable field
+ min_length: 1
+ regexp: ""
+ is_for_all: true
+ type: IssueCustomField
+ max_length: 100
+ possible_values: ""
+ id: 2
+ is_required: false
+ field_format: string
+ searchable: true
+ default_value: "Default string"
+ editable: true
+custom_fields_003:
+ name: Development status
+ min_length: 0
+ regexp: ""
+ is_for_all: false
+ is_filter: true
+ type: ProjectCustomField
+ max_length: 0
+ possible_values:
+ - Stable
+ - Beta
+ - Alpha
+ - Planning
+ id: 3
+ is_required: true
+ field_format: list
+ default_value: ""
+ editable: true
+custom_fields_004:
+ name: Phone number
+ min_length: 0
+ regexp: ""
+ is_for_all: false
+ type: UserCustomField
+ max_length: 0
+ possible_values: ""
+ id: 4
+ is_required: false
+ field_format: string
+ default_value: ""
+ editable: true
+custom_fields_005:
+ name: Money
+ min_length: 0
+ regexp: ""
+ is_for_all: false
+ type: UserCustomField
+ max_length: 0
+ possible_values: ""
+ id: 5
+ is_required: false
+ field_format: float
+ default_value: ""
+ editable: true
+custom_fields_006:
+ name: Float field
+ min_length: 0
+ regexp: ""
+ is_for_all: true
+ type: IssueCustomField
+ max_length: 0
+ possible_values: ""
+ id: 6
+ is_required: false
+ field_format: float
+ default_value: ""
+ editable: true
\ No newline at end of file
---- \r
-custom_fields_trackers_001: \r
- custom_field_id: 1\r
- tracker_id: 1\r
-custom_fields_trackers_002: \r
- custom_field_id: 2\r
- tracker_id: 1\r
-custom_fields_trackers_003: \r
- custom_field_id: 2\r
- tracker_id: 3\r
-custom_fields_trackers_004: \r
- custom_field_id: 6\r
- tracker_id: 1\r
-custom_fields_trackers_005: \r
- custom_field_id: 6\r
- tracker_id: 2\r
-custom_fields_trackers_006: \r
- custom_field_id: 6\r
- tracker_id: 3\r
+---
+custom_fields_trackers_001:
+ custom_field_id: 1
+ tracker_id: 1
+custom_fields_trackers_002:
+ custom_field_id: 2
+ tracker_id: 1
+custom_fields_trackers_003:
+ custom_field_id: 2
+ tracker_id: 3
+custom_fields_trackers_004:
+ custom_field_id: 6
+ tracker_id: 1
+custom_fields_trackers_005:
+ custom_field_id: 6
+ tracker_id: 2
+custom_fields_trackers_006:
+ custom_field_id: 6
+ tracker_id: 3
---- \r
-custom_values_006: \r
- customized_type: Issue\r
- custom_field_id: 2\r
- customized_id: 3\r
- id: 6\r
- value: "125"\r
-custom_values_007: \r
- customized_type: Project\r
- custom_field_id: 3\r
- customized_id: 1\r
- id: 7\r
- value: Stable\r
-custom_values_001: \r
- customized_type: User\r
- custom_field_id: 4\r
- customized_id: 3\r
- id: 1\r
- value: ""\r
-custom_values_002: \r
- customized_type: User\r
- custom_field_id: 4\r
- customized_id: 4\r
- id: 2\r
- value: 01 23 45 67 89\r
-custom_values_003: \r
- customized_type: User\r
- custom_field_id: 4\r
- customized_id: 2\r
- id: 3\r
- value: ""\r
-custom_values_004: \r
- customized_type: Issue\r
- custom_field_id: 2\r
- customized_id: 1\r
- id: 4\r
- value: "125"\r
-custom_values_005: \r
- customized_type: Issue\r
- custom_field_id: 2\r
- customized_id: 2\r
- id: 5\r
- value: ""\r
-custom_values_008: \r
- customized_type: Issue\r
- custom_field_id: 1\r
- customized_id: 3\r
- id: 8\r
- value: "MySQL"\r
-custom_values_009: \r
- customized_type: Issue\r
- custom_field_id: 2\r
- customized_id: 3\r
- id: 9\r
- value: "this is a stringforcustomfield search"\r
-custom_values_010: \r
- customized_type: Issue\r
- custom_field_id: 6\r
- customized_id: 1\r
- id: 10\r
- value: "2.1"\r
-custom_values_011: \r
- customized_type: Issue\r
- custom_field_id: 6\r
- customized_id: 2\r
- id: 11\r
- value: "2.05"\r
-custom_values_012: \r
- customized_type: Issue\r
- custom_field_id: 6\r
- customized_id: 3\r
- id: 12\r
- value: "11.65"\r
-custom_values_013: \r
- customized_type: Issue\r
- custom_field_id: 6\r
- customized_id: 7\r
- id: 13\r
- value: ""\r
-custom_values_014: \r
- customized_type: Issue\r
- custom_field_id: 6\r
- customized_id: 5\r
- id: 14\r
- value: "-7.6"\r
+---
+custom_values_006:
+ customized_type: Issue
+ custom_field_id: 2
+ customized_id: 3
+ id: 6
+ value: "125"
+custom_values_007:
+ customized_type: Project
+ custom_field_id: 3
+ customized_id: 1
+ id: 7
+ value: Stable
+custom_values_001:
+ customized_type: User
+ custom_field_id: 4
+ customized_id: 3
+ id: 1
+ value: ""
+custom_values_002:
+ customized_type: User
+ custom_field_id: 4
+ customized_id: 4
+ id: 2
+ value: 01 23 45 67 89
+custom_values_003:
+ customized_type: User
+ custom_field_id: 4
+ customized_id: 2
+ id: 3
+ value: ""
+custom_values_004:
+ customized_type: Issue
+ custom_field_id: 2
+ customized_id: 1
+ id: 4
+ value: "125"
+custom_values_005:
+ customized_type: Issue
+ custom_field_id: 2
+ customized_id: 2
+ id: 5
+ value: ""
+custom_values_008:
+ customized_type: Issue
+ custom_field_id: 1
+ customized_id: 3
+ id: 8
+ value: "MySQL"
+custom_values_009:
+ customized_type: Issue
+ custom_field_id: 2
+ customized_id: 3
+ id: 9
+ value: "this is a stringforcustomfield search"
+custom_values_010:
+ customized_type: Issue
+ custom_field_id: 6
+ customized_id: 1
+ id: 10
+ value: "2.1"
+custom_values_011:
+ customized_type: Issue
+ custom_field_id: 6
+ customized_id: 2
+ id: 11
+ value: "2.05"
+custom_values_012:
+ customized_type: Issue
+ custom_field_id: 6
+ customized_id: 3
+ id: 12
+ value: "11.65"
+custom_values_013:
+ customized_type: Issue
+ custom_field_id: 6
+ customized_id: 7
+ id: 13
+ value: ""
+custom_values_014:
+ customized_type: Issue
+ custom_field_id: 6
+ customized_id: 5
+ id: 14
+ value: "-7.6"
\ No newline at end of file
-documents_001: \r
- created_on: 2007-01-27 15:08:27 +01:00\r
- project_id: 1\r
- title: "Test document"\r
- id: 1\r
- description: "Document description"\r
+documents_001:
+ created_on: 2007-01-27 15:08:27 +01:00
+ project_id: 1
+ title: "Test document"
+ id: 1
+ description: "Document description"
category_id: 1
\ No newline at end of file
---- \r
-enumerations_001: \r
- name: Uncategorized\r
- id: 1\r
- opt: DCAT\r
- type: DocumentCategory\r
-enumerations_002: \r
- name: User documentation\r
- id: 2\r
- opt: DCAT\r
- type: DocumentCategory\r
-enumerations_003: \r
- name: Technical documentation\r
- id: 3\r
- opt: DCAT\r
- type: DocumentCategory\r
-enumerations_004: \r
- name: Low\r
- id: 4\r
- opt: IPRI\r
- type: IssuePriority\r
-enumerations_005: \r
- name: Normal\r
- id: 5\r
- opt: IPRI\r
- type: IssuePriority\r
- is_default: true\r
-enumerations_006: \r
- name: High\r
- id: 6\r
- opt: IPRI\r
- type: IssuePriority\r
-enumerations_007: \r
- name: Urgent\r
- id: 7\r
- opt: IPRI\r
- type: IssuePriority\r
-enumerations_008: \r
- name: Immediate\r
- id: 8\r
- opt: IPRI\r
- type: IssuePriority\r
-enumerations_009: \r
- name: Design\r
- id: 9\r
- opt: ACTI\r
- type: TimeEntryActivity\r
-enumerations_010: \r
- name: Development\r
- id: 10\r
- opt: ACTI\r
- type: TimeEntryActivity\r
- is_default: true\r
-enumerations_011: \r
- name: QA\r
- id: 11\r
- opt: ACTI\r
- type: TimeEntryActivity\r
-enumerations_012:\r
- name: Default Enumeration\r
- id: 12\r
- opt: ''\r
- type: Enumeration\r
- is_default: true\r
-enumerations_013:\r
- name: Another Enumeration\r
- id: 13\r
- opt: ''\r
- type: Enumeration\r
+---
+enumerations_001:
+ name: Uncategorized
+ id: 1
+ opt: DCAT
+ type: DocumentCategory
+enumerations_002:
+ name: User documentation
+ id: 2
+ opt: DCAT
+ type: DocumentCategory
+enumerations_003:
+ name: Technical documentation
+ id: 3
+ opt: DCAT
+ type: DocumentCategory
+enumerations_004:
+ name: Low
+ id: 4
+ opt: IPRI
+ type: IssuePriority
+enumerations_005:
+ name: Normal
+ id: 5
+ opt: IPRI
+ type: IssuePriority
+ is_default: true
+enumerations_006:
+ name: High
+ id: 6
+ opt: IPRI
+ type: IssuePriority
+enumerations_007:
+ name: Urgent
+ id: 7
+ opt: IPRI
+ type: IssuePriority
+enumerations_008:
+ name: Immediate
+ id: 8
+ opt: IPRI
+ type: IssuePriority
+enumerations_009:
+ name: Design
+ id: 9
+ opt: ACTI
+ type: TimeEntryActivity
+enumerations_010:
+ name: Development
+ id: 10
+ opt: ACTI
+ type: TimeEntryActivity
+ is_default: true
+enumerations_011:
+ name: QA
+ id: 11
+ opt: ACTI
+ type: TimeEntryActivity
+enumerations_012:
+ name: Default Enumeration
+ id: 12
+ opt: ''
+ type: Enumeration
+ is_default: true
+enumerations_013:
+ name: Another Enumeration
+ id: 13
+ opt: ''
+ type: Enumeration
---- \r
-issue_categories_001: \r
- name: Printing\r
- project_id: 1\r
- assigned_to_id: 2\r
- id: 1\r
-issue_categories_002: \r
- name: Recipes\r
- project_id: 1\r
- assigned_to_id: \r
- id: 2\r
-issue_categories_003: \r
- name: Stock management\r
- project_id: 2\r
- assigned_to_id: \r
- id: 3\r
-issue_categories_004: \r
- name: Printing\r
- project_id: 2\r
- assigned_to_id: \r
- id: 4\r
+---
+issue_categories_001:
+ name: Printing
+ project_id: 1
+ assigned_to_id: 2
+ id: 1
+issue_categories_002:
+ name: Recipes
+ project_id: 1
+ assigned_to_id:
+ id: 2
+issue_categories_003:
+ name: Stock management
+ project_id: 2
+ assigned_to_id:
+ id: 3
+issue_categories_004:
+ name: Printing
+ project_id: 2
+ assigned_to_id:
+ id: 4
\ No newline at end of file
---- \r
-issue_statuses_006: \r
- name: Rejected\r
- is_default: false\r
- is_closed: true\r
- id: 6\r
-issue_statuses_001: \r
- name: New\r
- is_default: true\r
- is_closed: false\r
- id: 1\r
-issue_statuses_002: \r
- name: Assigned\r
- is_default: false\r
- is_closed: false\r
- id: 2\r
-issue_statuses_003: \r
- name: Resolved\r
- is_default: false\r
- is_closed: false\r
- id: 3\r
-issue_statuses_004: \r
- name: Feedback\r
- is_default: false\r
- is_closed: false\r
- id: 4\r
-issue_statuses_005: \r
- name: Closed\r
- is_default: false\r
- is_closed: true\r
- id: 5\r
+---
+issue_statuses_006:
+ name: Rejected
+ is_default: false
+ is_closed: true
+ id: 6
+issue_statuses_001:
+ name: New
+ is_default: true
+ is_closed: false
+ id: 1
+issue_statuses_002:
+ name: Assigned
+ is_default: false
+ is_closed: false
+ id: 2
+issue_statuses_003:
+ name: Resolved
+ is_default: false
+ is_closed: false
+ id: 3
+issue_statuses_004:
+ name: Feedback
+ is_default: false
+ is_closed: false
+ id: 4
+issue_statuses_005:
+ name: Closed
+ is_default: false
+ is_closed: true
+ id: 5
---- \r
-issues_001: \r
- created_on: <%= 3.days.ago.to_date.to_s(:db) %>\r
- project_id: 1\r
- updated_on: <%= 1.day.ago.to_date.to_s(:db) %>\r
- priority_id: 4\r
- subject: Can't print recipes\r
- id: 1\r
- fixed_version_id: \r
- category_id: 1\r
- description: Unable to print recipes\r
- tracker_id: 1\r
- assigned_to_id: \r
- author_id: 2\r
- status_id: 1\r
- start_date: <%= 1.day.ago.to_date.to_s(:db) %>\r
- due_date: <%= 10.day.from_now.to_date.to_s(:db) %>\r
-issues_002: \r
- created_on: 2006-07-19 21:04:21 +02:00\r
- project_id: 1\r
- updated_on: 2006-07-19 21:09:50 +02:00\r
- priority_id: 5\r
- subject: Add ingredients categories\r
- id: 2\r
- fixed_version_id: 2\r
- category_id: \r
- description: Ingredients of the recipe should be classified by categories\r
- tracker_id: 2\r
- assigned_to_id: 3\r
- author_id: 2\r
- status_id: 2\r
- start_date: <%= 2.day.ago.to_date.to_s(:db) %>\r
- due_date: \r
-issues_003: \r
- created_on: 2006-07-19 21:07:27 +02:00\r
- project_id: 1\r
- updated_on: 2006-07-19 21:07:27 +02:00\r
- priority_id: 4\r
- subject: Error 281 when updating a recipe\r
- id: 3\r
- fixed_version_id: \r
- category_id: \r
- description: Error 281 is encountered when saving a recipe\r
- tracker_id: 1\r
- assigned_to_id: 3\r
- author_id: 2\r
- status_id: 1\r
- start_date: <%= 1.day.from_now.to_date.to_s(:db) %>\r
- due_date: <%= 40.day.ago.to_date.to_s(:db) %>\r
-issues_004: \r
- created_on: <%= 5.days.ago.to_date.to_s(:db) %>\r
- project_id: 2\r
- updated_on: <%= 2.days.ago.to_date.to_s(:db) %>\r
- priority_id: 4\r
- subject: Issue on project 2\r
- id: 4\r
- fixed_version_id: \r
- category_id: \r
- description: Issue on project 2\r
- tracker_id: 1\r
- assigned_to_id: 2\r
- author_id: 2\r
- status_id: 1\r
-issues_005: \r
- created_on: <%= 5.days.ago.to_date.to_s(:db) %>\r
- project_id: 3\r
- updated_on: <%= 2.days.ago.to_date.to_s(:db) %>\r
- priority_id: 4\r
- subject: Subproject issue\r
- id: 5\r
- fixed_version_id: \r
- category_id: \r
- description: This is an issue on a cookbook subproject\r
- tracker_id: 1\r
- assigned_to_id: \r
- author_id: 2\r
- status_id: 1\r
-issues_006: \r
- created_on: <%= 1.minute.ago.to_date.to_s(:db) %>\r
- project_id: 5\r
- updated_on: <%= 1.minute.ago.to_date.to_s(:db) %>\r
- priority_id: 4\r
- subject: Issue of a private subproject\r
- id: 6\r
- fixed_version_id: \r
- category_id: \r
- description: This is an issue of a private subproject of cookbook\r
- tracker_id: 1\r
- assigned_to_id: \r
- author_id: 2\r
- status_id: 1\r
- start_date: <%= Date.today.to_s(:db) %>\r
- due_date: <%= 1.days.from_now.to_date.to_s(:db) %>\r
-issues_007: \r
- created_on: <%= 10.days.ago.to_date.to_s(:db) %>\r
- project_id: 1\r
- updated_on: <%= 10.days.ago.to_date.to_s(:db) %>\r
- priority_id: 5\r
- subject: Issue due today\r
- id: 7\r
- fixed_version_id: \r
- category_id: \r
- description: This is an issue that is due today\r
- tracker_id: 1\r
- assigned_to_id: \r
- author_id: 2\r
- status_id: 1\r
- start_date: <%= 10.days.ago.to_s(:db) %>\r
- due_date: <%= Date.today.to_s(:db) %>\r
- lock_version: 0\r
-issues_008: \r
- created_on: <%= 10.days.ago.to_date.to_s(:db) %>\r
- project_id: 1\r
- updated_on: <%= 10.days.ago.to_date.to_s(:db) %>\r
- priority_id: 5\r
- subject: Closed issue\r
- id: 8\r
- fixed_version_id: \r
- category_id: \r
- description: This is a closed issue.\r
- tracker_id: 1\r
- assigned_to_id: \r
- author_id: 2\r
- status_id: 5\r
- start_date: \r
- due_date: \r
- lock_version: 0\r
-issues_009: \r
- created_on: <%= 1.minute.ago.to_date.to_s(:db) %>\r
- project_id: 5\r
- updated_on: <%= 1.minute.ago.to_date.to_s(:db) %>\r
- priority_id: 5\r
- subject: Blocked Issue\r
- id: 9\r
- fixed_version_id: \r
- category_id: \r
- description: This is an issue that is blocked by issue #10\r
- tracker_id: 1\r
- assigned_to_id: \r
- author_id: 2\r
- status_id: 1\r
- start_date: <%= Date.today.to_s(:db) %>\r
- due_date: <%= 1.days.from_now.to_date.to_s(:db) %>\r
-issues_010: \r
- created_on: <%= 1.minute.ago.to_date.to_s(:db) %>\r
- project_id: 5\r
- updated_on: <%= 1.minute.ago.to_date.to_s(:db) %>\r
- priority_id: 5\r
- subject: Issue Doing the Blocking\r
- id: 10\r
- fixed_version_id: \r
- category_id: \r
- description: This is an issue that blocks issue #9\r
- tracker_id: 1\r
- assigned_to_id: \r
- author_id: 2\r
- status_id: 1\r
- start_date: <%= Date.today.to_s(:db) %>\r
- due_date: <%= 1.days.from_now.to_date.to_s(:db) %>\r
+---
+issues_001:
+ created_on: <%= 3.days.ago.to_date.to_s(:db) %>
+ project_id: 1
+ updated_on: <%= 1.day.ago.to_date.to_s(:db) %>
+ priority_id: 4
+ subject: Can't print recipes
+ id: 1
+ fixed_version_id:
+ category_id: 1
+ description: Unable to print recipes
+ tracker_id: 1
+ assigned_to_id:
+ author_id: 2
+ status_id: 1
+ start_date: <%= 1.day.ago.to_date.to_s(:db) %>
+ due_date: <%= 10.day.from_now.to_date.to_s(:db) %>
+issues_002:
+ created_on: 2006-07-19 21:04:21 +02:00
+ project_id: 1
+ updated_on: 2006-07-19 21:09:50 +02:00
+ priority_id: 5
+ subject: Add ingredients categories
+ id: 2
+ fixed_version_id: 2
+ category_id:
+ description: Ingredients of the recipe should be classified by categories
+ tracker_id: 2
+ assigned_to_id: 3
+ author_id: 2
+ status_id: 2
+ start_date: <%= 2.day.ago.to_date.to_s(:db) %>
+ due_date:
+issues_003:
+ created_on: 2006-07-19 21:07:27 +02:00
+ project_id: 1
+ updated_on: 2006-07-19 21:07:27 +02:00
+ priority_id: 4
+ subject: Error 281 when updating a recipe
+ id: 3
+ fixed_version_id:
+ category_id:
+ description: Error 281 is encountered when saving a recipe
+ tracker_id: 1
+ assigned_to_id: 3
+ author_id: 2
+ status_id: 1
+ start_date: <%= 1.day.from_now.to_date.to_s(:db) %>
+ due_date: <%= 40.day.ago.to_date.to_s(:db) %>
+issues_004:
+ created_on: <%= 5.days.ago.to_date.to_s(:db) %>
+ project_id: 2
+ updated_on: <%= 2.days.ago.to_date.to_s(:db) %>
+ priority_id: 4
+ subject: Issue on project 2
+ id: 4
+ fixed_version_id:
+ category_id:
+ description: Issue on project 2
+ tracker_id: 1
+ assigned_to_id: 2
+ author_id: 2
+ status_id: 1
+issues_005:
+ created_on: <%= 5.days.ago.to_date.to_s(:db) %>
+ project_id: 3
+ updated_on: <%= 2.days.ago.to_date.to_s(:db) %>
+ priority_id: 4
+ subject: Subproject issue
+ id: 5
+ fixed_version_id:
+ category_id:
+ description: This is an issue on a cookbook subproject
+ tracker_id: 1
+ assigned_to_id:
+ author_id: 2
+ status_id: 1
+issues_006:
+ created_on: <%= 1.minute.ago.to_date.to_s(:db) %>
+ project_id: 5
+ updated_on: <%= 1.minute.ago.to_date.to_s(:db) %>
+ priority_id: 4
+ subject: Issue of a private subproject
+ id: 6
+ fixed_version_id:
+ category_id:
+ description: This is an issue of a private subproject of cookbook
+ tracker_id: 1
+ assigned_to_id:
+ author_id: 2
+ status_id: 1
+ start_date: <%= Date.today.to_s(:db) %>
+ due_date: <%= 1.days.from_now.to_date.to_s(:db) %>
+issues_007:
+ created_on: <%= 10.days.ago.to_date.to_s(:db) %>
+ project_id: 1
+ updated_on: <%= 10.days.ago.to_date.to_s(:db) %>
+ priority_id: 5
+ subject: Issue due today
+ id: 7
+ fixed_version_id:
+ category_id:
+ description: This is an issue that is due today
+ tracker_id: 1
+ assigned_to_id:
+ author_id: 2
+ status_id: 1
+ start_date: <%= 10.days.ago.to_s(:db) %>
+ due_date: <%= Date.today.to_s(:db) %>
+ lock_version: 0
+issues_008:
+ created_on: <%= 10.days.ago.to_date.to_s(:db) %>
+ project_id: 1
+ updated_on: <%= 10.days.ago.to_date.to_s(:db) %>
+ priority_id: 5
+ subject: Closed issue
+ id: 8
+ fixed_version_id:
+ category_id:
+ description: This is a closed issue.
+ tracker_id: 1
+ assigned_to_id:
+ author_id: 2
+ status_id: 5
+ start_date:
+ due_date:
+ lock_version: 0
+issues_009:
+ created_on: <%= 1.minute.ago.to_date.to_s(:db) %>
+ project_id: 5
+ updated_on: <%= 1.minute.ago.to_date.to_s(:db) %>
+ priority_id: 5
+ subject: Blocked Issue
+ id: 9
+ fixed_version_id:
+ category_id:
+ description: This is an issue that is blocked by issue #10
+ tracker_id: 1
+ assigned_to_id:
+ author_id: 2
+ status_id: 1
+ start_date: <%= Date.today.to_s(:db) %>
+ due_date: <%= 1.days.from_now.to_date.to_s(:db) %>
+issues_010:
+ created_on: <%= 1.minute.ago.to_date.to_s(:db) %>
+ project_id: 5
+ updated_on: <%= 1.minute.ago.to_date.to_s(:db) %>
+ priority_id: 5
+ subject: Issue Doing the Blocking
+ id: 10
+ fixed_version_id:
+ category_id:
+ description: This is an issue that blocks issue #9
+ tracker_id: 1
+ assigned_to_id:
+ author_id: 2
+ status_id: 1
+ start_date: <%= Date.today.to_s(:db) %>
+ due_date: <%= 1.days.from_now.to_date.to_s(:db) %>
---- \r
-journal_details_001: \r
- old_value: "1"\r
- property: attr\r
- id: 1\r
- value: "2"\r
- prop_key: status_id\r
- journal_id: 1\r
-journal_details_002: \r
- old_value: "40"\r
- property: attr\r
- id: 2\r
- value: "30"\r
- prop_key: done_ratio\r
- journal_id: 1\r
+---
+journal_details_001:
+ old_value: "1"
+ property: attr
+ id: 1
+ value: "2"
+ prop_key: status_id
+ journal_id: 1
+journal_details_002:
+ old_value: "40"
+ property: attr
+ id: 2
+ value: "30"
+ prop_key: done_ratio
+ journal_id: 1
---- \r
-journals_001: \r
- created_on: <%= 2.days.ago.to_date.to_s(:db) %>\r
- notes: "Journal notes"\r
- id: 1\r
- journalized_type: Issue\r
- user_id: 1\r
- journalized_id: 1\r
-journals_002: \r
- created_on: <%= 1.days.ago.to_date.to_s(:db) %>\r
- notes: "Some notes with Redmine links: #2, r2."\r
- id: 2\r
- journalized_type: Issue\r
- user_id: 2\r
- journalized_id: 1\r
-journals_003: \r
- created_on: <%= 1.days.ago.to_date.to_s(:db) %>\r
- notes: "A comment with inline image: !picture.jpg!"\r
- id: 3\r
- journalized_type: Issue\r
- user_id: 2\r
- journalized_id: 2\r
+---
+journals_001:
+ created_on: <%= 2.days.ago.to_date.to_s(:db) %>
+ notes: "Journal notes"
+ id: 1
+ journalized_type: Issue
+ user_id: 1
+ journalized_id: 1
+journals_002:
+ created_on: <%= 1.days.ago.to_date.to_s(:db) %>
+ notes: "Some notes with Redmine links: #2, r2."
+ id: 2
+ journalized_type: Issue
+ user_id: 2
+ journalized_id: 1
+journals_003:
+ created_on: <%= 1.days.ago.to_date.to_s(:db) %>
+ notes: "A comment with inline image: !picture.jpg!"
+ id: 3
+ journalized_type: Issue
+ user_id: 2
+ journalized_id: 2
\ No newline at end of file
---- \r
-members_001: \r
- created_on: 2006-07-19 19:35:33 +02:00\r
- project_id: 1\r
- id: 1\r
- user_id: 2\r
- mail_notification: true\r
-members_002: \r
- created_on: 2006-07-19 19:35:36 +02:00\r
- project_id: 1\r
- id: 2\r
- user_id: 3\r
- mail_notification: true\r
-members_003: \r
- created_on: 2006-07-19 19:35:36 +02:00\r
- project_id: 2\r
- id: 3\r
- user_id: 2\r
- mail_notification: true\r
-members_004: \r
- id: 4\r
- created_on: 2006-07-19 19:35:36 +02:00\r
- project_id: 1\r
- # Locked user\r
- user_id: 5\r
- mail_notification: true\r
-members_005: \r
- id: 5\r
- created_on: 2006-07-19 19:35:33 +02:00\r
- project_id: 5\r
- user_id: 2\r
- mail_notification: true\r
-members_006: \r
- id: 6\r
- created_on: 2006-07-19 19:35:33 +02:00\r
- project_id: 5\r
- user_id: 10\r
- mail_notification: false\r
-members_007: \r
- id: 7\r
- created_on: 2006-07-19 19:35:33 +02:00\r
- project_id: 5\r
- user_id: 8\r
- mail_notification: false\r
+---
+members_001:
+ created_on: 2006-07-19 19:35:33 +02:00
+ project_id: 1
+ id: 1
+ user_id: 2
+ mail_notification: true
+members_002:
+ created_on: 2006-07-19 19:35:36 +02:00
+ project_id: 1
+ id: 2
+ user_id: 3
+ mail_notification: true
+members_003:
+ created_on: 2006-07-19 19:35:36 +02:00
+ project_id: 2
+ id: 3
+ user_id: 2
+ mail_notification: true
+members_004:
+ id: 4
+ created_on: 2006-07-19 19:35:36 +02:00
+ project_id: 1
+ # Locked user
+ user_id: 5
+ mail_notification: true
+members_005:
+ id: 5
+ created_on: 2006-07-19 19:35:33 +02:00
+ project_id: 5
+ user_id: 2
+ mail_notification: true
+members_006:
+ id: 6
+ created_on: 2006-07-19 19:35:33 +02:00
+ project_id: 5
+ user_id: 10
+ mail_notification: false
+members_007:
+ id: 7
+ created_on: 2006-07-19 19:35:33 +02:00
+ project_id: 5
+ user_id: 8
+ mail_notification: false
\ No newline at end of file
---- \r
-messages_001: \r
- created_on: 2007-05-12 17:15:32 +02:00\r
- updated_on: 2007-05-12 17:15:32 +02:00\r
- subject: First post\r
- id: 1\r
- replies_count: 2\r
- last_reply_id: 3\r
- content: "This is the very first post\n\\r
- in the forum"\r
- author_id: 1\r
- parent_id: \r
- board_id: 1\r
-messages_002: \r
- created_on: 2007-05-12 17:18:00 +02:00\r
- updated_on: 2007-05-12 17:18:00 +02:00\r
- subject: First reply\r
- id: 2\r
- replies_count: 0\r
- last_reply_id: \r
- content: "Reply to the first post"\r
- author_id: 1\r
- parent_id: 1\r
- board_id: 1\r
-messages_003: \r
- created_on: 2007-05-12 17:18:02 +02:00\r
- updated_on: 2007-05-12 17:18:02 +02:00\r
- subject: "RE: First post"\r
- id: 3\r
- replies_count: 0\r
- last_reply_id: \r
- content: "An other reply"\r
- author_id: 2\r
- parent_id: 1\r
- board_id: 1\r
-messages_004: \r
- created_on: 2007-08-12 17:15:32 +02:00\r
- updated_on: 2007-08-12 17:15:32 +02:00\r
- subject: Post 2\r
- id: 4\r
- replies_count: 2\r
- last_reply_id: 6\r
- content: "This is an other post"\r
- author_id: \r
- parent_id: \r
- board_id: 1\r
-messages_005: \r
- created_on: <%= 3.days.ago.to_date.to_s(:db) %>\r
- updated_on: <%= 3.days.ago.to_date.to_s(:db) %>\r
- subject: 'RE: post 2'\r
- id: 5\r
- replies_count: 0\r
- last_reply_id: \r
- content: "Reply to the second post"\r
- author_id: 1\r
- parent_id: 4\r
- board_id: 1\r
-messages_006: \r
- created_on: <%= 2.days.ago.to_date.to_s(:db) %>\r
- updated_on: <%= 2.days.ago.to_date.to_s(:db) %>\r
- subject: 'RE: post 2'\r
- id: 6\r
- replies_count: 0\r
- last_reply_id: \r
- content: "Another reply to the second post"\r
- author_id: 3\r
- parent_id: 4\r
- board_id: 1\r
+---
+messages_001:
+ created_on: 2007-05-12 17:15:32 +02:00
+ updated_on: 2007-05-12 17:15:32 +02:00
+ subject: First post
+ id: 1
+ replies_count: 2
+ last_reply_id: 3
+ content: "This is the very first post\n\
+ in the forum"
+ author_id: 1
+ parent_id:
+ board_id: 1
+messages_002:
+ created_on: 2007-05-12 17:18:00 +02:00
+ updated_on: 2007-05-12 17:18:00 +02:00
+ subject: First reply
+ id: 2
+ replies_count: 0
+ last_reply_id:
+ content: "Reply to the first post"
+ author_id: 1
+ parent_id: 1
+ board_id: 1
+messages_003:
+ created_on: 2007-05-12 17:18:02 +02:00
+ updated_on: 2007-05-12 17:18:02 +02:00
+ subject: "RE: First post"
+ id: 3
+ replies_count: 0
+ last_reply_id:
+ content: "An other reply"
+ author_id: 2
+ parent_id: 1
+ board_id: 1
+messages_004:
+ created_on: 2007-08-12 17:15:32 +02:00
+ updated_on: 2007-08-12 17:15:32 +02:00
+ subject: Post 2
+ id: 4
+ replies_count: 2
+ last_reply_id: 6
+ content: "This is an other post"
+ author_id:
+ parent_id:
+ board_id: 1
+messages_005:
+ created_on: <%= 3.days.ago.to_date.to_s(:db) %>
+ updated_on: <%= 3.days.ago.to_date.to_s(:db) %>
+ subject: 'RE: post 2'
+ id: 5
+ replies_count: 0
+ last_reply_id:
+ content: "Reply to the second post"
+ author_id: 1
+ parent_id: 4
+ board_id: 1
+messages_006:
+ created_on: <%= 2.days.ago.to_date.to_s(:db) %>
+ updated_on: <%= 2.days.ago.to_date.to_s(:db) %>
+ subject: 'RE: post 2'
+ id: 6
+ replies_count: 0
+ last_reply_id:
+ content: "Another reply to the second post"
+ author_id: 3
+ parent_id: 4
+ board_id: 1
---- \r
-news_001: \r
- created_on: 2006-07-19 22:40:26 +02:00\r
- project_id: 1\r
- title: eCookbook first release !\r
- id: 1\r
- description: |-\r
- eCookbook 1.0 has been released.\r
- \r
- Visit http://ecookbook.somenet.foo/\r
- summary: First version was released...\r
- author_id: 2\r
- comments_count: 1\r
-news_002: \r
- created_on: 2006-07-19 22:42:58 +02:00\r
- project_id: 1\r
- title: 100,000 downloads for eCookbook\r
- id: 2\r
- description: eCookbook 1.0 have downloaded 100,000 times\r
- summary: eCookbook 1.0 have downloaded 100,000 times\r
- author_id: 2\r
- comments_count: 0\r
+---
+news_001:
+ created_on: 2006-07-19 22:40:26 +02:00
+ project_id: 1
+ title: eCookbook first release !
+ id: 1
+ description: |-
+ eCookbook 1.0 has been released.
+
+ Visit http://ecookbook.somenet.foo/
+ summary: First version was released...
+ author_id: 2
+ comments_count: 1
+news_002:
+ created_on: 2006-07-19 22:42:58 +02:00
+ project_id: 1
+ title: 100,000 downloads for eCookbook
+ id: 2
+ description: eCookbook 1.0 have downloaded 100,000 times
+ summary: eCookbook 1.0 have downloaded 100,000 times
+ author_id: 2
+ comments_count: 0
---- \r
-projects_001: \r
- created_on: 2006-07-19 19:13:59 +02:00\r
- name: eCookbook\r
- updated_on: 2006-07-19 22:53:01 +02:00\r
- id: 1\r
- description: Recipes management application\r
- homepage: http://ecookbook.somenet.foo/\r
- is_public: true\r
- identifier: ecookbook\r
- parent_id: \r
- lft: 1\r
- rgt: 10\r
-projects_002: \r
- created_on: 2006-07-19 19:14:19 +02:00\r
- name: OnlineStore\r
- updated_on: 2006-07-19 19:14:19 +02:00\r
- id: 2\r
- description: E-commerce web site\r
- homepage: ""\r
- is_public: false\r
- identifier: onlinestore\r
- parent_id: \r
- lft: 11\r
- rgt: 12\r
-projects_003: \r
- created_on: 2006-07-19 19:15:21 +02:00\r
- name: eCookbook Subproject 1\r
- updated_on: 2006-07-19 19:18:12 +02:00\r
- id: 3\r
- description: eCookBook Subproject 1\r
- homepage: ""\r
- is_public: true\r
- identifier: subproject1\r
- parent_id: 1\r
- lft: 6\r
- rgt: 7\r
-projects_004: \r
- created_on: 2006-07-19 19:15:51 +02:00\r
- name: eCookbook Subproject 2\r
- updated_on: 2006-07-19 19:17:07 +02:00\r
- id: 4\r
- description: eCookbook Subproject 2\r
- homepage: ""\r
- is_public: true\r
- identifier: subproject2\r
- parent_id: 1\r
- lft: 8\r
- rgt: 9\r
-projects_005: \r
- created_on: 2006-07-19 19:15:51 +02:00\r
- name: Private child of eCookbook\r
- updated_on: 2006-07-19 19:17:07 +02:00\r
- id: 5\r
- description: This is a private subproject of a public project\r
- homepage: ""\r
- is_public: false\r
- identifier: private-child\r
- parent_id: 1\r
- lft: 2\r
- rgt: 5\r
-projects_006: \r
- created_on: 2006-07-19 19:15:51 +02:00\r
- name: Child of private child\r
- updated_on: 2006-07-19 19:17:07 +02:00\r
- id: 6\r
- description: This is a public subproject of a private project\r
- homepage: ""\r
- is_public: true\r
- identifier: project6\r
- parent_id: 5\r
- lft: 3\r
- rgt: 4\r
+---
+projects_001:
+ created_on: 2006-07-19 19:13:59 +02:00
+ name: eCookbook
+ updated_on: 2006-07-19 22:53:01 +02:00
+ id: 1
+ description: Recipes management application
+ homepage: http://ecookbook.somenet.foo/
+ is_public: true
+ identifier: ecookbook
+ parent_id:
+ lft: 1
+ rgt: 10
+projects_002:
+ created_on: 2006-07-19 19:14:19 +02:00
+ name: OnlineStore
+ updated_on: 2006-07-19 19:14:19 +02:00
+ id: 2
+ description: E-commerce web site
+ homepage: ""
+ is_public: false
+ identifier: onlinestore
+ parent_id:
+ lft: 11
+ rgt: 12
+projects_003:
+ created_on: 2006-07-19 19:15:21 +02:00
+ name: eCookbook Subproject 1
+ updated_on: 2006-07-19 19:18:12 +02:00
+ id: 3
+ description: eCookBook Subproject 1
+ homepage: ""
+ is_public: true
+ identifier: subproject1
+ parent_id: 1
+ lft: 6
+ rgt: 7
+projects_004:
+ created_on: 2006-07-19 19:15:51 +02:00
+ name: eCookbook Subproject 2
+ updated_on: 2006-07-19 19:17:07 +02:00
+ id: 4
+ description: eCookbook Subproject 2
+ homepage: ""
+ is_public: true
+ identifier: subproject2
+ parent_id: 1
+ lft: 8
+ rgt: 9
+projects_005:
+ created_on: 2006-07-19 19:15:51 +02:00
+ name: Private child of eCookbook
+ updated_on: 2006-07-19 19:17:07 +02:00
+ id: 5
+ description: This is a private subproject of a public project
+ homepage: ""
+ is_public: false
+ identifier: private-child
+ parent_id: 1
+ lft: 2
+ rgt: 5
+projects_006:
+ created_on: 2006-07-19 19:15:51 +02:00
+ name: Child of private child
+ updated_on: 2006-07-19 19:17:07 +02:00
+ id: 6
+ description: This is a public subproject of a private project
+ homepage: ""
+ is_public: true
+ identifier: project6
+ parent_id: 5
+ lft: 3
+ rgt: 4
\ No newline at end of file
---- \r
-queries_001: \r
- id: 1\r
- project_id: 1\r
- is_public: true\r
- name: Multiple custom fields query\r
- filters: |\r
- --- \r
- cf_1: \r
- :values: \r
- - MySQL\r
- :operator: "="\r
- status_id: \r
- :values: \r
- - "1"\r
- :operator: o\r
- cf_2: \r
- :values: \r
- - "125"\r
- :operator: "="\r
-\r
- user_id: 1\r
- column_names: \r
-queries_002: \r
- id: 2\r
- project_id: 1\r
- is_public: false\r
- name: Private query for cookbook\r
- filters: |\r
- --- \r
- tracker_id: \r
- :values: \r
- - "3"\r
- :operator: "="\r
- status_id: \r
- :values: \r
- - "1"\r
- :operator: o\r
-\r
- user_id: 3\r
- column_names: \r
-queries_003: \r
- id: 3\r
- project_id: \r
- is_public: false\r
- name: Private query for all projects\r
- filters: |\r
- --- \r
- tracker_id: \r
- :values: \r
- - "3"\r
- :operator: "="\r
-\r
- user_id: 3\r
- column_names: \r
-queries_004: \r
- id: 4\r
- project_id: \r
- is_public: true\r
- name: Public query for all projects\r
- filters: |\r
- --- \r
- tracker_id: \r
- :values: \r
- - "3"\r
- :operator: "="\r
-\r
- user_id: 2\r
- column_names: \r
-queries_005: \r
- id: 5\r
- project_id: \r
- is_public: true\r
- name: Open issues by priority and tracker\r
- filters: |\r
- --- \r
- status_id: \r
- :values: \r
- - "1"\r
- :operator: o\r
-\r
- user_id: 1\r
- column_names: \r
- sort_criteria: |\r
- --- \r
- - - priority\r
- - desc\r
- - - tracker\r
- - asc\r
-queries_006: \r
- id: 6\r
- project_id: \r
- is_public: true\r
- name: Open issues grouped by tracker\r
- filters: |\r
- --- \r
- status_id: \r
- :values: \r
- - "1"\r
- :operator: o\r
-\r
- user_id: 1\r
- column_names: \r
- group_by: tracker\r
- sort_criteria: |\r
- --- \r
- - - priority\r
- - desc\r
-queries_007: \r
- id: 7\r
- project_id: 2\r
- is_public: true\r
- name: Public query for project 2\r
- filters: |\r
- --- \r
- tracker_id: \r
- :values: \r
- - "3"\r
- :operator: "="\r
-\r
- user_id: 2\r
- column_names: \r
-queries_008: \r
- id: 8\r
- project_id: 2\r
- is_public: false\r
- name: Private query for project 2\r
- filters: |\r
- --- \r
- tracker_id: \r
- :values: \r
- - "3"\r
- :operator: "="\r
-\r
- user_id: 2\r
- column_names: \r
+---
+queries_001:
+ id: 1
+ project_id: 1
+ is_public: true
+ name: Multiple custom fields query
+ filters: |
+ ---
+ cf_1:
+ :values:
+ - MySQL
+ :operator: "="
+ status_id:
+ :values:
+ - "1"
+ :operator: o
+ cf_2:
+ :values:
+ - "125"
+ :operator: "="
+
+ user_id: 1
+ column_names:
+queries_002:
+ id: 2
+ project_id: 1
+ is_public: false
+ name: Private query for cookbook
+ filters: |
+ ---
+ tracker_id:
+ :values:
+ - "3"
+ :operator: "="
+ status_id:
+ :values:
+ - "1"
+ :operator: o
+
+ user_id: 3
+ column_names:
+queries_003:
+ id: 3
+ project_id:
+ is_public: false
+ name: Private query for all projects
+ filters: |
+ ---
+ tracker_id:
+ :values:
+ - "3"
+ :operator: "="
+
+ user_id: 3
+ column_names:
+queries_004:
+ id: 4
+ project_id:
+ is_public: true
+ name: Public query for all projects
+ filters: |
+ ---
+ tracker_id:
+ :values:
+ - "3"
+ :operator: "="
+
+ user_id: 2
+ column_names:
+queries_005:
+ id: 5
+ project_id:
+ is_public: true
+ name: Open issues by priority and tracker
+ filters: |
+ ---
+ status_id:
+ :values:
+ - "1"
+ :operator: o
+
+ user_id: 1
+ column_names:
+ sort_criteria: |
+ ---
+ - - priority
+ - desc
+ - - tracker
+ - asc
+queries_006:
+ id: 6
+ project_id:
+ is_public: true
+ name: Open issues grouped by tracker
+ filters: |
+ ---
+ status_id:
+ :values:
+ - "1"
+ :operator: o
+
+ user_id: 1
+ column_names:
+ group_by: tracker
+ sort_criteria: |
+ ---
+ - - priority
+ - desc
+queries_007:
+ id: 7
+ project_id: 2
+ is_public: true
+ name: Public query for project 2
+ filters: |
+ ---
+ tracker_id:
+ :values:
+ - "3"
+ :operator: "="
+
+ user_id: 2
+ column_names:
+queries_008:
+ id: 8
+ project_id: 2
+ is_public: false
+ name: Private query for project 2
+ filters: |
+ ---
+ tracker_id:
+ :values:
+ - "3"
+ :operator: "="
+
+ user_id: 2
+ column_names:
---- \r
-repositories_001: \r
- project_id: 1\r
- url: file:///<%= RAILS_ROOT.gsub(%r{config\/\.\.}, '') %>/tmp/test/subversion_repository\r
- id: 10\r
- root_url: file:///<%= RAILS_ROOT.gsub(%r{config\/\.\.}, '') %>/tmp/test/subversion_repository\r
- password: ""\r
- login: ""\r
- type: Subversion\r
-repositories_002: \r
- project_id: 2\r
- url: svn://localhost/test\r
- id: 11\r
- root_url: svn://localhost\r
- password: ""\r
- login: ""\r
- type: Subversion\r
+---
+repositories_001:
+ project_id: 1
+ url: file:///<%= RAILS_ROOT.gsub(%r{config\/\.\.}, '') %>/tmp/test/subversion_repository
+ id: 10
+ root_url: file:///<%= RAILS_ROOT.gsub(%r{config\/\.\.}, '') %>/tmp/test/subversion_repository
+ password: ""
+ login: ""
+ type: Subversion
+repositories_002:
+ project_id: 2
+ url: svn://localhost/test
+ id: 11
+ root_url: svn://localhost
+ password: ""
+ login: ""
+ type: Subversion
---- \r
-roles_001: \r
- name: Manager\r
- id: 1\r
- builtin: 0\r
- permissions: |\r
- --- \r
- - :add_project\r
- - :edit_project\r
- - :manage_members\r
- - :manage_versions\r
- - :manage_categories\r
- - :add_issues\r
- - :edit_issues\r
- - :manage_issue_relations\r
- - :add_issue_notes\r
- - :move_issues\r
- - :delete_issues\r
- - :view_issue_watchers\r
- - :add_issue_watchers\r
- - :manage_public_queries\r
- - :save_queries\r
- - :view_gantt\r
- - :view_calendar\r
- - :log_time\r
- - :view_time_entries\r
- - :edit_time_entries\r
- - :delete_time_entries\r
- - :manage_news\r
- - :comment_news\r
- - :view_documents\r
- - :manage_documents\r
- - :view_wiki_pages\r
- - :view_wiki_edits\r
- - :edit_wiki_pages\r
- - :delete_wiki_pages_attachments\r
- - :protect_wiki_pages\r
- - :delete_wiki_pages\r
- - :rename_wiki_pages\r
- - :add_messages\r
- - :edit_messages\r
- - :delete_messages\r
- - :manage_boards\r
- - :view_files\r
- - :manage_files\r
- - :browse_repository\r
- - :manage_repository\r
- - :view_changesets\r
-\r
- position: 1\r
-roles_002: \r
- name: Developer\r
- id: 2\r
- builtin: 0\r
- permissions: |\r
- --- \r
- - :edit_project\r
- - :manage_members\r
- - :manage_versions\r
- - :manage_categories\r
- - :add_issues\r
- - :edit_issues\r
- - :manage_issue_relations\r
- - :add_issue_notes\r
- - :move_issues\r
- - :delete_issues\r
- - :view_issue_watchers\r
- - :save_queries\r
- - :view_gantt\r
- - :view_calendar\r
- - :log_time\r
- - :view_time_entries\r
- - :edit_own_time_entries\r
- - :manage_news\r
- - :comment_news\r
- - :view_documents\r
- - :manage_documents\r
- - :view_wiki_pages\r
- - :view_wiki_edits\r
- - :edit_wiki_pages\r
- - :protect_wiki_pages\r
- - :delete_wiki_pages\r
- - :add_messages\r
- - :edit_own_messages\r
- - :delete_own_messages\r
- - :manage_boards\r
- - :view_files\r
- - :manage_files\r
- - :browse_repository\r
- - :view_changesets\r
-\r
- position: 2\r
-roles_003: \r
- name: Reporter\r
- id: 3\r
- builtin: 0\r
- permissions: |\r
- --- \r
- - :edit_project\r
- - :manage_members\r
- - :manage_versions\r
- - :manage_categories\r
- - :add_issues\r
- - :edit_issues\r
- - :manage_issue_relations\r
- - :add_issue_notes\r
- - :move_issues\r
- - :view_issue_watchers\r
- - :save_queries\r
- - :view_gantt\r
- - :view_calendar\r
- - :log_time\r
- - :view_time_entries\r
- - :manage_news\r
- - :comment_news\r
- - :view_documents\r
- - :manage_documents\r
- - :view_wiki_pages\r
- - :view_wiki_edits\r
- - :edit_wiki_pages\r
- - :delete_wiki_pages\r
- - :add_messages\r
- - :manage_boards\r
- - :view_files\r
- - :manage_files\r
- - :browse_repository\r
- - :view_changesets\r
-\r
- position: 3\r
-roles_004: \r
- name: Non member\r
- id: 4\r
- builtin: 1\r
- permissions: |\r
- --- \r
- - :add_issues\r
- - :edit_issues\r
- - :manage_issue_relations\r
- - :add_issue_notes\r
- - :move_issues\r
- - :save_queries\r
- - :view_gantt\r
- - :view_calendar\r
- - :log_time\r
- - :view_time_entries\r
- - :comment_news\r
- - :view_documents\r
- - :manage_documents\r
- - :view_wiki_pages\r
- - :view_wiki_edits\r
- - :edit_wiki_pages\r
- - :add_messages\r
- - :view_files\r
- - :manage_files\r
- - :browse_repository\r
- - :view_changesets\r
-\r
- position: 4\r
-roles_005: \r
- name: Anonymous\r
- id: 5\r
- builtin: 2\r
- permissions: |\r
- --- \r
- - :add_issue_notes\r
- - :view_gantt\r
- - :view_calendar\r
- - :view_time_entries\r
- - :view_documents\r
- - :view_wiki_pages\r
- - :view_wiki_edits\r
- - :view_files\r
- - :browse_repository\r
- - :view_changesets\r
-\r
- position: 5\r
+---
+roles_001:
+ name: Manager
+ id: 1
+ builtin: 0
+ permissions: |
+ ---
+ - :add_project
+ - :edit_project
+ - :manage_members
+ - :manage_versions
+ - :manage_categories
+ - :add_issues
+ - :edit_issues
+ - :manage_issue_relations
+ - :add_issue_notes
+ - :move_issues
+ - :delete_issues
+ - :view_issue_watchers
+ - :add_issue_watchers
+ - :manage_public_queries
+ - :save_queries
+ - :view_gantt
+ - :view_calendar
+ - :log_time
+ - :view_time_entries
+ - :edit_time_entries
+ - :delete_time_entries
+ - :manage_news
+ - :comment_news
+ - :view_documents
+ - :manage_documents
+ - :view_wiki_pages
+ - :view_wiki_edits
+ - :edit_wiki_pages
+ - :delete_wiki_pages_attachments
+ - :protect_wiki_pages
+ - :delete_wiki_pages
+ - :rename_wiki_pages
+ - :add_messages
+ - :edit_messages
+ - :delete_messages
+ - :manage_boards
+ - :view_files
+ - :manage_files
+ - :browse_repository
+ - :manage_repository
+ - :view_changesets
+
+ position: 1
+roles_002:
+ name: Developer
+ id: 2
+ builtin: 0
+ permissions: |
+ ---
+ - :edit_project
+ - :manage_members
+ - :manage_versions
+ - :manage_categories
+ - :add_issues
+ - :edit_issues
+ - :manage_issue_relations
+ - :add_issue_notes
+ - :move_issues
+ - :delete_issues
+ - :view_issue_watchers
+ - :save_queries
+ - :view_gantt
+ - :view_calendar
+ - :log_time
+ - :view_time_entries
+ - :edit_own_time_entries
+ - :manage_news
+ - :comment_news
+ - :view_documents
+ - :manage_documents
+ - :view_wiki_pages
+ - :view_wiki_edits
+ - :edit_wiki_pages
+ - :protect_wiki_pages
+ - :delete_wiki_pages
+ - :add_messages
+ - :edit_own_messages
+ - :delete_own_messages
+ - :manage_boards
+ - :view_files
+ - :manage_files
+ - :browse_repository
+ - :view_changesets
+
+ position: 2
+roles_003:
+ name: Reporter
+ id: 3
+ builtin: 0
+ permissions: |
+ ---
+ - :edit_project
+ - :manage_members
+ - :manage_versions
+ - :manage_categories
+ - :add_issues
+ - :edit_issues
+ - :manage_issue_relations
+ - :add_issue_notes
+ - :move_issues
+ - :view_issue_watchers
+ - :save_queries
+ - :view_gantt
+ - :view_calendar
+ - :log_time
+ - :view_time_entries
+ - :manage_news
+ - :comment_news
+ - :view_documents
+ - :manage_documents
+ - :view_wiki_pages
+ - :view_wiki_edits
+ - :edit_wiki_pages
+ - :delete_wiki_pages
+ - :add_messages
+ - :manage_boards
+ - :view_files
+ - :manage_files
+ - :browse_repository
+ - :view_changesets
+
+ position: 3
+roles_004:
+ name: Non member
+ id: 4
+ builtin: 1
+ permissions: |
+ ---
+ - :add_issues
+ - :edit_issues
+ - :manage_issue_relations
+ - :add_issue_notes
+ - :move_issues
+ - :save_queries
+ - :view_gantt
+ - :view_calendar
+ - :log_time
+ - :view_time_entries
+ - :comment_news
+ - :view_documents
+ - :manage_documents
+ - :view_wiki_pages
+ - :view_wiki_edits
+ - :edit_wiki_pages
+ - :add_messages
+ - :view_files
+ - :manage_files
+ - :browse_repository
+ - :view_changesets
+
+ position: 4
+roles_005:
+ name: Anonymous
+ id: 5
+ builtin: 2
+ permissions: |
+ ---
+ - :add_issue_notes
+ - :view_gantt
+ - :view_calendar
+ - :view_time_entries
+ - :view_documents
+ - :view_wiki_pages
+ - :view_wiki_edits
+ - :view_files
+ - :browse_repository
+ - :view_changesets
+
+ position: 5
\ No newline at end of file
---- \r
-time_entries_001: \r
- created_on: 2007-03-23 12:54:18 +01:00\r
- tweek: 12\r
- tmonth: 3\r
- project_id: 1\r
- comments: My hours\r
- updated_on: 2007-03-23 12:54:18 +01:00\r
- activity_id: 9\r
- spent_on: 2007-03-23\r
- issue_id: 1\r
- id: 1\r
- hours: 4.25\r
- user_id: 2\r
- tyear: 2007\r
-time_entries_002: \r
- created_on: 2007-03-23 14:11:04 +01:00\r
- tweek: 11\r
- tmonth: 3\r
- project_id: 1\r
- comments: ""\r
- updated_on: 2007-03-23 14:11:04 +01:00\r
- activity_id: 9\r
- spent_on: 2007-03-12\r
- issue_id: 1\r
- id: 2\r
- hours: 150.0\r
- user_id: 1\r
- tyear: 2007\r
-time_entries_003: \r
- created_on: 2007-04-21 12:20:48 +02:00\r
- tweek: 16\r
- tmonth: 4\r
- project_id: 1\r
- comments: ""\r
- updated_on: 2007-04-21 12:20:48 +02:00\r
- activity_id: 9\r
- spent_on: 2007-04-21\r
- issue_id: 3\r
- id: 3\r
- hours: 1.0\r
- user_id: 1\r
- tyear: 2007\r
-time_entries_004: \r
- created_on: 2007-04-22 12:20:48 +02:00\r
- tweek: 16\r
- tmonth: 4\r
- project_id: 3\r
- comments: Time spent on a subproject\r
- updated_on: 2007-04-22 12:20:48 +02:00\r
- activity_id: 10\r
- spent_on: 2007-04-22\r
- issue_id: \r
- id: 4\r
- hours: 7.65\r
- user_id: 1\r
- tyear: 2007\r
+---
+time_entries_001:
+ created_on: 2007-03-23 12:54:18 +01:00
+ tweek: 12
+ tmonth: 3
+ project_id: 1
+ comments: My hours
+ updated_on: 2007-03-23 12:54:18 +01:00
+ activity_id: 9
+ spent_on: 2007-03-23
+ issue_id: 1
+ id: 1
+ hours: 4.25
+ user_id: 2
+ tyear: 2007
+time_entries_002:
+ created_on: 2007-03-23 14:11:04 +01:00
+ tweek: 11
+ tmonth: 3
+ project_id: 1
+ comments: ""
+ updated_on: 2007-03-23 14:11:04 +01:00
+ activity_id: 9
+ spent_on: 2007-03-12
+ issue_id: 1
+ id: 2
+ hours: 150.0
+ user_id: 1
+ tyear: 2007
+time_entries_003:
+ created_on: 2007-04-21 12:20:48 +02:00
+ tweek: 16
+ tmonth: 4
+ project_id: 1
+ comments: ""
+ updated_on: 2007-04-21 12:20:48 +02:00
+ activity_id: 9
+ spent_on: 2007-04-21
+ issue_id: 3
+ id: 3
+ hours: 1.0
+ user_id: 1
+ tyear: 2007
+time_entries_004:
+ created_on: 2007-04-22 12:20:48 +02:00
+ tweek: 16
+ tmonth: 4
+ project_id: 3
+ comments: Time spent on a subproject
+ updated_on: 2007-04-22 12:20:48 +02:00
+ activity_id: 10
+ spent_on: 2007-04-22
+ issue_id:
+ id: 4
+ hours: 7.65
+ user_id: 1
+ tyear: 2007
\ No newline at end of file
---- \r
-tokens_001: \r
- created_on: 2007-01-21 00:39:12 +01:00\r
- action: register\r
- id: 1\r
- value: DwMJ2yIxBNeAk26znMYzYmz5dAiIina0GFrPnGTM\r
- user_id: 1\r
-tokens_002: \r
- created_on: 2007-01-21 00:39:52 +01:00\r
- action: recovery\r
- id: 2\r
- value: sahYSIaoYrsZUef86sTHrLISdznW6ApF36h5WSnm\r
- user_id: 2\r
+---
+tokens_001:
+ created_on: 2007-01-21 00:39:12 +01:00
+ action: register
+ id: 1
+ value: DwMJ2yIxBNeAk26znMYzYmz5dAiIina0GFrPnGTM
+ user_id: 1
+tokens_002:
+ created_on: 2007-01-21 00:39:52 +01:00
+ action: recovery
+ id: 2
+ value: sahYSIaoYrsZUef86sTHrLISdznW6ApF36h5WSnm
+ user_id: 2
---- \r
-trackers_001: \r
- name: Bug\r
- id: 1\r
- is_in_chlog: true\r
- position: 1\r
-trackers_002: \r
- name: Feature request\r
- id: 2\r
- is_in_chlog: true\r
- position: 2\r
-trackers_003: \r
- name: Support request\r
- id: 3\r
- is_in_chlog: false\r
- position: 3\r
+---
+trackers_001:
+ name: Bug
+ id: 1
+ is_in_chlog: true
+ position: 1
+trackers_002:
+ name: Feature request
+ id: 2
+ is_in_chlog: true
+ position: 2
+trackers_003:
+ name: Support request
+ id: 3
+ is_in_chlog: false
+ position: 3
---- \r
-users_004: \r
- created_on: 2006-07-19 19:34:07 +02:00\r
- status: 1\r
- last_login_on: \r
- language: en\r
- hashed_password: 4e4aeb7baaf0706bd670263fef42dad15763b608\r
- updated_on: 2006-07-19 19:34:07 +02:00\r
- admin: false\r
- mail: rhill@somenet.foo\r
- lastname: Hill\r
- firstname: Robert\r
- id: 4\r
- auth_source_id: \r
- mail_notification: true\r
- login: rhill\r
- type: User\r
-users_001: \r
- created_on: 2006-07-19 19:12:21 +02:00\r
- status: 1\r
- last_login_on: 2006-07-19 22:57:52 +02:00\r
- language: en\r
- hashed_password: d033e22ae348aeb5660fc2140aec35850c4da997\r
- updated_on: 2006-07-19 22:57:52 +02:00\r
- admin: true\r
- mail: admin@somenet.foo\r
- lastname: Admin\r
- firstname: redMine\r
- id: 1\r
- auth_source_id: \r
- mail_notification: true\r
- login: admin\r
- type: User\r
-users_002: \r
- created_on: 2006-07-19 19:32:09 +02:00\r
- status: 1\r
- last_login_on: 2006-07-19 22:42:15 +02:00\r
- language: en\r
- hashed_password: a9a653d4151fa2c081ba1ffc2c2726f3b80b7d7d\r
- updated_on: 2006-07-19 22:42:15 +02:00\r
- admin: false\r
- mail: jsmith@somenet.foo\r
- lastname: Smith\r
- firstname: John\r
- id: 2\r
- auth_source_id: \r
- mail_notification: true\r
- login: jsmith\r
- type: User\r
-users_003: \r
- created_on: 2006-07-19 19:33:19 +02:00\r
- status: 1\r
- last_login_on: \r
- language: en\r
- hashed_password: 7feb7657aa7a7bf5aef3414a5084875f27192415\r
- updated_on: 2006-07-19 19:33:19 +02:00\r
- admin: false\r
- mail: dlopper@somenet.foo\r
- lastname: Lopper\r
- firstname: Dave\r
- id: 3\r
- auth_source_id: \r
- mail_notification: true\r
- login: dlopper\r
- type: User\r
-users_005: \r
- id: 5\r
- created_on: 2006-07-19 19:33:19 +02:00\r
- # Locked\r
- status: 3\r
- last_login_on: \r
- language: en\r
- hashed_password: 7feb7657aa7a7bf5aef3414a5084875f27192415\r
- updated_on: 2006-07-19 19:33:19 +02:00\r
- admin: false\r
- mail: dlopper2@somenet.foo\r
- lastname: Lopper2\r
- firstname: Dave2\r
- auth_source_id: \r
- mail_notification: true\r
- login: dlopper2\r
- type: User\r
-users_006: \r
- id: 6\r
- created_on: 2006-07-19 19:33:19 +02:00\r
- status: 1\r
- last_login_on: \r
- language: ''\r
- hashed_password: 1\r
- updated_on: 2006-07-19 19:33:19 +02:00\r
- admin: false\r
- mail: ''\r
- lastname: Anonymous\r
- firstname: ''\r
- auth_source_id: \r
- mail_notification: false\r
- login: ''\r
- type: AnonymousUser\r
-users_007: \r
- id: 7\r
- created_on: 2006-07-19 19:33:19 +02:00\r
- status: 1\r
- last_login_on: \r
- language: ''\r
- hashed_password: 1\r
- updated_on: 2006-07-19 19:33:19 +02:00\r
- admin: false\r
- mail: someone@foo.bar\r
- lastname: One\r
- firstname: Some\r
- auth_source_id: \r
- mail_notification: false\r
- login: someone\r
- type: User\r
-users_008: \r
- id: 8\r
- created_on: 2006-07-19 19:33:19 +02:00\r
- status: 1\r
- last_login_on: \r
- language: 'it'\r
- hashed_password: 1\r
- updated_on: 2006-07-19 19:33:19 +02:00\r
- admin: false\r
- mail: miscuser8@foo.bar\r
- lastname: Misc\r
- firstname: User\r
- auth_source_id: \r
- mail_notification: false\r
- login: miscuser8\r
- type: User\r
-users_009: \r
- id: 9\r
- created_on: 2006-07-19 19:33:19 +02:00\r
- status: 1\r
- last_login_on: \r
- language: 'it'\r
- hashed_password: 1\r
- updated_on: 2006-07-19 19:33:19 +02:00\r
- admin: false\r
- mail: miscuser9@foo.bar\r
- lastname: Misc\r
- firstname: User\r
- auth_source_id: \r
- mail_notification: false\r
- login: miscuser9\r
- type: User\r
-groups_010: \r
- id: 10\r
- lastname: A Team\r
- type: Group\r
-groups_011: \r
- id: 11\r
- lastname: B Team\r
- type: Group\r
-\r
+---
+users_004:
+ created_on: 2006-07-19 19:34:07 +02:00
+ status: 1
+ last_login_on:
+ language: en
+ hashed_password: 4e4aeb7baaf0706bd670263fef42dad15763b608
+ updated_on: 2006-07-19 19:34:07 +02:00
+ admin: false
+ mail: rhill@somenet.foo
+ lastname: Hill
+ firstname: Robert
+ id: 4
+ auth_source_id:
+ mail_notification: true
+ login: rhill
+ type: User
+users_001:
+ created_on: 2006-07-19 19:12:21 +02:00
+ status: 1
+ last_login_on: 2006-07-19 22:57:52 +02:00
+ language: en
+ hashed_password: d033e22ae348aeb5660fc2140aec35850c4da997
+ updated_on: 2006-07-19 22:57:52 +02:00
+ admin: true
+ mail: admin@somenet.foo
+ lastname: Admin
+ firstname: redMine
+ id: 1
+ auth_source_id:
+ mail_notification: true
+ login: admin
+ type: User
+users_002:
+ created_on: 2006-07-19 19:32:09 +02:00
+ status: 1
+ last_login_on: 2006-07-19 22:42:15 +02:00
+ language: en
+ hashed_password: a9a653d4151fa2c081ba1ffc2c2726f3b80b7d7d
+ updated_on: 2006-07-19 22:42:15 +02:00
+ admin: false
+ mail: jsmith@somenet.foo
+ lastname: Smith
+ firstname: John
+ id: 2
+ auth_source_id:
+ mail_notification: true
+ login: jsmith
+ type: User
+users_003:
+ created_on: 2006-07-19 19:33:19 +02:00
+ status: 1
+ last_login_on:
+ language: en
+ hashed_password: 7feb7657aa7a7bf5aef3414a5084875f27192415
+ updated_on: 2006-07-19 19:33:19 +02:00
+ admin: false
+ mail: dlopper@somenet.foo
+ lastname: Lopper
+ firstname: Dave
+ id: 3
+ auth_source_id:
+ mail_notification: true
+ login: dlopper
+ type: User
+users_005:
+ id: 5
+ created_on: 2006-07-19 19:33:19 +02:00
+ # Locked
+ status: 3
+ last_login_on:
+ language: en
+ hashed_password: 7feb7657aa7a7bf5aef3414a5084875f27192415
+ updated_on: 2006-07-19 19:33:19 +02:00
+ admin: false
+ mail: dlopper2@somenet.foo
+ lastname: Lopper2
+ firstname: Dave2
+ auth_source_id:
+ mail_notification: true
+ login: dlopper2
+ type: User
+users_006:
+ id: 6
+ created_on: 2006-07-19 19:33:19 +02:00
+ status: 1
+ last_login_on:
+ language: ''
+ hashed_password: 1
+ updated_on: 2006-07-19 19:33:19 +02:00
+ admin: false
+ mail: ''
+ lastname: Anonymous
+ firstname: ''
+ auth_source_id:
+ mail_notification: false
+ login: ''
+ type: AnonymousUser
+users_007:
+ id: 7
+ created_on: 2006-07-19 19:33:19 +02:00
+ status: 1
+ last_login_on:
+ language: ''
+ hashed_password: 1
+ updated_on: 2006-07-19 19:33:19 +02:00
+ admin: false
+ mail: someone@foo.bar
+ lastname: One
+ firstname: Some
+ auth_source_id:
+ mail_notification: false
+ login: someone
+ type: User
+users_008:
+ id: 8
+ created_on: 2006-07-19 19:33:19 +02:00
+ status: 1
+ last_login_on:
+ language: 'it'
+ hashed_password: 1
+ updated_on: 2006-07-19 19:33:19 +02:00
+ admin: false
+ mail: miscuser8@foo.bar
+ lastname: Misc
+ firstname: User
+ auth_source_id:
+ mail_notification: false
+ login: miscuser8
+ type: User
+users_009:
+ id: 9
+ created_on: 2006-07-19 19:33:19 +02:00
+ status: 1
+ last_login_on:
+ language: 'it'
+ hashed_password: 1
+ updated_on: 2006-07-19 19:33:19 +02:00
+ admin: false
+ mail: miscuser9@foo.bar
+ lastname: Misc
+ firstname: User
+ auth_source_id:
+ mail_notification: false
+ login: miscuser9
+ type: User
+groups_010:
+ id: 10
+ lastname: A Team
+ type: Group
+groups_011:
+ id: 11
+ lastname: B Team
+ type: Group
+
\ No newline at end of file
---- \r
-versions_001: \r
- created_on: 2006-07-19 21:00:07 +02:00\r
- name: "0.1"\r
- project_id: 1\r
- updated_on: 2006-07-19 21:00:07 +02:00\r
- id: 1\r
- description: Beta\r
- effective_date: 2006-07-01\r
-versions_002: \r
- created_on: 2006-07-19 21:00:33 +02:00\r
- name: "1.0"\r
- project_id: 1\r
- updated_on: 2006-07-19 21:00:33 +02:00\r
- id: 2\r
- description: Stable release\r
- effective_date: <%= 20.day.from_now.to_date.to_s(:db) %>\r
-versions_003: \r
- created_on: 2006-07-19 21:00:33 +02:00\r
- name: "2.0"\r
- project_id: 1\r
- updated_on: 2006-07-19 21:00:33 +02:00\r
- id: 3\r
- description: Future version\r
- effective_date: \r
+---
+versions_001:
+ created_on: 2006-07-19 21:00:07 +02:00
+ name: "0.1"
+ project_id: 1
+ updated_on: 2006-07-19 21:00:07 +02:00
+ id: 1
+ description: Beta
+ effective_date: 2006-07-01
+versions_002:
+ created_on: 2006-07-19 21:00:33 +02:00
+ name: "1.0"
+ project_id: 1
+ updated_on: 2006-07-19 21:00:33 +02:00
+ id: 2
+ description: Stable release
+ effective_date: <%= 20.day.from_now.to_date.to_s(:db) %>
+versions_003:
+ created_on: 2006-07-19 21:00:33 +02:00
+ name: "2.0"
+ project_id: 1
+ updated_on: 2006-07-19 21:00:33 +02:00
+ id: 3
+ description: Future version
+ effective_date:
\ No newline at end of file
---- \r
-wiki_content_versions_001: \r
- updated_on: 2007-03-07 00:08:07 +01:00\r
- page_id: 1\r
- id: 1\r
- version: 1\r
- author_id: 2\r
- comments: Page creation\r
- wiki_content_id: 1\r
- compression: ""\r
- data: |-\r
- h1. CookBook documentation\r\r
- \r\r
- Some [[documentation]] here...\r
-wiki_content_versions_002: \r
- updated_on: 2007-03-07 00:08:34 +01:00\r
- page_id: 1\r
- id: 2\r
- version: 2\r
- author_id: 1\r
- comments: Small update\r
- wiki_content_id: 1\r
- compression: ""\r
- data: |-\r
- h1. CookBook documentation\r\r
- \r\r
- Some updated [[documentation]] here...\r
-wiki_content_versions_003: \r
- updated_on: 2007-03-07 00:10:51 +01:00\r
- page_id: 1\r
- id: 3\r
- version: 3\r
- author_id: 1\r
- comments: ""\r
- wiki_content_id: 1\r
- compression: ""\r
- data: |-\r
- h1. CookBook documentation\r
- Some updated [[documentation]] here...\r
-wiki_content_versions_004: \r
- data: |-\r
- h1. Another page\r
- \r
- This is a link to a ticket: #2\r
- updated_on: 2007-03-08 00:18:07 +01:00\r
- page_id: 2\r
- wiki_content_id: 2\r
- id: 4\r
- version: 1\r
- author_id: 1\r
- comments: \r
- \r
+---
+wiki_content_versions_001:
+ updated_on: 2007-03-07 00:08:07 +01:00
+ page_id: 1
+ id: 1
+ version: 1
+ author_id: 2
+ comments: Page creation
+ wiki_content_id: 1
+ compression: ""
+ data: |-
+ h1. CookBook documentation
+
+
+
+ Some [[documentation]] here...
+wiki_content_versions_002:
+ updated_on: 2007-03-07 00:08:34 +01:00
+ page_id: 1
+ id: 2
+ version: 2
+ author_id: 1
+ comments: Small update
+ wiki_content_id: 1
+ compression: ""
+ data: |-
+ h1. CookBook documentation
+
+
+
+ Some updated [[documentation]] here...
+wiki_content_versions_003:
+ updated_on: 2007-03-07 00:10:51 +01:00
+ page_id: 1
+ id: 3
+ version: 3
+ author_id: 1
+ comments: ""
+ wiki_content_id: 1
+ compression: ""
+ data: |-
+ h1. CookBook documentation
+ Some updated [[documentation]] here...
+wiki_content_versions_004:
+ data: |-
+ h1. Another page
+
+ This is a link to a ticket: #2
+ updated_on: 2007-03-08 00:18:07 +01:00
+ page_id: 2
+ wiki_content_id: 2
+ id: 4
+ version: 1
+ author_id: 1
+ comments:
+
---- \r
-wiki_contents_001: \r
- text: |-\r
- h1. CookBook documentation\r\r
- {{child_pages}}\r\r
- Some updated [[documentation]] here with gzipped history\r
- updated_on: 2007-03-07 00:10:51 +01:00\r
- page_id: 1\r
- id: 1\r
- version: 3\r
- author_id: 1\r
- comments: Gzip compression activated\r
-wiki_contents_002: \r
- text: |-\r
- h1. Another page\r
- \r
- This is a link to a ticket: #2\r
- And this is an included page:\r
- {{include(Page with an inline image)}}\r
- updated_on: 2007-03-08 00:18:07 +01:00\r
- page_id: 2\r
- id: 2\r
- version: 1\r
- author_id: 1\r
- comments: \r
-wiki_contents_003: \r
- text: |-\r
- h1. Start page\r
- \r
- E-commerce web site start page\r
- updated_on: 2007-03-08 00:18:07 +01:00\r
- page_id: 3\r
- id: 3\r
- version: 1\r
- author_id: 1\r
- comments: \r
-wiki_contents_004: \r
- text: |-\r
- h1. Page with an inline image\r
- \r
- This is an inline image:\r
- \r
- !logo.gif!\r
- updated_on: 2007-03-08 00:18:07 +01:00\r
- page_id: 4\r
- id: 4\r
- version: 1\r
- author_id: 1\r
- comments: \r
-wiki_contents_005: \r
- text: |-\r
- h1. Child page 1\r
- \r
- This is a child page\r
- updated_on: 2007-03-08 00:18:07 +01:00\r
- page_id: 5\r
- id: 5\r
- version: 1\r
- author_id: 1\r
- comments: \r
-wiki_contents_006: \r
- text: |-\r
- h1. Child page 2\r
- \r
- This is a child page\r
- updated_on: 2007-03-08 00:18:07 +01:00\r
- page_id: 6\r
- id: 6\r
- version: 1\r
- author_id: 1\r
- comments: \r
+---
+wiki_contents_001:
+ text: |-
+ h1. CookBook documentation
+
+ {{child_pages}}
+
+ Some updated [[documentation]] here with gzipped history
+ updated_on: 2007-03-07 00:10:51 +01:00
+ page_id: 1
+ id: 1
+ version: 3
+ author_id: 1
+ comments: Gzip compression activated
+wiki_contents_002:
+ text: |-
+ h1. Another page
+
+ This is a link to a ticket: #2
+ And this is an included page:
+ {{include(Page with an inline image)}}
+ updated_on: 2007-03-08 00:18:07 +01:00
+ page_id: 2
+ id: 2
+ version: 1
+ author_id: 1
+ comments:
+wiki_contents_003:
+ text: |-
+ h1. Start page
+
+ E-commerce web site start page
+ updated_on: 2007-03-08 00:18:07 +01:00
+ page_id: 3
+ id: 3
+ version: 1
+ author_id: 1
+ comments:
+wiki_contents_004:
+ text: |-
+ h1. Page with an inline image
+
+ This is an inline image:
+
+ !logo.gif!
+ updated_on: 2007-03-08 00:18:07 +01:00
+ page_id: 4
+ id: 4
+ version: 1
+ author_id: 1
+ comments:
+wiki_contents_005:
+ text: |-
+ h1. Child page 1
+
+ This is a child page
+ updated_on: 2007-03-08 00:18:07 +01:00
+ page_id: 5
+ id: 5
+ version: 1
+ author_id: 1
+ comments:
+wiki_contents_006:
+ text: |-
+ h1. Child page 2
+
+ This is a child page
+ updated_on: 2007-03-08 00:18:07 +01:00
+ page_id: 6
+ id: 6
+ version: 1
+ author_id: 1
+ comments:
\ No newline at end of file
---- \r
-wiki_pages_001: \r
- created_on: 2007-03-07 00:08:07 +01:00\r
- title: CookBook_documentation\r
- id: 1\r
- wiki_id: 1\r
- protected: true\r
- parent_id: \r
-wiki_pages_002: \r
- created_on: 2007-03-08 00:18:07 +01:00\r
- title: Another_page\r
- id: 2\r
- wiki_id: 1\r
- protected: false\r
- parent_id: \r
-wiki_pages_003: \r
- created_on: 2007-03-08 00:18:07 +01:00\r
- title: Start_page\r
- id: 3\r
- wiki_id: 2\r
- protected: false\r
- parent_id: \r
-wiki_pages_004: \r
- created_on: 2007-03-08 00:18:07 +01:00\r
- title: Page_with_an_inline_image\r
- id: 4\r
- wiki_id: 1\r
- protected: false\r
- parent_id: 1\r
-wiki_pages_005: \r
- created_on: 2007-03-08 00:18:07 +01:00\r
- title: Child_1\r
- id: 5\r
- wiki_id: 1\r
- protected: false\r
- parent_id: 2\r
-wiki_pages_006: \r
- created_on: 2007-03-08 00:18:07 +01:00\r
- title: Child_2\r
- id: 6\r
- wiki_id: 1\r
- protected: false\r
- parent_id: 2\r
+---
+wiki_pages_001:
+ created_on: 2007-03-07 00:08:07 +01:00
+ title: CookBook_documentation
+ id: 1
+ wiki_id: 1
+ protected: true
+ parent_id:
+wiki_pages_002:
+ created_on: 2007-03-08 00:18:07 +01:00
+ title: Another_page
+ id: 2
+ wiki_id: 1
+ protected: false
+ parent_id:
+wiki_pages_003:
+ created_on: 2007-03-08 00:18:07 +01:00
+ title: Start_page
+ id: 3
+ wiki_id: 2
+ protected: false
+ parent_id:
+wiki_pages_004:
+ created_on: 2007-03-08 00:18:07 +01:00
+ title: Page_with_an_inline_image
+ id: 4
+ wiki_id: 1
+ protected: false
+ parent_id: 1
+wiki_pages_005:
+ created_on: 2007-03-08 00:18:07 +01:00
+ title: Child_1
+ id: 5
+ wiki_id: 1
+ protected: false
+ parent_id: 2
+wiki_pages_006:
+ created_on: 2007-03-08 00:18:07 +01:00
+ title: Child_2
+ id: 6
+ wiki_id: 1
+ protected: false
+ parent_id: 2
\ No newline at end of file
---- \r
-wikis_001: \r
- status: 1\r
- start_page: CookBook documentation\r
- project_id: 1\r
- id: 1\r
-wikis_002: \r
- status: 1\r
- start_page: Start page\r
- project_id: 2\r
- id: 2\r
+---
+wikis_001:
+ status: 1
+ start_page: CookBook documentation
+ project_id: 1
+ id: 1
+wikis_002:
+ status: 1
+ start_page: Start page
+ project_id: 2
+ id: 2
\ No newline at end of file
---- \r
-workflows_189: \r
- new_status_id: 5\r
- role_id: 1\r
- old_status_id: 2\r
- id: 189\r
- tracker_id: 3\r
-workflows_001: \r
- new_status_id: 2\r
- role_id: 1\r
- old_status_id: 1\r
- id: 1\r
- tracker_id: 1\r
-workflows_002: \r
- new_status_id: 3\r
- role_id: 1\r
- old_status_id: 1\r
- id: 2\r
- tracker_id: 1\r
-workflows_003: \r
- new_status_id: 4\r
- role_id: 1\r
- old_status_id: 1\r
- id: 3\r
- tracker_id: 1\r
-workflows_110: \r
- new_status_id: 6\r
- role_id: 1\r
- old_status_id: 4\r
- id: 110\r
- tracker_id: 2\r
-workflows_004: \r
- new_status_id: 5\r
- role_id: 1\r
- old_status_id: 1\r
- id: 4\r
- tracker_id: 1\r
-workflows_030: \r
- new_status_id: 5\r
- role_id: 1\r
- old_status_id: 6\r
- id: 30\r
- tracker_id: 1\r
-workflows_111: \r
- new_status_id: 1\r
- role_id: 1\r
- old_status_id: 5\r
- id: 111\r
- tracker_id: 2\r
-workflows_005: \r
- new_status_id: 6\r
- role_id: 1\r
- old_status_id: 1\r
- id: 5\r
- tracker_id: 1\r
-workflows_031: \r
- new_status_id: 2\r
- role_id: 2\r
- old_status_id: 1\r
- id: 31\r
- tracker_id: 1\r
-workflows_112: \r
- new_status_id: 2\r
- role_id: 1\r
- old_status_id: 5\r
- id: 112\r
- tracker_id: 2\r
-workflows_006: \r
- new_status_id: 1\r
- role_id: 1\r
- old_status_id: 2\r
- id: 6\r
- tracker_id: 1\r
-workflows_032: \r
- new_status_id: 3\r
- role_id: 2\r
- old_status_id: 1\r
- id: 32\r
- tracker_id: 1\r
-workflows_113: \r
- new_status_id: 3\r
- role_id: 1\r
- old_status_id: 5\r
- id: 113\r
- tracker_id: 2\r
-workflows_220: \r
- new_status_id: 6\r
- role_id: 2\r
- old_status_id: 2\r
- id: 220\r
- tracker_id: 3\r
-workflows_007: \r
- new_status_id: 3\r
- role_id: 1\r
- old_status_id: 2\r
- id: 7\r
- tracker_id: 1\r
-workflows_033: \r
- new_status_id: 4\r
- role_id: 2\r
- old_status_id: 1\r
- id: 33\r
- tracker_id: 1\r
-workflows_060: \r
- new_status_id: 5\r
- role_id: 2\r
- old_status_id: 6\r
- id: 60\r
- tracker_id: 1\r
-workflows_114: \r
- new_status_id: 4\r
- role_id: 1\r
- old_status_id: 5\r
- id: 114\r
- tracker_id: 2\r
-workflows_140: \r
- new_status_id: 6\r
- role_id: 2\r
- old_status_id: 4\r
- id: 140\r
- tracker_id: 2\r
-workflows_221: \r
- new_status_id: 1\r
- role_id: 2\r
- old_status_id: 3\r
- id: 221\r
- tracker_id: 3\r
-workflows_008: \r
- new_status_id: 4\r
- role_id: 1\r
- old_status_id: 2\r
- id: 8\r
- tracker_id: 1\r
-workflows_034: \r
- new_status_id: 5\r
- role_id: 2\r
- old_status_id: 1\r
- id: 34\r
- tracker_id: 1\r
-workflows_115: \r
- new_status_id: 6\r
- role_id: 1\r
- old_status_id: 5\r
- id: 115\r
- tracker_id: 2\r
-workflows_141: \r
- new_status_id: 1\r
- role_id: 2\r
- old_status_id: 5\r
- id: 141\r
- tracker_id: 2\r
-workflows_222: \r
- new_status_id: 2\r
- role_id: 2\r
- old_status_id: 3\r
- id: 222\r
- tracker_id: 3\r
-workflows_223: \r
- new_status_id: 4\r
- role_id: 2\r
- old_status_id: 3\r
- id: 223\r
- tracker_id: 3\r
-workflows_009: \r
- new_status_id: 5\r
- role_id: 1\r
- old_status_id: 2\r
- id: 9\r
- tracker_id: 1\r
-workflows_035: \r
- new_status_id: 6\r
- role_id: 2\r
- old_status_id: 1\r
- id: 35\r
- tracker_id: 1\r
-workflows_061: \r
- new_status_id: 2\r
- role_id: 3\r
- old_status_id: 1\r
- id: 61\r
- tracker_id: 1\r
-workflows_116: \r
- new_status_id: 1\r
- role_id: 1\r
- old_status_id: 6\r
- id: 116\r
- tracker_id: 2\r
-workflows_142: \r
- new_status_id: 2\r
- role_id: 2\r
- old_status_id: 5\r
- id: 142\r
- tracker_id: 2\r
-workflows_250: \r
- new_status_id: 6\r
- role_id: 3\r
- old_status_id: 2\r
- id: 250\r
- tracker_id: 3\r
-workflows_224: \r
- new_status_id: 5\r
- role_id: 2\r
- old_status_id: 3\r
- id: 224\r
- tracker_id: 3\r
-workflows_036: \r
- new_status_id: 1\r
- role_id: 2\r
- old_status_id: 2\r
- id: 36\r
- tracker_id: 1\r
-workflows_062: \r
- new_status_id: 3\r
- role_id: 3\r
- old_status_id: 1\r
- id: 62\r
- tracker_id: 1\r
-workflows_117: \r
- new_status_id: 2\r
- role_id: 1\r
- old_status_id: 6\r
- id: 117\r
- tracker_id: 2\r
-workflows_143: \r
- new_status_id: 3\r
- role_id: 2\r
- old_status_id: 5\r
- id: 143\r
- tracker_id: 2\r
-workflows_170: \r
- new_status_id: 6\r
- role_id: 3\r
- old_status_id: 4\r
- id: 170\r
- tracker_id: 2\r
-workflows_251: \r
- new_status_id: 1\r
- role_id: 3\r
- old_status_id: 3\r
- id: 251\r
- tracker_id: 3\r
-workflows_225: \r
- new_status_id: 6\r
- role_id: 2\r
- old_status_id: 3\r
- id: 225\r
- tracker_id: 3\r
-workflows_063: \r
- new_status_id: 4\r
- role_id: 3\r
- old_status_id: 1\r
- id: 63\r
- tracker_id: 1\r
-workflows_090: \r
- new_status_id: 5\r
- role_id: 3\r
- old_status_id: 6\r
- id: 90\r
- tracker_id: 1\r
-workflows_118: \r
- new_status_id: 3\r
- role_id: 1\r
- old_status_id: 6\r
- id: 118\r
- tracker_id: 2\r
-workflows_144: \r
- new_status_id: 4\r
- role_id: 2\r
- old_status_id: 5\r
- id: 144\r
- tracker_id: 2\r
-workflows_252: \r
- new_status_id: 2\r
- role_id: 3\r
- old_status_id: 3\r
- id: 252\r
- tracker_id: 3\r
-workflows_226: \r
- new_status_id: 1\r
- role_id: 2\r
- old_status_id: 4\r
- id: 226\r
- tracker_id: 3\r
-workflows_038: \r
- new_status_id: 4\r
- role_id: 2\r
- old_status_id: 2\r
- id: 38\r
- tracker_id: 1\r
-workflows_064: \r
- new_status_id: 5\r
- role_id: 3\r
- old_status_id: 1\r
- id: 64\r
- tracker_id: 1\r
-workflows_091: \r
- new_status_id: 2\r
- role_id: 1\r
- old_status_id: 1\r
- id: 91\r
- tracker_id: 2\r
-workflows_119: \r
- new_status_id: 4\r
- role_id: 1\r
- old_status_id: 6\r
- id: 119\r
- tracker_id: 2\r
-workflows_145: \r
- new_status_id: 6\r
- role_id: 2\r
- old_status_id: 5\r
- id: 145\r
- tracker_id: 2\r
-workflows_171: \r
- new_status_id: 1\r
- role_id: 3\r
- old_status_id: 5\r
- id: 171\r
- tracker_id: 2\r
-workflows_253: \r
- new_status_id: 4\r
- role_id: 3\r
- old_status_id: 3\r
- id: 253\r
- tracker_id: 3\r
-workflows_227: \r
- new_status_id: 2\r
- role_id: 2\r
- old_status_id: 4\r
- id: 227\r
- tracker_id: 3\r
-workflows_039: \r
- new_status_id: 5\r
- role_id: 2\r
- old_status_id: 2\r
- id: 39\r
- tracker_id: 1\r
-workflows_065: \r
- new_status_id: 6\r
- role_id: 3\r
- old_status_id: 1\r
- id: 65\r
- tracker_id: 1\r
-workflows_092: \r
- new_status_id: 3\r
- role_id: 1\r
- old_status_id: 1\r
- id: 92\r
- tracker_id: 2\r
-workflows_146: \r
- new_status_id: 1\r
- role_id: 2\r
- old_status_id: 6\r
- id: 146\r
- tracker_id: 2\r
-workflows_172: \r
- new_status_id: 2\r
- role_id: 3\r
- old_status_id: 5\r
- id: 172\r
- tracker_id: 2\r
-workflows_254: \r
- new_status_id: 5\r
- role_id: 3\r
- old_status_id: 3\r
- id: 254\r
- tracker_id: 3\r
-workflows_228: \r
- new_status_id: 3\r
- role_id: 2\r
- old_status_id: 4\r
- id: 228\r
- tracker_id: 3\r
-workflows_066: \r
- new_status_id: 1\r
- role_id: 3\r
- old_status_id: 2\r
- id: 66\r
- tracker_id: 1\r
-workflows_093: \r
- new_status_id: 4\r
- role_id: 1\r
- old_status_id: 1\r
- id: 93\r
- tracker_id: 2\r
-workflows_147: \r
- new_status_id: 2\r
- role_id: 2\r
- old_status_id: 6\r
- id: 147\r
- tracker_id: 2\r
-workflows_173: \r
- new_status_id: 3\r
- role_id: 3\r
- old_status_id: 5\r
- id: 173\r
- tracker_id: 2\r
-workflows_255: \r
- new_status_id: 6\r
- role_id: 3\r
- old_status_id: 3\r
- id: 255\r
- tracker_id: 3\r
-workflows_229: \r
- new_status_id: 5\r
- role_id: 2\r
- old_status_id: 4\r
- id: 229\r
- tracker_id: 3\r
-workflows_067: \r
- new_status_id: 3\r
- role_id: 3\r
- old_status_id: 2\r
- id: 67\r
- tracker_id: 1\r
-workflows_148: \r
- new_status_id: 3\r
- role_id: 2\r
- old_status_id: 6\r
- id: 148\r
- tracker_id: 2\r
-workflows_174: \r
- new_status_id: 4\r
- role_id: 3\r
- old_status_id: 5\r
- id: 174\r
- tracker_id: 2\r
-workflows_256: \r
- new_status_id: 1\r
- role_id: 3\r
- old_status_id: 4\r
- id: 256\r
- tracker_id: 3\r
-workflows_068: \r
- new_status_id: 4\r
- role_id: 3\r
- old_status_id: 2\r
- id: 68\r
- tracker_id: 1\r
-workflows_094: \r
- new_status_id: 5\r
- role_id: 1\r
- old_status_id: 1\r
- id: 94\r
- tracker_id: 2\r
-workflows_149: \r
- new_status_id: 4\r
- role_id: 2\r
- old_status_id: 6\r
- id: 149\r
- tracker_id: 2\r
-workflows_175: \r
- new_status_id: 6\r
- role_id: 3\r
- old_status_id: 5\r
- id: 175\r
- tracker_id: 2\r
-workflows_257: \r
- new_status_id: 2\r
- role_id: 3\r
- old_status_id: 4\r
- id: 257\r
- tracker_id: 3\r
-workflows_069: \r
- new_status_id: 5\r
- role_id: 3\r
- old_status_id: 2\r
- id: 69\r
- tracker_id: 1\r
-workflows_095: \r
- new_status_id: 6\r
- role_id: 1\r
- old_status_id: 1\r
- id: 95\r
- tracker_id: 2\r
-workflows_176: \r
- new_status_id: 1\r
- role_id: 3\r
- old_status_id: 6\r
- id: 176\r
- tracker_id: 2\r
-workflows_258: \r
- new_status_id: 3\r
- role_id: 3\r
- old_status_id: 4\r
- id: 258\r
- tracker_id: 3\r
-workflows_096: \r
- new_status_id: 1\r
- role_id: 1\r
- old_status_id: 2\r
- id: 96\r
- tracker_id: 2\r
-workflows_177: \r
- new_status_id: 2\r
- role_id: 3\r
- old_status_id: 6\r
- id: 177\r
- tracker_id: 2\r
-workflows_259: \r
- new_status_id: 5\r
- role_id: 3\r
- old_status_id: 4\r
- id: 259\r
- tracker_id: 3\r
-workflows_097: \r
- new_status_id: 3\r
- role_id: 1\r
- old_status_id: 2\r
- id: 97\r
- tracker_id: 2\r
-workflows_178: \r
- new_status_id: 3\r
- role_id: 3\r
- old_status_id: 6\r
- id: 178\r
- tracker_id: 2\r
-workflows_098: \r
- new_status_id: 4\r
- role_id: 1\r
- old_status_id: 2\r
- id: 98\r
- tracker_id: 2\r
-workflows_179: \r
- new_status_id: 4\r
- role_id: 3\r
- old_status_id: 6\r
- id: 179\r
- tracker_id: 2\r
-workflows_099: \r
- new_status_id: 5\r
- role_id: 1\r
- old_status_id: 2\r
- id: 99\r
- tracker_id: 2\r
-workflows_100: \r
- new_status_id: 6\r
- role_id: 1\r
- old_status_id: 2\r
- id: 100\r
- tracker_id: 2\r
-workflows_020: \r
- new_status_id: 6\r
- role_id: 1\r
- old_status_id: 4\r
- id: 20\r
- tracker_id: 1\r
-workflows_101: \r
- new_status_id: 1\r
- role_id: 1\r
- old_status_id: 3\r
- id: 101\r
- tracker_id: 2\r
-workflows_021: \r
- new_status_id: 1\r
- role_id: 1\r
- old_status_id: 5\r
- id: 21\r
- tracker_id: 1\r
-workflows_102: \r
- new_status_id: 2\r
- role_id: 1\r
- old_status_id: 3\r
- id: 102\r
- tracker_id: 2\r
-workflows_210: \r
- new_status_id: 5\r
- role_id: 1\r
- old_status_id: 6\r
- id: 210\r
- tracker_id: 3\r
-workflows_022: \r
- new_status_id: 2\r
- role_id: 1\r
- old_status_id: 5\r
- id: 22\r
- tracker_id: 1\r
-workflows_103: \r
- new_status_id: 4\r
- role_id: 1\r
- old_status_id: 3\r
- id: 103\r
- tracker_id: 2\r
-workflows_023: \r
- new_status_id: 3\r
- role_id: 1\r
- old_status_id: 5\r
- id: 23\r
- tracker_id: 1\r
-workflows_104: \r
- new_status_id: 5\r
- role_id: 1\r
- old_status_id: 3\r
- id: 104\r
- tracker_id: 2\r
-workflows_130: \r
- new_status_id: 6\r
- role_id: 2\r
- old_status_id: 2\r
- id: 130\r
- tracker_id: 2\r
-workflows_211: \r
- new_status_id: 2\r
- role_id: 2\r
- old_status_id: 1\r
- id: 211\r
- tracker_id: 3\r
-workflows_024: \r
- new_status_id: 4\r
- role_id: 1\r
- old_status_id: 5\r
- id: 24\r
- tracker_id: 1\r
-workflows_050: \r
- new_status_id: 6\r
- role_id: 2\r
- old_status_id: 4\r
- id: 50\r
- tracker_id: 1\r
-workflows_105: \r
- new_status_id: 6\r
- role_id: 1\r
- old_status_id: 3\r
- id: 105\r
- tracker_id: 2\r
-workflows_131: \r
- new_status_id: 1\r
- role_id: 2\r
- old_status_id: 3\r
- id: 131\r
- tracker_id: 2\r
-workflows_212: \r
- new_status_id: 3\r
- role_id: 2\r
- old_status_id: 1\r
- id: 212\r
- tracker_id: 3\r
-workflows_025: \r
- new_status_id: 6\r
- role_id: 1\r
- old_status_id: 5\r
- id: 25\r
- tracker_id: 1\r
-workflows_051: \r
- new_status_id: 1\r
- role_id: 2\r
- old_status_id: 5\r
- id: 51\r
- tracker_id: 1\r
-workflows_106: \r
- new_status_id: 1\r
- role_id: 1\r
- old_status_id: 4\r
- id: 106\r
- tracker_id: 2\r
-workflows_132: \r
- new_status_id: 2\r
- role_id: 2\r
- old_status_id: 3\r
- id: 132\r
- tracker_id: 2\r
-workflows_213: \r
- new_status_id: 4\r
- role_id: 2\r
- old_status_id: 1\r
- id: 213\r
- tracker_id: 3\r
-workflows_240: \r
- new_status_id: 5\r
- role_id: 2\r
- old_status_id: 6\r
- id: 240\r
- tracker_id: 3\r
-workflows_026: \r
- new_status_id: 1\r
- role_id: 1\r
- old_status_id: 6\r
- id: 26\r
- tracker_id: 1\r
-workflows_052: \r
- new_status_id: 2\r
- role_id: 2\r
- old_status_id: 5\r
- id: 52\r
- tracker_id: 1\r
-workflows_107: \r
- new_status_id: 2\r
- role_id: 1\r
- old_status_id: 4\r
- id: 107\r
- tracker_id: 2\r
-workflows_133: \r
- new_status_id: 4\r
- role_id: 2\r
- old_status_id: 3\r
- id: 133\r
- tracker_id: 2\r
-workflows_214: \r
- new_status_id: 5\r
- role_id: 2\r
- old_status_id: 1\r
- id: 214\r
- tracker_id: 3\r
-workflows_241: \r
- new_status_id: 2\r
- role_id: 3\r
- old_status_id: 1\r
- id: 241\r
- tracker_id: 3\r
-workflows_027: \r
- new_status_id: 2\r
- role_id: 1\r
- old_status_id: 6\r
- id: 27\r
- tracker_id: 1\r
-workflows_053: \r
- new_status_id: 3\r
- role_id: 2\r
- old_status_id: 5\r
- id: 53\r
- tracker_id: 1\r
-workflows_080: \r
- new_status_id: 6\r
- role_id: 3\r
- old_status_id: 4\r
- id: 80\r
- tracker_id: 1\r
-workflows_108: \r
- new_status_id: 3\r
- role_id: 1\r
- old_status_id: 4\r
- id: 108\r
- tracker_id: 2\r
-workflows_134: \r
- new_status_id: 5\r
- role_id: 2\r
- old_status_id: 3\r
- id: 134\r
- tracker_id: 2\r
-workflows_160: \r
- new_status_id: 6\r
- role_id: 3\r
- old_status_id: 2\r
- id: 160\r
- tracker_id: 2\r
-workflows_215: \r
- new_status_id: 6\r
- role_id: 2\r
- old_status_id: 1\r
- id: 215\r
- tracker_id: 3\r
-workflows_242: \r
- new_status_id: 3\r
- role_id: 3\r
- old_status_id: 1\r
- id: 242\r
- tracker_id: 3\r
-workflows_028: \r
- new_status_id: 3\r
- role_id: 1\r
- old_status_id: 6\r
- id: 28\r
- tracker_id: 1\r
-workflows_054: \r
- new_status_id: 4\r
- role_id: 2\r
- old_status_id: 5\r
- id: 54\r
- tracker_id: 1\r
-workflows_081: \r
- new_status_id: 1\r
- role_id: 3\r
- old_status_id: 5\r
- id: 81\r
- tracker_id: 1\r
-workflows_109: \r
- new_status_id: 5\r
- role_id: 1\r
- old_status_id: 4\r
- id: 109\r
- tracker_id: 2\r
-workflows_135: \r
- new_status_id: 6\r
- role_id: 2\r
- old_status_id: 3\r
- id: 135\r
- tracker_id: 2\r
-workflows_161: \r
- new_status_id: 1\r
- role_id: 3\r
- old_status_id: 3\r
- id: 161\r
- tracker_id: 2\r
-workflows_216: \r
- new_status_id: 1\r
- role_id: 2\r
- old_status_id: 2\r
- id: 216\r
- tracker_id: 3\r
-workflows_243: \r
- new_status_id: 4\r
- role_id: 3\r
- old_status_id: 1\r
- id: 243\r
- tracker_id: 3\r
-workflows_029: \r
- new_status_id: 4\r
- role_id: 1\r
- old_status_id: 6\r
- id: 29\r
- tracker_id: 1\r
-workflows_055: \r
- new_status_id: 6\r
- role_id: 2\r
- old_status_id: 5\r
- id: 55\r
- tracker_id: 1\r
-workflows_082: \r
- new_status_id: 2\r
- role_id: 3\r
- old_status_id: 5\r
- id: 82\r
- tracker_id: 1\r
-workflows_136: \r
- new_status_id: 1\r
- role_id: 2\r
- old_status_id: 4\r
- id: 136\r
- tracker_id: 2\r
-workflows_162: \r
- new_status_id: 2\r
- role_id: 3\r
- old_status_id: 3\r
- id: 162\r
- tracker_id: 2\r
-workflows_217: \r
- new_status_id: 3\r
- role_id: 2\r
- old_status_id: 2\r
- id: 217\r
- tracker_id: 3\r
-workflows_270: \r
- new_status_id: 5\r
- role_id: 3\r
- old_status_id: 6\r
- id: 270\r
- tracker_id: 3\r
-workflows_244: \r
- new_status_id: 5\r
- role_id: 3\r
- old_status_id: 1\r
- id: 244\r
- tracker_id: 3\r
-workflows_056: \r
- new_status_id: 1\r
- role_id: 2\r
- old_status_id: 6\r
- id: 56\r
- tracker_id: 1\r
-workflows_137: \r
- new_status_id: 2\r
- role_id: 2\r
- old_status_id: 4\r
- id: 137\r
- tracker_id: 2\r
-workflows_163: \r
- new_status_id: 4\r
- role_id: 3\r
- old_status_id: 3\r
- id: 163\r
- tracker_id: 2\r
-workflows_190: \r
- new_status_id: 6\r
- role_id: 1\r
- old_status_id: 2\r
- id: 190\r
- tracker_id: 3\r
-workflows_218: \r
- new_status_id: 4\r
- role_id: 2\r
- old_status_id: 2\r
- id: 218\r
- tracker_id: 3\r
-workflows_245: \r
- new_status_id: 6\r
- role_id: 3\r
- old_status_id: 1\r
- id: 245\r
- tracker_id: 3\r
-workflows_057: \r
- new_status_id: 2\r
- role_id: 2\r
- old_status_id: 6\r
- id: 57\r
- tracker_id: 1\r
-workflows_083: \r
- new_status_id: 3\r
- role_id: 3\r
- old_status_id: 5\r
- id: 83\r
- tracker_id: 1\r
-workflows_138: \r
- new_status_id: 3\r
- role_id: 2\r
- old_status_id: 4\r
- id: 138\r
- tracker_id: 2\r
-workflows_164: \r
- new_status_id: 5\r
- role_id: 3\r
- old_status_id: 3\r
- id: 164\r
- tracker_id: 2\r
-workflows_191: \r
- new_status_id: 1\r
- role_id: 1\r
- old_status_id: 3\r
- id: 191\r
- tracker_id: 3\r
-workflows_219: \r
- new_status_id: 5\r
- role_id: 2\r
- old_status_id: 2\r
- id: 219\r
- tracker_id: 3\r
-workflows_246: \r
- new_status_id: 1\r
- role_id: 3\r
- old_status_id: 2\r
- id: 246\r
- tracker_id: 3\r
-workflows_058: \r
- new_status_id: 3\r
- role_id: 2\r
- old_status_id: 6\r
- id: 58\r
- tracker_id: 1\r
-workflows_084: \r
- new_status_id: 4\r
- role_id: 3\r
- old_status_id: 5\r
- id: 84\r
- tracker_id: 1\r
-workflows_139: \r
- new_status_id: 5\r
- role_id: 2\r
- old_status_id: 4\r
- id: 139\r
- tracker_id: 2\r
-workflows_165: \r
- new_status_id: 6\r
- role_id: 3\r
- old_status_id: 3\r
- id: 165\r
- tracker_id: 2\r
-workflows_192: \r
- new_status_id: 2\r
- role_id: 1\r
- old_status_id: 3\r
- id: 192\r
- tracker_id: 3\r
-workflows_247: \r
- new_status_id: 3\r
- role_id: 3\r
- old_status_id: 2\r
- id: 247\r
- tracker_id: 3\r
-workflows_059: \r
- new_status_id: 4\r
- role_id: 2\r
- old_status_id: 6\r
- id: 59\r
- tracker_id: 1\r
-workflows_085: \r
- new_status_id: 6\r
- role_id: 3\r
- old_status_id: 5\r
- id: 85\r
- tracker_id: 1\r
-workflows_166: \r
- new_status_id: 1\r
- role_id: 3\r
- old_status_id: 4\r
- id: 166\r
- tracker_id: 2\r
-workflows_248: \r
- new_status_id: 4\r
- role_id: 3\r
- old_status_id: 2\r
- id: 248\r
- tracker_id: 3\r
-workflows_086: \r
- new_status_id: 1\r
- role_id: 3\r
- old_status_id: 6\r
- id: 86\r
- tracker_id: 1\r
-workflows_167: \r
- new_status_id: 2\r
- role_id: 3\r
- old_status_id: 4\r
- id: 167\r
- tracker_id: 2\r
-workflows_193: \r
- new_status_id: 4\r
- role_id: 1\r
- old_status_id: 3\r
- id: 193\r
- tracker_id: 3\r
-workflows_249: \r
- new_status_id: 5\r
- role_id: 3\r
- old_status_id: 2\r
- id: 249\r
- tracker_id: 3\r
-workflows_087: \r
- new_status_id: 2\r
- role_id: 3\r
- old_status_id: 6\r
- id: 87\r
- tracker_id: 1\r
-workflows_168: \r
- new_status_id: 3\r
- role_id: 3\r
- old_status_id: 4\r
- id: 168\r
- tracker_id: 2\r
-workflows_194: \r
- new_status_id: 5\r
- role_id: 1\r
- old_status_id: 3\r
- id: 194\r
- tracker_id: 3\r
-workflows_088: \r
- new_status_id: 3\r
- role_id: 3\r
- old_status_id: 6\r
- id: 88\r
- tracker_id: 1\r
-workflows_169: \r
- new_status_id: 5\r
- role_id: 3\r
- old_status_id: 4\r
- id: 169\r
- tracker_id: 2\r
-workflows_195: \r
- new_status_id: 6\r
- role_id: 1\r
- old_status_id: 3\r
- id: 195\r
- tracker_id: 3\r
-workflows_089: \r
- new_status_id: 4\r
- role_id: 3\r
- old_status_id: 6\r
- id: 89\r
- tracker_id: 1\r
-workflows_196: \r
- new_status_id: 1\r
- role_id: 1\r
- old_status_id: 4\r
- id: 196\r
- tracker_id: 3\r
-workflows_197: \r
- new_status_id: 2\r
- role_id: 1\r
- old_status_id: 4\r
- id: 197\r
- tracker_id: 3\r
-workflows_198: \r
- new_status_id: 3\r
- role_id: 1\r
- old_status_id: 4\r
- id: 198\r
- tracker_id: 3\r
-workflows_199: \r
- new_status_id: 5\r
- role_id: 1\r
- old_status_id: 4\r
- id: 199\r
- tracker_id: 3\r
-workflows_010: \r
- new_status_id: 6\r
- role_id: 1\r
- old_status_id: 2\r
- id: 10\r
- tracker_id: 1\r
-workflows_011: \r
- new_status_id: 1\r
- role_id: 1\r
- old_status_id: 3\r
- id: 11\r
- tracker_id: 1\r
-workflows_012: \r
- new_status_id: 2\r
- role_id: 1\r
- old_status_id: 3\r
- id: 12\r
- tracker_id: 1\r
-workflows_200: \r
- new_status_id: 6\r
- role_id: 1\r
- old_status_id: 4\r
- id: 200\r
- tracker_id: 3\r
-workflows_013: \r
- new_status_id: 4\r
- role_id: 1\r
- old_status_id: 3\r
- id: 13\r
- tracker_id: 1\r
-workflows_120: \r
- new_status_id: 5\r
- role_id: 1\r
- old_status_id: 6\r
- id: 120\r
- tracker_id: 2\r
-workflows_201: \r
- new_status_id: 1\r
- role_id: 1\r
- old_status_id: 5\r
- id: 201\r
- tracker_id: 3\r
-workflows_040: \r
- new_status_id: 6\r
- role_id: 2\r
- old_status_id: 2\r
- id: 40\r
- tracker_id: 1\r
-workflows_121: \r
- new_status_id: 2\r
- role_id: 2\r
- old_status_id: 1\r
- id: 121\r
- tracker_id: 2\r
-workflows_202: \r
- new_status_id: 2\r
- role_id: 1\r
- old_status_id: 5\r
- id: 202\r
- tracker_id: 3\r
-workflows_014: \r
- new_status_id: 5\r
- role_id: 1\r
- old_status_id: 3\r
- id: 14\r
- tracker_id: 1\r
-workflows_041: \r
- new_status_id: 1\r
- role_id: 2\r
- old_status_id: 3\r
- id: 41\r
- tracker_id: 1\r
-workflows_122: \r
- new_status_id: 3\r
- role_id: 2\r
- old_status_id: 1\r
- id: 122\r
- tracker_id: 2\r
-workflows_203: \r
- new_status_id: 3\r
- role_id: 1\r
- old_status_id: 5\r
- id: 203\r
- tracker_id: 3\r
-workflows_015: \r
- new_status_id: 6\r
- role_id: 1\r
- old_status_id: 3\r
- id: 15\r
- tracker_id: 1\r
-workflows_230: \r
- new_status_id: 6\r
- role_id: 2\r
- old_status_id: 4\r
- id: 230\r
- tracker_id: 3\r
-workflows_123: \r
- new_status_id: 4\r
- role_id: 2\r
- old_status_id: 1\r
- id: 123\r
- tracker_id: 2\r
-workflows_204: \r
- new_status_id: 4\r
- role_id: 1\r
- old_status_id: 5\r
- id: 204\r
- tracker_id: 3\r
-workflows_016: \r
- new_status_id: 1\r
- role_id: 1\r
- old_status_id: 4\r
- id: 16\r
- tracker_id: 1\r
-workflows_042: \r
- new_status_id: 2\r
- role_id: 2\r
- old_status_id: 3\r
- id: 42\r
- tracker_id: 1\r
-workflows_231: \r
- new_status_id: 1\r
- role_id: 2\r
- old_status_id: 5\r
- id: 231\r
- tracker_id: 3\r
-workflows_070: \r
- new_status_id: 6\r
- role_id: 3\r
- old_status_id: 2\r
- id: 70\r
- tracker_id: 1\r
-workflows_124: \r
- new_status_id: 5\r
- role_id: 2\r
- old_status_id: 1\r
- id: 124\r
- tracker_id: 2\r
-workflows_150: \r
- new_status_id: 5\r
- role_id: 2\r
- old_status_id: 6\r
- id: 150\r
- tracker_id: 2\r
-workflows_205: \r
- new_status_id: 6\r
- role_id: 1\r
- old_status_id: 5\r
- id: 205\r
- tracker_id: 3\r
-workflows_017: \r
- new_status_id: 2\r
- role_id: 1\r
- old_status_id: 4\r
- id: 17\r
- tracker_id: 1\r
-workflows_043: \r
- new_status_id: 4\r
- role_id: 2\r
- old_status_id: 3\r
- id: 43\r
- tracker_id: 1\r
-workflows_232: \r
- new_status_id: 2\r
- role_id: 2\r
- old_status_id: 5\r
- id: 232\r
- tracker_id: 3\r
-workflows_125: \r
- new_status_id: 6\r
- role_id: 2\r
- old_status_id: 1\r
- id: 125\r
- tracker_id: 2\r
-workflows_151: \r
- new_status_id: 2\r
- role_id: 3\r
- old_status_id: 1\r
- id: 151\r
- tracker_id: 2\r
-workflows_206: \r
- new_status_id: 1\r
- role_id: 1\r
- old_status_id: 6\r
- id: 206\r
- tracker_id: 3\r
-workflows_018: \r
- new_status_id: 3\r
- role_id: 1\r
- old_status_id: 4\r
- id: 18\r
- tracker_id: 1\r
-workflows_044: \r
- new_status_id: 5\r
- role_id: 2\r
- old_status_id: 3\r
- id: 44\r
- tracker_id: 1\r
-workflows_071: \r
- new_status_id: 1\r
- role_id: 3\r
- old_status_id: 3\r
- id: 71\r
- tracker_id: 1\r
-workflows_233: \r
- new_status_id: 3\r
- role_id: 2\r
- old_status_id: 5\r
- id: 233\r
- tracker_id: 3\r
-workflows_126: \r
- new_status_id: 1\r
- role_id: 2\r
- old_status_id: 2\r
- id: 126\r
- tracker_id: 2\r
-workflows_152: \r
- new_status_id: 3\r
- role_id: 3\r
- old_status_id: 1\r
- id: 152\r
- tracker_id: 2\r
-workflows_207: \r
- new_status_id: 2\r
- role_id: 1\r
- old_status_id: 6\r
- id: 207\r
- tracker_id: 3\r
-workflows_019: \r
- new_status_id: 5\r
- role_id: 1\r
- old_status_id: 4\r
- id: 19\r
- tracker_id: 1\r
-workflows_045: \r
- new_status_id: 6\r
- role_id: 2\r
- old_status_id: 3\r
- id: 45\r
- tracker_id: 1\r
-workflows_260: \r
- new_status_id: 6\r
- role_id: 3\r
- old_status_id: 4\r
- id: 260\r
- tracker_id: 3\r
-workflows_234: \r
- new_status_id: 4\r
- role_id: 2\r
- old_status_id: 5\r
- id: 234\r
- tracker_id: 3\r
-workflows_127: \r
- new_status_id: 3\r
- role_id: 2\r
- old_status_id: 2\r
- id: 127\r
- tracker_id: 2\r
-workflows_153: \r
- new_status_id: 4\r
- role_id: 3\r
- old_status_id: 1\r
- id: 153\r
- tracker_id: 2\r
-workflows_180: \r
- new_status_id: 5\r
- role_id: 3\r
- old_status_id: 6\r
- id: 180\r
- tracker_id: 2\r
-workflows_208: \r
- new_status_id: 3\r
- role_id: 1\r
- old_status_id: 6\r
- id: 208\r
- tracker_id: 3\r
-workflows_046: \r
- new_status_id: 1\r
- role_id: 2\r
- old_status_id: 4\r
- id: 46\r
- tracker_id: 1\r
-workflows_072: \r
- new_status_id: 2\r
- role_id: 3\r
- old_status_id: 3\r
- id: 72\r
- tracker_id: 1\r
-workflows_261: \r
- new_status_id: 1\r
- role_id: 3\r
- old_status_id: 5\r
- id: 261\r
- tracker_id: 3\r
-workflows_235: \r
- new_status_id: 6\r
- role_id: 2\r
- old_status_id: 5\r
- id: 235\r
- tracker_id: 3\r
-workflows_154: \r
- new_status_id: 5\r
- role_id: 3\r
- old_status_id: 1\r
- id: 154\r
- tracker_id: 2\r
-workflows_181: \r
- new_status_id: 2\r
- role_id: 1\r
- old_status_id: 1\r
- id: 181\r
- tracker_id: 3\r
-workflows_209: \r
- new_status_id: 4\r
- role_id: 1\r
- old_status_id: 6\r
- id: 209\r
- tracker_id: 3\r
-workflows_047: \r
- new_status_id: 2\r
- role_id: 2\r
- old_status_id: 4\r
- id: 47\r
- tracker_id: 1\r
-workflows_073: \r
- new_status_id: 4\r
- role_id: 3\r
- old_status_id: 3\r
- id: 73\r
- tracker_id: 1\r
-workflows_128: \r
- new_status_id: 4\r
- role_id: 2\r
- old_status_id: 2\r
- id: 128\r
- tracker_id: 2\r
-workflows_262: \r
- new_status_id: 2\r
- role_id: 3\r
- old_status_id: 5\r
- id: 262\r
- tracker_id: 3\r
-workflows_236: \r
- new_status_id: 1\r
- role_id: 2\r
- old_status_id: 6\r
- id: 236\r
- tracker_id: 3\r
-workflows_155: \r
- new_status_id: 6\r
- role_id: 3\r
- old_status_id: 1\r
- id: 155\r
- tracker_id: 2\r
-workflows_048: \r
- new_status_id: 3\r
- role_id: 2\r
- old_status_id: 4\r
- id: 48\r
- tracker_id: 1\r
-workflows_074: \r
- new_status_id: 5\r
- role_id: 3\r
- old_status_id: 3\r
- id: 74\r
- tracker_id: 1\r
-workflows_129: \r
- new_status_id: 5\r
- role_id: 2\r
- old_status_id: 2\r
- id: 129\r
- tracker_id: 2\r
-workflows_263: \r
- new_status_id: 3\r
- role_id: 3\r
- old_status_id: 5\r
- id: 263\r
- tracker_id: 3\r
-workflows_237: \r
- new_status_id: 2\r
- role_id: 2\r
- old_status_id: 6\r
- id: 237\r
- tracker_id: 3\r
-workflows_182: \r
- new_status_id: 3\r
- role_id: 1\r
- old_status_id: 1\r
- id: 182\r
- tracker_id: 3\r
-workflows_049: \r
- new_status_id: 5\r
- role_id: 2\r
- old_status_id: 4\r
- id: 49\r
- tracker_id: 1\r
-workflows_075: \r
- new_status_id: 6\r
- role_id: 3\r
- old_status_id: 3\r
- id: 75\r
- tracker_id: 1\r
-workflows_156: \r
- new_status_id: 1\r
- role_id: 3\r
- old_status_id: 2\r
- id: 156\r
- tracker_id: 2\r
-workflows_264: \r
- new_status_id: 4\r
- role_id: 3\r
- old_status_id: 5\r
- id: 264\r
- tracker_id: 3\r
-workflows_238: \r
- new_status_id: 3\r
- role_id: 2\r
- old_status_id: 6\r
- id: 238\r
- tracker_id: 3\r
-workflows_183: \r
- new_status_id: 4\r
- role_id: 1\r
- old_status_id: 1\r
- id: 183\r
- tracker_id: 3\r
-workflows_076: \r
- new_status_id: 1\r
- role_id: 3\r
- old_status_id: 4\r
- id: 76\r
- tracker_id: 1\r
-workflows_157: \r
- new_status_id: 3\r
- role_id: 3\r
- old_status_id: 2\r
- id: 157\r
- tracker_id: 2\r
-workflows_265: \r
- new_status_id: 6\r
- role_id: 3\r
- old_status_id: 5\r
- id: 265\r
- tracker_id: 3\r
-workflows_239: \r
- new_status_id: 4\r
- role_id: 2\r
- old_status_id: 6\r
- id: 239\r
- tracker_id: 3\r
-workflows_077: \r
- new_status_id: 2\r
- role_id: 3\r
- old_status_id: 4\r
- id: 77\r
- tracker_id: 1\r
-workflows_158: \r
- new_status_id: 4\r
- role_id: 3\r
- old_status_id: 2\r
- id: 158\r
- tracker_id: 2\r
-workflows_184: \r
- new_status_id: 5\r
- role_id: 1\r
- old_status_id: 1\r
- id: 184\r
- tracker_id: 3\r
-workflows_266: \r
- new_status_id: 1\r
- role_id: 3\r
- old_status_id: 6\r
- id: 266\r
- tracker_id: 3\r
-workflows_078: \r
- new_status_id: 3\r
- role_id: 3\r
- old_status_id: 4\r
- id: 78\r
- tracker_id: 1\r
-workflows_159: \r
- new_status_id: 5\r
- role_id: 3\r
- old_status_id: 2\r
- id: 159\r
- tracker_id: 2\r
-workflows_185: \r
- new_status_id: 6\r
- role_id: 1\r
- old_status_id: 1\r
- id: 185\r
- tracker_id: 3\r
-workflows_267: \r
- new_status_id: 2\r
- role_id: 3\r
- old_status_id: 6\r
- id: 267\r
- tracker_id: 3\r
-workflows_079: \r
- new_status_id: 5\r
- role_id: 3\r
- old_status_id: 4\r
- id: 79\r
- tracker_id: 1\r
-workflows_186: \r
- new_status_id: 1\r
- role_id: 1\r
- old_status_id: 2\r
- id: 186\r
- tracker_id: 3\r
-workflows_268: \r
- new_status_id: 3\r
- role_id: 3\r
- old_status_id: 6\r
- id: 268\r
- tracker_id: 3\r
-workflows_187: \r
- new_status_id: 3\r
- role_id: 1\r
- old_status_id: 2\r
- id: 187\r
- tracker_id: 3\r
-workflows_269: \r
- new_status_id: 4\r
- role_id: 3\r
- old_status_id: 6\r
- id: 269\r
- tracker_id: 3\r
-workflows_188: \r
- new_status_id: 4\r
- role_id: 1\r
- old_status_id: 2\r
- id: 188\r
- tracker_id: 3\r
+---
+workflows_189:
+ new_status_id: 5
+ role_id: 1
+ old_status_id: 2
+ id: 189
+ tracker_id: 3
+workflows_001:
+ new_status_id: 2
+ role_id: 1
+ old_status_id: 1
+ id: 1
+ tracker_id: 1
+workflows_002:
+ new_status_id: 3
+ role_id: 1
+ old_status_id: 1
+ id: 2
+ tracker_id: 1
+workflows_003:
+ new_status_id: 4
+ role_id: 1
+ old_status_id: 1
+ id: 3
+ tracker_id: 1
+workflows_110:
+ new_status_id: 6
+ role_id: 1
+ old_status_id: 4
+ id: 110
+ tracker_id: 2
+workflows_004:
+ new_status_id: 5
+ role_id: 1
+ old_status_id: 1
+ id: 4
+ tracker_id: 1
+workflows_030:
+ new_status_id: 5
+ role_id: 1
+ old_status_id: 6
+ id: 30
+ tracker_id: 1
+workflows_111:
+ new_status_id: 1
+ role_id: 1
+ old_status_id: 5
+ id: 111
+ tracker_id: 2
+workflows_005:
+ new_status_id: 6
+ role_id: 1
+ old_status_id: 1
+ id: 5
+ tracker_id: 1
+workflows_031:
+ new_status_id: 2
+ role_id: 2
+ old_status_id: 1
+ id: 31
+ tracker_id: 1
+workflows_112:
+ new_status_id: 2
+ role_id: 1
+ old_status_id: 5
+ id: 112
+ tracker_id: 2
+workflows_006:
+ new_status_id: 1
+ role_id: 1
+ old_status_id: 2
+ id: 6
+ tracker_id: 1
+workflows_032:
+ new_status_id: 3
+ role_id: 2
+ old_status_id: 1
+ id: 32
+ tracker_id: 1
+workflows_113:
+ new_status_id: 3
+ role_id: 1
+ old_status_id: 5
+ id: 113
+ tracker_id: 2
+workflows_220:
+ new_status_id: 6
+ role_id: 2
+ old_status_id: 2
+ id: 220
+ tracker_id: 3
+workflows_007:
+ new_status_id: 3
+ role_id: 1
+ old_status_id: 2
+ id: 7
+ tracker_id: 1
+workflows_033:
+ new_status_id: 4
+ role_id: 2
+ old_status_id: 1
+ id: 33
+ tracker_id: 1
+workflows_060:
+ new_status_id: 5
+ role_id: 2
+ old_status_id: 6
+ id: 60
+ tracker_id: 1
+workflows_114:
+ new_status_id: 4
+ role_id: 1
+ old_status_id: 5
+ id: 114
+ tracker_id: 2
+workflows_140:
+ new_status_id: 6
+ role_id: 2
+ old_status_id: 4
+ id: 140
+ tracker_id: 2
+workflows_221:
+ new_status_id: 1
+ role_id: 2
+ old_status_id: 3
+ id: 221
+ tracker_id: 3
+workflows_008:
+ new_status_id: 4
+ role_id: 1
+ old_status_id: 2
+ id: 8
+ tracker_id: 1
+workflows_034:
+ new_status_id: 5
+ role_id: 2
+ old_status_id: 1
+ id: 34
+ tracker_id: 1
+workflows_115:
+ new_status_id: 6
+ role_id: 1
+ old_status_id: 5
+ id: 115
+ tracker_id: 2
+workflows_141:
+ new_status_id: 1
+ role_id: 2
+ old_status_id: 5
+ id: 141
+ tracker_id: 2
+workflows_222:
+ new_status_id: 2
+ role_id: 2
+ old_status_id: 3
+ id: 222
+ tracker_id: 3
+workflows_223:
+ new_status_id: 4
+ role_id: 2
+ old_status_id: 3
+ id: 223
+ tracker_id: 3
+workflows_009:
+ new_status_id: 5
+ role_id: 1
+ old_status_id: 2
+ id: 9
+ tracker_id: 1
+workflows_035:
+ new_status_id: 6
+ role_id: 2
+ old_status_id: 1
+ id: 35
+ tracker_id: 1
+workflows_061:
+ new_status_id: 2
+ role_id: 3
+ old_status_id: 1
+ id: 61
+ tracker_id: 1
+workflows_116:
+ new_status_id: 1
+ role_id: 1
+ old_status_id: 6
+ id: 116
+ tracker_id: 2
+workflows_142:
+ new_status_id: 2
+ role_id: 2
+ old_status_id: 5
+ id: 142
+ tracker_id: 2
+workflows_250:
+ new_status_id: 6
+ role_id: 3
+ old_status_id: 2
+ id: 250
+ tracker_id: 3
+workflows_224:
+ new_status_id: 5
+ role_id: 2
+ old_status_id: 3
+ id: 224
+ tracker_id: 3
+workflows_036:
+ new_status_id: 1
+ role_id: 2
+ old_status_id: 2
+ id: 36
+ tracker_id: 1
+workflows_062:
+ new_status_id: 3
+ role_id: 3
+ old_status_id: 1
+ id: 62
+ tracker_id: 1
+workflows_117:
+ new_status_id: 2
+ role_id: 1
+ old_status_id: 6
+ id: 117
+ tracker_id: 2
+workflows_143:
+ new_status_id: 3
+ role_id: 2
+ old_status_id: 5
+ id: 143
+ tracker_id: 2
+workflows_170:
+ new_status_id: 6
+ role_id: 3
+ old_status_id: 4
+ id: 170
+ tracker_id: 2
+workflows_251:
+ new_status_id: 1
+ role_id: 3
+ old_status_id: 3
+ id: 251
+ tracker_id: 3
+workflows_225:
+ new_status_id: 6
+ role_id: 2
+ old_status_id: 3
+ id: 225
+ tracker_id: 3
+workflows_063:
+ new_status_id: 4
+ role_id: 3
+ old_status_id: 1
+ id: 63
+ tracker_id: 1
+workflows_090:
+ new_status_id: 5
+ role_id: 3
+ old_status_id: 6
+ id: 90
+ tracker_id: 1
+workflows_118:
+ new_status_id: 3
+ role_id: 1
+ old_status_id: 6
+ id: 118
+ tracker_id: 2
+workflows_144:
+ new_status_id: 4
+ role_id: 2
+ old_status_id: 5
+ id: 144
+ tracker_id: 2
+workflows_252:
+ new_status_id: 2
+ role_id: 3
+ old_status_id: 3
+ id: 252
+ tracker_id: 3
+workflows_226:
+ new_status_id: 1
+ role_id: 2
+ old_status_id: 4
+ id: 226
+ tracker_id: 3
+workflows_038:
+ new_status_id: 4
+ role_id: 2
+ old_status_id: 2
+ id: 38
+ tracker_id: 1
+workflows_064:
+ new_status_id: 5
+ role_id: 3
+ old_status_id: 1
+ id: 64
+ tracker_id: 1
+workflows_091:
+ new_status_id: 2
+ role_id: 1
+ old_status_id: 1
+ id: 91
+ tracker_id: 2
+workflows_119:
+ new_status_id: 4
+ role_id: 1
+ old_status_id: 6
+ id: 119
+ tracker_id: 2
+workflows_145:
+ new_status_id: 6
+ role_id: 2
+ old_status_id: 5
+ id: 145
+ tracker_id: 2
+workflows_171:
+ new_status_id: 1
+ role_id: 3
+ old_status_id: 5
+ id: 171
+ tracker_id: 2
+workflows_253:
+ new_status_id: 4
+ role_id: 3
+ old_status_id: 3
+ id: 253
+ tracker_id: 3
+workflows_227:
+ new_status_id: 2
+ role_id: 2
+ old_status_id: 4
+ id: 227
+ tracker_id: 3
+workflows_039:
+ new_status_id: 5
+ role_id: 2
+ old_status_id: 2
+ id: 39
+ tracker_id: 1
+workflows_065:
+ new_status_id: 6
+ role_id: 3
+ old_status_id: 1
+ id: 65
+ tracker_id: 1
+workflows_092:
+ new_status_id: 3
+ role_id: 1
+ old_status_id: 1
+ id: 92
+ tracker_id: 2
+workflows_146:
+ new_status_id: 1
+ role_id: 2
+ old_status_id: 6
+ id: 146
+ tracker_id: 2
+workflows_172:
+ new_status_id: 2
+ role_id: 3
+ old_status_id: 5
+ id: 172
+ tracker_id: 2
+workflows_254:
+ new_status_id: 5
+ role_id: 3
+ old_status_id: 3
+ id: 254
+ tracker_id: 3
+workflows_228:
+ new_status_id: 3
+ role_id: 2
+ old_status_id: 4
+ id: 228
+ tracker_id: 3
+workflows_066:
+ new_status_id: 1
+ role_id: 3
+ old_status_id: 2
+ id: 66
+ tracker_id: 1
+workflows_093:
+ new_status_id: 4
+ role_id: 1
+ old_status_id: 1
+ id: 93
+ tracker_id: 2
+workflows_147:
+ new_status_id: 2
+ role_id: 2
+ old_status_id: 6
+ id: 147
+ tracker_id: 2
+workflows_173:
+ new_status_id: 3
+ role_id: 3
+ old_status_id: 5
+ id: 173
+ tracker_id: 2
+workflows_255:
+ new_status_id: 6
+ role_id: 3
+ old_status_id: 3
+ id: 255
+ tracker_id: 3
+workflows_229:
+ new_status_id: 5
+ role_id: 2
+ old_status_id: 4
+ id: 229
+ tracker_id: 3
+workflows_067:
+ new_status_id: 3
+ role_id: 3
+ old_status_id: 2
+ id: 67
+ tracker_id: 1
+workflows_148:
+ new_status_id: 3
+ role_id: 2
+ old_status_id: 6
+ id: 148
+ tracker_id: 2
+workflows_174:
+ new_status_id: 4
+ role_id: 3
+ old_status_id: 5
+ id: 174
+ tracker_id: 2
+workflows_256:
+ new_status_id: 1
+ role_id: 3
+ old_status_id: 4
+ id: 256
+ tracker_id: 3
+workflows_068:
+ new_status_id: 4
+ role_id: 3
+ old_status_id: 2
+ id: 68
+ tracker_id: 1
+workflows_094:
+ new_status_id: 5
+ role_id: 1
+ old_status_id: 1
+ id: 94
+ tracker_id: 2
+workflows_149:
+ new_status_id: 4
+ role_id: 2
+ old_status_id: 6
+ id: 149
+ tracker_id: 2
+workflows_175:
+ new_status_id: 6
+ role_id: 3
+ old_status_id: 5
+ id: 175
+ tracker_id: 2
+workflows_257:
+ new_status_id: 2
+ role_id: 3
+ old_status_id: 4
+ id: 257
+ tracker_id: 3
+workflows_069:
+ new_status_id: 5
+ role_id: 3
+ old_status_id: 2
+ id: 69
+ tracker_id: 1
+workflows_095:
+ new_status_id: 6
+ role_id: 1
+ old_status_id: 1
+ id: 95
+ tracker_id: 2
+workflows_176:
+ new_status_id: 1
+ role_id: 3
+ old_status_id: 6
+ id: 176
+ tracker_id: 2
+workflows_258:
+ new_status_id: 3
+ role_id: 3
+ old_status_id: 4
+ id: 258
+ tracker_id: 3
+workflows_096:
+ new_status_id: 1
+ role_id: 1
+ old_status_id: 2
+ id: 96
+ tracker_id: 2
+workflows_177:
+ new_status_id: 2
+ role_id: 3
+ old_status_id: 6
+ id: 177
+ tracker_id: 2
+workflows_259:
+ new_status_id: 5
+ role_id: 3
+ old_status_id: 4
+ id: 259
+ tracker_id: 3
+workflows_097:
+ new_status_id: 3
+ role_id: 1
+ old_status_id: 2
+ id: 97
+ tracker_id: 2
+workflows_178:
+ new_status_id: 3
+ role_id: 3
+ old_status_id: 6
+ id: 178
+ tracker_id: 2
+workflows_098:
+ new_status_id: 4
+ role_id: 1
+ old_status_id: 2
+ id: 98
+ tracker_id: 2
+workflows_179:
+ new_status_id: 4
+ role_id: 3
+ old_status_id: 6
+ id: 179
+ tracker_id: 2
+workflows_099:
+ new_status_id: 5
+ role_id: 1
+ old_status_id: 2
+ id: 99
+ tracker_id: 2
+workflows_100:
+ new_status_id: 6
+ role_id: 1
+ old_status_id: 2
+ id: 100
+ tracker_id: 2
+workflows_020:
+ new_status_id: 6
+ role_id: 1
+ old_status_id: 4
+ id: 20
+ tracker_id: 1
+workflows_101:
+ new_status_id: 1
+ role_id: 1
+ old_status_id: 3
+ id: 101
+ tracker_id: 2
+workflows_021:
+ new_status_id: 1
+ role_id: 1
+ old_status_id: 5
+ id: 21
+ tracker_id: 1
+workflows_102:
+ new_status_id: 2
+ role_id: 1
+ old_status_id: 3
+ id: 102
+ tracker_id: 2
+workflows_210:
+ new_status_id: 5
+ role_id: 1
+ old_status_id: 6
+ id: 210
+ tracker_id: 3
+workflows_022:
+ new_status_id: 2
+ role_id: 1
+ old_status_id: 5
+ id: 22
+ tracker_id: 1
+workflows_103:
+ new_status_id: 4
+ role_id: 1
+ old_status_id: 3
+ id: 103
+ tracker_id: 2
+workflows_023:
+ new_status_id: 3
+ role_id: 1
+ old_status_id: 5
+ id: 23
+ tracker_id: 1
+workflows_104:
+ new_status_id: 5
+ role_id: 1
+ old_status_id: 3
+ id: 104
+ tracker_id: 2
+workflows_130:
+ new_status_id: 6
+ role_id: 2
+ old_status_id: 2
+ id: 130
+ tracker_id: 2
+workflows_211:
+ new_status_id: 2
+ role_id: 2
+ old_status_id: 1
+ id: 211
+ tracker_id: 3
+workflows_024:
+ new_status_id: 4
+ role_id: 1
+ old_status_id: 5
+ id: 24
+ tracker_id: 1
+workflows_050:
+ new_status_id: 6
+ role_id: 2
+ old_status_id: 4
+ id: 50
+ tracker_id: 1
+workflows_105:
+ new_status_id: 6
+ role_id: 1
+ old_status_id: 3
+ id: 105
+ tracker_id: 2
+workflows_131:
+ new_status_id: 1
+ role_id: 2
+ old_status_id: 3
+ id: 131
+ tracker_id: 2
+workflows_212:
+ new_status_id: 3
+ role_id: 2
+ old_status_id: 1
+ id: 212
+ tracker_id: 3
+workflows_025:
+ new_status_id: 6
+ role_id: 1
+ old_status_id: 5
+ id: 25
+ tracker_id: 1
+workflows_051:
+ new_status_id: 1
+ role_id: 2
+ old_status_id: 5
+ id: 51
+ tracker_id: 1
+workflows_106:
+ new_status_id: 1
+ role_id: 1
+ old_status_id: 4
+ id: 106
+ tracker_id: 2
+workflows_132:
+ new_status_id: 2
+ role_id: 2
+ old_status_id: 3
+ id: 132
+ tracker_id: 2
+workflows_213:
+ new_status_id: 4
+ role_id: 2
+ old_status_id: 1
+ id: 213
+ tracker_id: 3
+workflows_240:
+ new_status_id: 5
+ role_id: 2
+ old_status_id: 6
+ id: 240
+ tracker_id: 3
+workflows_026:
+ new_status_id: 1
+ role_id: 1
+ old_status_id: 6
+ id: 26
+ tracker_id: 1
+workflows_052:
+ new_status_id: 2
+ role_id: 2
+ old_status_id: 5
+ id: 52
+ tracker_id: 1
+workflows_107:
+ new_status_id: 2
+ role_id: 1
+ old_status_id: 4
+ id: 107
+ tracker_id: 2
+workflows_133:
+ new_status_id: 4
+ role_id: 2
+ old_status_id: 3
+ id: 133
+ tracker_id: 2
+workflows_214:
+ new_status_id: 5
+ role_id: 2
+ old_status_id: 1
+ id: 214
+ tracker_id: 3
+workflows_241:
+ new_status_id: 2
+ role_id: 3
+ old_status_id: 1
+ id: 241
+ tracker_id: 3
+workflows_027:
+ new_status_id: 2
+ role_id: 1
+ old_status_id: 6
+ id: 27
+ tracker_id: 1
+workflows_053:
+ new_status_id: 3
+ role_id: 2
+ old_status_id: 5
+ id: 53
+ tracker_id: 1
+workflows_080:
+ new_status_id: 6
+ role_id: 3
+ old_status_id: 4
+ id: 80
+ tracker_id: 1
+workflows_108:
+ new_status_id: 3
+ role_id: 1
+ old_status_id: 4
+ id: 108
+ tracker_id: 2
+workflows_134:
+ new_status_id: 5
+ role_id: 2
+ old_status_id: 3
+ id: 134
+ tracker_id: 2
+workflows_160:
+ new_status_id: 6
+ role_id: 3
+ old_status_id: 2
+ id: 160
+ tracker_id: 2
+workflows_215:
+ new_status_id: 6
+ role_id: 2
+ old_status_id: 1
+ id: 215
+ tracker_id: 3
+workflows_242:
+ new_status_id: 3
+ role_id: 3
+ old_status_id: 1
+ id: 242
+ tracker_id: 3
+workflows_028:
+ new_status_id: 3
+ role_id: 1
+ old_status_id: 6
+ id: 28
+ tracker_id: 1
+workflows_054:
+ new_status_id: 4
+ role_id: 2
+ old_status_id: 5
+ id: 54
+ tracker_id: 1
+workflows_081:
+ new_status_id: 1
+ role_id: 3
+ old_status_id: 5
+ id: 81
+ tracker_id: 1
+workflows_109:
+ new_status_id: 5
+ role_id: 1
+ old_status_id: 4
+ id: 109
+ tracker_id: 2
+workflows_135:
+ new_status_id: 6
+ role_id: 2
+ old_status_id: 3
+ id: 135
+ tracker_id: 2
+workflows_161:
+ new_status_id: 1
+ role_id: 3
+ old_status_id: 3
+ id: 161
+ tracker_id: 2
+workflows_216:
+ new_status_id: 1
+ role_id: 2
+ old_status_id: 2
+ id: 216
+ tracker_id: 3
+workflows_243:
+ new_status_id: 4
+ role_id: 3
+ old_status_id: 1
+ id: 243
+ tracker_id: 3
+workflows_029:
+ new_status_id: 4
+ role_id: 1
+ old_status_id: 6
+ id: 29
+ tracker_id: 1
+workflows_055:
+ new_status_id: 6
+ role_id: 2
+ old_status_id: 5
+ id: 55
+ tracker_id: 1
+workflows_082:
+ new_status_id: 2
+ role_id: 3
+ old_status_id: 5
+ id: 82
+ tracker_id: 1
+workflows_136:
+ new_status_id: 1
+ role_id: 2
+ old_status_id: 4
+ id: 136
+ tracker_id: 2
+workflows_162:
+ new_status_id: 2
+ role_id: 3
+ old_status_id: 3
+ id: 162
+ tracker_id: 2
+workflows_217:
+ new_status_id: 3
+ role_id: 2
+ old_status_id: 2
+ id: 217
+ tracker_id: 3
+workflows_270:
+ new_status_id: 5
+ role_id: 3
+ old_status_id: 6
+ id: 270
+ tracker_id: 3
+workflows_244:
+ new_status_id: 5
+ role_id: 3
+ old_status_id: 1
+ id: 244
+ tracker_id: 3
+workflows_056:
+ new_status_id: 1
+ role_id: 2
+ old_status_id: 6
+ id: 56
+ tracker_id: 1
+workflows_137:
+ new_status_id: 2
+ role_id: 2
+ old_status_id: 4
+ id: 137
+ tracker_id: 2
+workflows_163:
+ new_status_id: 4
+ role_id: 3
+ old_status_id: 3
+ id: 163
+ tracker_id: 2
+workflows_190:
+ new_status_id: 6
+ role_id: 1
+ old_status_id: 2
+ id: 190
+ tracker_id: 3
+workflows_218:
+ new_status_id: 4
+ role_id: 2
+ old_status_id: 2
+ id: 218
+ tracker_id: 3
+workflows_245:
+ new_status_id: 6
+ role_id: 3
+ old_status_id: 1
+ id: 245
+ tracker_id: 3
+workflows_057:
+ new_status_id: 2
+ role_id: 2
+ old_status_id: 6
+ id: 57
+ tracker_id: 1
+workflows_083:
+ new_status_id: 3
+ role_id: 3
+ old_status_id: 5
+ id: 83
+ tracker_id: 1
+workflows_138:
+ new_status_id: 3
+ role_id: 2
+ old_status_id: 4
+ id: 138
+ tracker_id: 2
+workflows_164:
+ new_status_id: 5
+ role_id: 3
+ old_status_id: 3
+ id: 164
+ tracker_id: 2
+workflows_191:
+ new_status_id: 1
+ role_id: 1
+ old_status_id: 3
+ id: 191
+ tracker_id: 3
+workflows_219:
+ new_status_id: 5
+ role_id: 2
+ old_status_id: 2
+ id: 219
+ tracker_id: 3
+workflows_246:
+ new_status_id: 1
+ role_id: 3
+ old_status_id: 2
+ id: 246
+ tracker_id: 3
+workflows_058:
+ new_status_id: 3
+ role_id: 2
+ old_status_id: 6
+ id: 58
+ tracker_id: 1
+workflows_084:
+ new_status_id: 4
+ role_id: 3
+ old_status_id: 5
+ id: 84
+ tracker_id: 1
+workflows_139:
+ new_status_id: 5
+ role_id: 2
+ old_status_id: 4
+ id: 139
+ tracker_id: 2
+workflows_165:
+ new_status_id: 6
+ role_id: 3
+ old_status_id: 3
+ id: 165
+ tracker_id: 2
+workflows_192:
+ new_status_id: 2
+ role_id: 1
+ old_status_id: 3
+ id: 192
+ tracker_id: 3
+workflows_247:
+ new_status_id: 3
+ role_id: 3
+ old_status_id: 2
+ id: 247
+ tracker_id: 3
+workflows_059:
+ new_status_id: 4
+ role_id: 2
+ old_status_id: 6
+ id: 59
+ tracker_id: 1
+workflows_085:
+ new_status_id: 6
+ role_id: 3
+ old_status_id: 5
+ id: 85
+ tracker_id: 1
+workflows_166:
+ new_status_id: 1
+ role_id: 3
+ old_status_id: 4
+ id: 166
+ tracker_id: 2
+workflows_248:
+ new_status_id: 4
+ role_id: 3
+ old_status_id: 2
+ id: 248
+ tracker_id: 3
+workflows_086:
+ new_status_id: 1
+ role_id: 3
+ old_status_id: 6
+ id: 86
+ tracker_id: 1
+workflows_167:
+ new_status_id: 2
+ role_id: 3
+ old_status_id: 4
+ id: 167
+ tracker_id: 2
+workflows_193:
+ new_status_id: 4
+ role_id: 1
+ old_status_id: 3
+ id: 193
+ tracker_id: 3
+workflows_249:
+ new_status_id: 5
+ role_id: 3
+ old_status_id: 2
+ id: 249
+ tracker_id: 3
+workflows_087:
+ new_status_id: 2
+ role_id: 3
+ old_status_id: 6
+ id: 87
+ tracker_id: 1
+workflows_168:
+ new_status_id: 3
+ role_id: 3
+ old_status_id: 4
+ id: 168
+ tracker_id: 2
+workflows_194:
+ new_status_id: 5
+ role_id: 1
+ old_status_id: 3
+ id: 194
+ tracker_id: 3
+workflows_088:
+ new_status_id: 3
+ role_id: 3
+ old_status_id: 6
+ id: 88
+ tracker_id: 1
+workflows_169:
+ new_status_id: 5
+ role_id: 3
+ old_status_id: 4
+ id: 169
+ tracker_id: 2
+workflows_195:
+ new_status_id: 6
+ role_id: 1
+ old_status_id: 3
+ id: 195
+ tracker_id: 3
+workflows_089:
+ new_status_id: 4
+ role_id: 3
+ old_status_id: 6
+ id: 89
+ tracker_id: 1
+workflows_196:
+ new_status_id: 1
+ role_id: 1
+ old_status_id: 4
+ id: 196
+ tracker_id: 3
+workflows_197:
+ new_status_id: 2
+ role_id: 1
+ old_status_id: 4
+ id: 197
+ tracker_id: 3
+workflows_198:
+ new_status_id: 3
+ role_id: 1
+ old_status_id: 4
+ id: 198
+ tracker_id: 3
+workflows_199:
+ new_status_id: 5
+ role_id: 1
+ old_status_id: 4
+ id: 199
+ tracker_id: 3
+workflows_010:
+ new_status_id: 6
+ role_id: 1
+ old_status_id: 2
+ id: 10
+ tracker_id: 1
+workflows_011:
+ new_status_id: 1
+ role_id: 1
+ old_status_id: 3
+ id: 11
+ tracker_id: 1
+workflows_012:
+ new_status_id: 2
+ role_id: 1
+ old_status_id: 3
+ id: 12
+ tracker_id: 1
+workflows_200:
+ new_status_id: 6
+ role_id: 1
+ old_status_id: 4
+ id: 200
+ tracker_id: 3
+workflows_013:
+ new_status_id: 4
+ role_id: 1
+ old_status_id: 3
+ id: 13
+ tracker_id: 1
+workflows_120:
+ new_status_id: 5
+ role_id: 1
+ old_status_id: 6
+ id: 120
+ tracker_id: 2
+workflows_201:
+ new_status_id: 1
+ role_id: 1
+ old_status_id: 5
+ id: 201
+ tracker_id: 3
+workflows_040:
+ new_status_id: 6
+ role_id: 2
+ old_status_id: 2
+ id: 40
+ tracker_id: 1
+workflows_121:
+ new_status_id: 2
+ role_id: 2
+ old_status_id: 1
+ id: 121
+ tracker_id: 2
+workflows_202:
+ new_status_id: 2
+ role_id: 1
+ old_status_id: 5
+ id: 202
+ tracker_id: 3
+workflows_014:
+ new_status_id: 5
+ role_id: 1
+ old_status_id: 3
+ id: 14
+ tracker_id: 1
+workflows_041:
+ new_status_id: 1
+ role_id: 2
+ old_status_id: 3
+ id: 41
+ tracker_id: 1
+workflows_122:
+ new_status_id: 3
+ role_id: 2
+ old_status_id: 1
+ id: 122
+ tracker_id: 2
+workflows_203:
+ new_status_id: 3
+ role_id: 1
+ old_status_id: 5
+ id: 203
+ tracker_id: 3
+workflows_015:
+ new_status_id: 6
+ role_id: 1
+ old_status_id: 3
+ id: 15
+ tracker_id: 1
+workflows_230:
+ new_status_id: 6
+ role_id: 2
+ old_status_id: 4
+ id: 230
+ tracker_id: 3
+workflows_123:
+ new_status_id: 4
+ role_id: 2
+ old_status_id: 1
+ id: 123
+ tracker_id: 2
+workflows_204:
+ new_status_id: 4
+ role_id: 1
+ old_status_id: 5
+ id: 204
+ tracker_id: 3
+workflows_016:
+ new_status_id: 1
+ role_id: 1
+ old_status_id: 4
+ id: 16
+ tracker_id: 1
+workflows_042:
+ new_status_id: 2
+ role_id: 2
+ old_status_id: 3
+ id: 42
+ tracker_id: 1
+workflows_231:
+ new_status_id: 1
+ role_id: 2
+ old_status_id: 5
+ id: 231
+ tracker_id: 3
+workflows_070:
+ new_status_id: 6
+ role_id: 3
+ old_status_id: 2
+ id: 70
+ tracker_id: 1
+workflows_124:
+ new_status_id: 5
+ role_id: 2
+ old_status_id: 1
+ id: 124
+ tracker_id: 2
+workflows_150:
+ new_status_id: 5
+ role_id: 2
+ old_status_id: 6
+ id: 150
+ tracker_id: 2
+workflows_205:
+ new_status_id: 6
+ role_id: 1
+ old_status_id: 5
+ id: 205
+ tracker_id: 3
+workflows_017:
+ new_status_id: 2
+ role_id: 1
+ old_status_id: 4
+ id: 17
+ tracker_id: 1
+workflows_043:
+ new_status_id: 4
+ role_id: 2
+ old_status_id: 3
+ id: 43
+ tracker_id: 1
+workflows_232:
+ new_status_id: 2
+ role_id: 2
+ old_status_id: 5
+ id: 232
+ tracker_id: 3
+workflows_125:
+ new_status_id: 6
+ role_id: 2
+ old_status_id: 1
+ id: 125
+ tracker_id: 2
+workflows_151:
+ new_status_id: 2
+ role_id: 3
+ old_status_id: 1
+ id: 151
+ tracker_id: 2
+workflows_206:
+ new_status_id: 1
+ role_id: 1
+ old_status_id: 6
+ id: 206
+ tracker_id: 3
+workflows_018:
+ new_status_id: 3
+ role_id: 1
+ old_status_id: 4
+ id: 18
+ tracker_id: 1
+workflows_044:
+ new_status_id: 5
+ role_id: 2
+ old_status_id: 3
+ id: 44
+ tracker_id: 1
+workflows_071:
+ new_status_id: 1
+ role_id: 3
+ old_status_id: 3
+ id: 71
+ tracker_id: 1
+workflows_233:
+ new_status_id: 3
+ role_id: 2
+ old_status_id: 5
+ id: 233
+ tracker_id: 3
+workflows_126:
+ new_status_id: 1
+ role_id: 2
+ old_status_id: 2
+ id: 126
+ tracker_id: 2
+workflows_152:
+ new_status_id: 3
+ role_id: 3
+ old_status_id: 1
+ id: 152
+ tracker_id: 2
+workflows_207:
+ new_status_id: 2
+ role_id: 1
+ old_status_id: 6
+ id: 207
+ tracker_id: 3
+workflows_019:
+ new_status_id: 5
+ role_id: 1
+ old_status_id: 4
+ id: 19
+ tracker_id: 1
+workflows_045:
+ new_status_id: 6
+ role_id: 2
+ old_status_id: 3
+ id: 45
+ tracker_id: 1
+workflows_260:
+ new_status_id: 6
+ role_id: 3
+ old_status_id: 4
+ id: 260
+ tracker_id: 3
+workflows_234:
+ new_status_id: 4
+ role_id: 2
+ old_status_id: 5
+ id: 234
+ tracker_id: 3
+workflows_127:
+ new_status_id: 3
+ role_id: 2
+ old_status_id: 2
+ id: 127
+ tracker_id: 2
+workflows_153:
+ new_status_id: 4
+ role_id: 3
+ old_status_id: 1
+ id: 153
+ tracker_id: 2
+workflows_180:
+ new_status_id: 5
+ role_id: 3
+ old_status_id: 6
+ id: 180
+ tracker_id: 2
+workflows_208:
+ new_status_id: 3
+ role_id: 1
+ old_status_id: 6
+ id: 208
+ tracker_id: 3
+workflows_046:
+ new_status_id: 1
+ role_id: 2
+ old_status_id: 4
+ id: 46
+ tracker_id: 1
+workflows_072:
+ new_status_id: 2
+ role_id: 3
+ old_status_id: 3
+ id: 72
+ tracker_id: 1
+workflows_261:
+ new_status_id: 1
+ role_id: 3
+ old_status_id: 5
+ id: 261
+ tracker_id: 3
+workflows_235:
+ new_status_id: 6
+ role_id: 2
+ old_status_id: 5
+ id: 235
+ tracker_id: 3
+workflows_154:
+ new_status_id: 5
+ role_id: 3
+ old_status_id: 1
+ id: 154
+ tracker_id: 2
+workflows_181:
+ new_status_id: 2
+ role_id: 1
+ old_status_id: 1
+ id: 181
+ tracker_id: 3
+workflows_209:
+ new_status_id: 4
+ role_id: 1
+ old_status_id: 6
+ id: 209
+ tracker_id: 3
+workflows_047:
+ new_status_id: 2
+ role_id: 2
+ old_status_id: 4
+ id: 47
+ tracker_id: 1
+workflows_073:
+ new_status_id: 4
+ role_id: 3
+ old_status_id: 3
+ id: 73
+ tracker_id: 1
+workflows_128:
+ new_status_id: 4
+ role_id: 2
+ old_status_id: 2
+ id: 128
+ tracker_id: 2
+workflows_262:
+ new_status_id: 2
+ role_id: 3
+ old_status_id: 5
+ id: 262
+ tracker_id: 3
+workflows_236:
+ new_status_id: 1
+ role_id: 2
+ old_status_id: 6
+ id: 236
+ tracker_id: 3
+workflows_155:
+ new_status_id: 6
+ role_id: 3
+ old_status_id: 1
+ id: 155
+ tracker_id: 2
+workflows_048:
+ new_status_id: 3
+ role_id: 2
+ old_status_id: 4
+ id: 48
+ tracker_id: 1
+workflows_074:
+ new_status_id: 5
+ role_id: 3
+ old_status_id: 3
+ id: 74
+ tracker_id: 1
+workflows_129:
+ new_status_id: 5
+ role_id: 2
+ old_status_id: 2
+ id: 129
+ tracker_id: 2
+workflows_263:
+ new_status_id: 3
+ role_id: 3
+ old_status_id: 5
+ id: 263
+ tracker_id: 3
+workflows_237:
+ new_status_id: 2
+ role_id: 2
+ old_status_id: 6
+ id: 237
+ tracker_id: 3
+workflows_182:
+ new_status_id: 3
+ role_id: 1
+ old_status_id: 1
+ id: 182
+ tracker_id: 3
+workflows_049:
+ new_status_id: 5
+ role_id: 2
+ old_status_id: 4
+ id: 49
+ tracker_id: 1
+workflows_075:
+ new_status_id: 6
+ role_id: 3
+ old_status_id: 3
+ id: 75
+ tracker_id: 1
+workflows_156:
+ new_status_id: 1
+ role_id: 3
+ old_status_id: 2
+ id: 156
+ tracker_id: 2
+workflows_264:
+ new_status_id: 4
+ role_id: 3
+ old_status_id: 5
+ id: 264
+ tracker_id: 3
+workflows_238:
+ new_status_id: 3
+ role_id: 2
+ old_status_id: 6
+ id: 238
+ tracker_id: 3
+workflows_183:
+ new_status_id: 4
+ role_id: 1
+ old_status_id: 1
+ id: 183
+ tracker_id: 3
+workflows_076:
+ new_status_id: 1
+ role_id: 3
+ old_status_id: 4
+ id: 76
+ tracker_id: 1
+workflows_157:
+ new_status_id: 3
+ role_id: 3
+ old_status_id: 2
+ id: 157
+ tracker_id: 2
+workflows_265:
+ new_status_id: 6
+ role_id: 3
+ old_status_id: 5
+ id: 265
+ tracker_id: 3
+workflows_239:
+ new_status_id: 4
+ role_id: 2
+ old_status_id: 6
+ id: 239
+ tracker_id: 3
+workflows_077:
+ new_status_id: 2
+ role_id: 3
+ old_status_id: 4
+ id: 77
+ tracker_id: 1
+workflows_158:
+ new_status_id: 4
+ role_id: 3
+ old_status_id: 2
+ id: 158
+ tracker_id: 2
+workflows_184:
+ new_status_id: 5
+ role_id: 1
+ old_status_id: 1
+ id: 184
+ tracker_id: 3
+workflows_266:
+ new_status_id: 1
+ role_id: 3
+ old_status_id: 6
+ id: 266
+ tracker_id: 3
+workflows_078:
+ new_status_id: 3
+ role_id: 3
+ old_status_id: 4
+ id: 78
+ tracker_id: 1
+workflows_159:
+ new_status_id: 5
+ role_id: 3
+ old_status_id: 2
+ id: 159
+ tracker_id: 2
+workflows_185:
+ new_status_id: 6
+ role_id: 1
+ old_status_id: 1
+ id: 185
+ tracker_id: 3
+workflows_267:
+ new_status_id: 2
+ role_id: 3
+ old_status_id: 6
+ id: 267
+ tracker_id: 3
+workflows_079:
+ new_status_id: 5
+ role_id: 3
+ old_status_id: 4
+ id: 79
+ tracker_id: 1
+workflows_186:
+ new_status_id: 1
+ role_id: 1
+ old_status_id: 2
+ id: 186
+ tracker_id: 3
+workflows_268:
+ new_status_id: 3
+ role_id: 3
+ old_status_id: 6
+ id: 268
+ tracker_id: 3
+workflows_187:
+ new_status_id: 3
+ role_id: 1
+ old_status_id: 2
+ id: 187
+ tracker_id: 3
+workflows_269:
+ new_status_id: 4
+ role_id: 3
+ old_status_id: 6
+ id: 269
+ tracker_id: 3
+workflows_188:
+ new_status_id: 4
+ role_id: 1
+ old_status_id: 2
+ id: 188
+ tracker_id: 3
-# Redmine - project management software\r
-# Copyright (C) 2006-2009 Jean-Philippe Lang\r
-#\r
-# This program is free software; you can redistribute it and/or\r
-# modify it under the terms of the GNU General Public License\r
-# as published by the Free Software Foundation; either version 2\r
-# of the License, or (at your option) any later version.\r
-# \r
-# This program is distributed in the hope that it will be useful,\r
-# but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r
-# GNU General Public License for more details.\r
-# \r
-# You should have received a copy of the GNU General Public License\r
-# along with this program; if not, write to the Free Software\r
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\r
-\r
-require File.dirname(__FILE__) + '/../test_helper'\r
-require 'custom_fields_controller'\r
-\r
-# Re-raise errors caught by the controller.\r
-class CustomFieldsController; def rescue_action(e) raise e end; end\r
-\r
-class CustomFieldsControllerTest < ActionController::TestCase\r
- fixtures :custom_fields, :trackers, :users\r
- \r
- def setup\r
- @controller = CustomFieldsController.new\r
- @request = ActionController::TestRequest.new\r
- @response = ActionController::TestResponse.new\r
- @request.session[:user_id] = 1\r
- end\r
- \r
- def test_post_new_list_custom_field\r
- assert_difference 'CustomField.count' do\r
- post :new, :type => "IssueCustomField",\r
- :custom_field => {:name => "test_post_new_list",\r
- :default_value => "",\r
- :min_length => "0",\r
- :searchable => "0",\r
- :regexp => "",\r
- :is_for_all => "1",\r
- :possible_values => "0.1\n0.2\n",\r
- :max_length => "0",\r
- :is_filter => "0",\r
- :is_required =>"0",\r
- :field_format => "list",\r
- :tracker_ids => ["1", ""]}\r
- end \r
- assert_redirected_to '/custom_fields?tab=IssueCustomField'\r
- field = IssueCustomField.find_by_name('test_post_new_list')\r
- assert_not_nil field\r
- assert_equal ["0.1", "0.2"], field.possible_values\r
- assert_equal 1, field.trackers.size\r
- end\r
- \r
- def test_invalid_custom_field_class_should_redirect_to_list\r
- get :new, :type => 'UnknownCustomField'\r
- assert_redirected_to '/custom_fields'\r
- end\r
-end\r
+# Redmine - project management software
+# Copyright (C) 2006-2009 Jean-Philippe Lang
+#
+# 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.dirname(__FILE__) + '/../test_helper'
+require 'custom_fields_controller'
+
+# Re-raise errors caught by the controller.
+class CustomFieldsController; def rescue_action(e) raise e end; end
+
+class CustomFieldsControllerTest < ActionController::TestCase
+ fixtures :custom_fields, :trackers, :users
+
+ def setup
+ @controller = CustomFieldsController.new
+ @request = ActionController::TestRequest.new
+ @response = ActionController::TestResponse.new
+ @request.session[:user_id] = 1
+ end
+
+ def test_post_new_list_custom_field
+ assert_difference 'CustomField.count' do
+ post :new, :type => "IssueCustomField",
+ :custom_field => {:name => "test_post_new_list",
+ :default_value => "",
+ :min_length => "0",
+ :searchable => "0",
+ :regexp => "",
+ :is_for_all => "1",
+ :possible_values => "0.1\n0.2\n",
+ :max_length => "0",
+ :is_filter => "0",
+ :is_required =>"0",
+ :field_format => "list",
+ :tracker_ids => ["1", ""]}
+ end
+ assert_redirected_to '/custom_fields?tab=IssueCustomField'
+ field = IssueCustomField.find_by_name('test_post_new_list')
+ assert_not_nil field
+ assert_equal ["0.1", "0.2"], field.possible_values
+ assert_equal 1, field.trackers.size
+ end
+
+ def test_invalid_custom_field_class_should_redirect_to_list
+ get :new, :type => 'UnknownCustomField'
+ assert_redirected_to '/custom_fields'
+ end
+end
-# Redmine - project management software\r
-# Copyright (C) 2006-2008 Jean-Philippe Lang\r
-#\r
-# This program is free software; you can redistribute it and/or\r
-# modify it under the terms of the GNU General Public License\r
-# as published by the Free Software Foundation; either version 2\r
-# of the License, or (at your option) any later version.\r
-# \r
-# This program is distributed in the hope that it will be useful,\r
-# but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r
-# GNU General Public License for more details.\r
-# \r
-# You should have received a copy of the GNU General Public License\r
-# along with this program; if not, write to the Free Software\r
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\r
-\r
-require File.dirname(__FILE__) + '/../test_helper'\r
-require 'projects_controller'\r
-\r
-# Re-raise errors caught by the controller.\r
-class ProjectsController; def rescue_action(e) raise e end; end\r
-\r
-class ProjectsControllerTest < ActionController::TestCase\r
- fixtures :projects, :versions, :users, :roles, :members, :member_roles, :issues, :journals, :journal_details,\r
- :trackers, :projects_trackers, :issue_statuses, :enabled_modules, :enumerations, :boards, :messages,\r
- :attachments\r
-\r
- def setup\r
- @controller = ProjectsController.new\r
- @request = ActionController::TestRequest.new\r
- @response = ActionController::TestResponse.new\r
- @request.session[:user_id] = nil\r
- Setting.default_language = 'en'\r
- end\r
- \r
- def test_index_routing\r
- assert_routing(\r
- {:method => :get, :path => '/projects'},\r
- :controller => 'projects', :action => 'index'\r
- )\r
- end\r
- \r
- def test_index\r
- get :index\r
- assert_response :success\r
- assert_template 'index'\r
- assert_not_nil assigns(:projects)\r
- \r
- assert_tag :ul, :child => {:tag => 'li',\r
- :descendant => {:tag => 'a', :content => 'eCookbook'},\r
- :child => { :tag => 'ul',\r
- :descendant => { :tag => 'a',\r
- :content => 'Child of private child'\r
- }\r
- }\r
- }\r
- \r
- assert_no_tag :a, :content => /Private child of eCookbook/\r
- end\r
- \r
- def test_index_atom_routing\r
- assert_routing(\r
- {:method => :get, :path => '/projects.atom'},\r
- :controller => 'projects', :action => 'index', :format => 'atom'\r
- )\r
- end\r
- \r
- def test_index_atom\r
- get :index, :format => 'atom'\r
- assert_response :success\r
- assert_template 'common/feed.atom.rxml'\r
- assert_select 'feed>title', :text => 'Redmine: Latest projects'\r
- assert_select 'feed>entry', :count => Project.count(:conditions => Project.visible_by(User.current))\r
- end\r
- \r
- def test_add_routing\r
- assert_routing(\r
- {:method => :get, :path => '/projects/new'},\r
- :controller => 'projects', :action => 'add'\r
- )\r
- assert_recognizes(\r
- {:controller => 'projects', :action => 'add'},\r
- {:method => :post, :path => '/projects/new'}\r
- )\r
- assert_recognizes(\r
- {:controller => 'projects', :action => 'add'},\r
- {:method => :post, :path => '/projects'}\r
- )\r
- end\r
- \r
- def test_get_add\r
- @request.session[:user_id] = 1\r
- get :add\r
- assert_response :success\r
- assert_template 'add'\r
- end\r
- \r
- def test_get_add_by_non_admin\r
- @request.session[:user_id] = 2\r
- get :add\r
- assert_response :success\r
- assert_template 'add'\r
- end\r
- \r
- def test_post_add\r
- @request.session[:user_id] = 1\r
- post :add, :project => { :name => "blog", \r
- :description => "weblog",\r
- :identifier => "blog",\r
- :is_public => 1,\r
- :custom_field_values => { '3' => 'Beta' }\r
- }\r
- assert_redirected_to '/projects/blog/settings'\r
- \r
- project = Project.find_by_name('blog')\r
- assert_kind_of Project, project\r
- assert_equal 'weblog', project.description \r
- assert_equal true, project.is_public?\r
- end\r
- \r
- def test_post_add_by_non_admin\r
- @request.session[:user_id] = 2\r
- post :add, :project => { :name => "blog", \r
- :description => "weblog",\r
- :identifier => "blog",\r
- :is_public => 1,\r
- :custom_field_values => { '3' => 'Beta' }\r
- }\r
- assert_redirected_to '/projects/blog/settings'\r
- \r
- project = Project.find_by_name('blog')\r
- assert_kind_of Project, project\r
- assert_equal 'weblog', project.description \r
- assert_equal true, project.is_public?\r
- \r
- # User should be added as a project member\r
- assert User.find(2).member_of?(project)\r
- assert_equal 1, project.members.size\r
- end\r
- \r
- def test_show_routing\r
- assert_routing(\r
- {:method => :get, :path => '/projects/test'},\r
- :controller => 'projects', :action => 'show', :id => 'test'\r
- )\r
- end\r
- \r
- def test_show_by_id\r
- get :show, :id => 1\r
- assert_response :success\r
- assert_template 'show'\r
- assert_not_nil assigns(:project)\r
- end\r
-\r
- def test_show_by_identifier\r
- get :show, :id => 'ecookbook'\r
- assert_response :success\r
- assert_template 'show'\r
- assert_not_nil assigns(:project)\r
- assert_equal Project.find_by_identifier('ecookbook'), assigns(:project)\r
- end\r
- \r
- def test_show_should_not_fail_when_custom_values_are_nil\r
- project = Project.find_by_identifier('ecookbook')\r
- project.custom_values.first.update_attribute(:value, nil)\r
- get :show, :id => 'ecookbook'\r
- assert_response :success\r
- assert_template 'show'\r
- assert_not_nil assigns(:project)\r
- assert_equal Project.find_by_identifier('ecookbook'), assigns(:project)\r
- end\r
- \r
- def test_private_subprojects_hidden\r
- get :show, :id => 'ecookbook'\r
- assert_response :success\r
- assert_template 'show'\r
- assert_no_tag :tag => 'a', :content => /Private child/\r
- end\r
-\r
- def test_private_subprojects_visible\r
- @request.session[:user_id] = 2 # manager who is a member of the private subproject\r
- get :show, :id => 'ecookbook'\r
- assert_response :success\r
- assert_template 'show'\r
- assert_tag :tag => 'a', :content => /Private child/\r
- end\r
- \r
- def test_settings_routing\r
- assert_routing(\r
- {:method => :get, :path => '/projects/4223/settings'},\r
- :controller => 'projects', :action => 'settings', :id => '4223'\r
- )\r
- assert_routing(\r
- {:method => :get, :path => '/projects/4223/settings/members'},\r
- :controller => 'projects', :action => 'settings', :id => '4223', :tab => 'members'\r
- )\r
- end\r
- \r
- def test_settings\r
- @request.session[:user_id] = 2 # manager\r
- get :settings, :id => 1\r
- assert_response :success\r
- assert_template 'settings'\r
- end\r
- \r
- def test_edit\r
- @request.session[:user_id] = 2 # manager\r
- post :edit, :id => 1, :project => {:name => 'Test changed name',\r
- :issue_custom_field_ids => ['']}\r
- assert_redirected_to 'projects/ecookbook/settings'\r
- project = Project.find(1)\r
- assert_equal 'Test changed name', project.name\r
- end\r
- \r
- def test_add_version_routing\r
- assert_routing(\r
- {:method => :get, :path => 'projects/64/versions/new'},\r
- :controller => 'projects', :action => 'add_version', :id => '64'\r
- )\r
- assert_routing(\r
- #TODO: use PUT\r
- {:method => :post, :path => 'projects/64/versions/new'},\r
- :controller => 'projects', :action => 'add_version', :id => '64'\r
- )\r
- end\r
- \r
- def test_add_issue_category_routing\r
- assert_routing(\r
- {:method => :get, :path => 'projects/test/categories/new'},\r
- :controller => 'projects', :action => 'add_issue_category', :id => 'test'\r
- )\r
- assert_routing(\r
- #TODO: use PUT and update form\r
- {:method => :post, :path => 'projects/64/categories/new'},\r
- :controller => 'projects', :action => 'add_issue_category', :id => '64'\r
- )\r
- end\r
- \r
- def test_destroy_routing\r
- assert_routing(\r
- {:method => :get, :path => '/projects/567/destroy'},\r
- :controller => 'projects', :action => 'destroy', :id => '567'\r
- )\r
- assert_routing(\r
- #TODO: use DELETE and update form\r
- {:method => :post, :path => 'projects/64/destroy'},\r
- :controller => 'projects', :action => 'destroy', :id => '64'\r
- )\r
- end\r
- \r
- def test_get_destroy\r
- @request.session[:user_id] = 1 # admin\r
- get :destroy, :id => 1\r
- assert_response :success\r
- assert_template 'destroy'\r
- assert_not_nil Project.find_by_id(1)\r
- end\r
-\r
- def test_post_destroy\r
- @request.session[:user_id] = 1 # admin\r
- post :destroy, :id => 1, :confirm => 1\r
- assert_redirected_to 'admin/projects'\r
- assert_nil Project.find_by_id(1)\r
- end\r
- \r
- def test_add_file\r
- set_tmp_attachments_directory\r
- @request.session[:user_id] = 2\r
- Setting.notified_events = ['file_added']\r
- ActionMailer::Base.deliveries.clear\r
- \r
- assert_difference 'Attachment.count' do\r
- post :add_file, :id => 1, :version_id => '',\r
- :attachments => {'1' => {'file' => test_uploaded_file('testfile.txt', 'text/plain')}}\r
- end\r
- assert_redirected_to 'projects/ecookbook/files'\r
- a = Attachment.find(:first, :order => 'created_on DESC')\r
- assert_equal 'testfile.txt', a.filename\r
- assert_equal Project.find(1), a.container\r
-\r
- mail = ActionMailer::Base.deliveries.last\r
- assert_kind_of TMail::Mail, mail\r
- assert_equal "[eCookbook] New file", mail.subject\r
- assert mail.body.include?('testfile.txt')\r
- end\r
- \r
- def test_add_file_routing\r
- assert_routing(\r
- {:method => :get, :path => '/projects/33/files/new'},\r
- :controller => 'projects', :action => 'add_file', :id => '33'\r
- )\r
- assert_routing(\r
- {:method => :post, :path => '/projects/33/files/new'},\r
- :controller => 'projects', :action => 'add_file', :id => '33'\r
- )\r
- end\r
- \r
- def test_add_version_file\r
- set_tmp_attachments_directory\r
- @request.session[:user_id] = 2\r
- Setting.notified_events = ['file_added']\r
- \r
- assert_difference 'Attachment.count' do\r
- post :add_file, :id => 1, :version_id => '2',\r
- :attachments => {'1' => {'file' => test_uploaded_file('testfile.txt', 'text/plain')}}\r
- end\r
- assert_redirected_to 'projects/ecookbook/files'\r
- a = Attachment.find(:first, :order => 'created_on DESC')\r
- assert_equal 'testfile.txt', a.filename\r
- assert_equal Version.find(2), a.container\r
- end\r
- \r
- def test_list_files\r
- get :list_files, :id => 1\r
- assert_response :success\r
- assert_template 'list_files'\r
- assert_not_nil assigns(:containers)\r
- \r
- # file attached to the project\r
- assert_tag :a, :content => 'project_file.zip',\r
- :attributes => { :href => '/attachments/download/8/project_file.zip' }\r
- \r
- # file attached to a project's version\r
- assert_tag :a, :content => 'version_file.zip',\r
- :attributes => { :href => '/attachments/download/9/version_file.zip' }\r
- end\r
-\r
- def test_list_files_routing\r
- assert_routing(\r
- {:method => :get, :path => '/projects/33/files'},\r
- :controller => 'projects', :action => 'list_files', :id => '33'\r
- )\r
- end\r
- \r
- def test_changelog_routing\r
- assert_routing(\r
- {:method => :get, :path => '/projects/44/changelog'},\r
- :controller => 'projects', :action => 'changelog', :id => '44'\r
- )\r
- end\r
- \r
- def test_changelog\r
- get :changelog, :id => 1\r
- assert_response :success\r
- assert_template 'changelog'\r
- assert_not_nil assigns(:versions)\r
- end\r
- \r
- def test_roadmap_routing\r
- assert_routing(\r
- {:method => :get, :path => 'projects/33/roadmap'},\r
- :controller => 'projects', :action => 'roadmap', :id => '33'\r
- )\r
- end\r
- \r
- def test_roadmap\r
- get :roadmap, :id => 1\r
- assert_response :success\r
- assert_template 'roadmap'\r
- assert_not_nil assigns(:versions)\r
- # Version with no date set appears\r
- assert assigns(:versions).include?(Version.find(3))\r
- # Completed version doesn't appear\r
- assert !assigns(:versions).include?(Version.find(1))\r
- end\r
- \r
- def test_roadmap_with_completed_versions\r
- get :roadmap, :id => 1, :completed => 1\r
- assert_response :success\r
- assert_template 'roadmap'\r
- assert_not_nil assigns(:versions)\r
- # Version with no date set appears\r
- assert assigns(:versions).include?(Version.find(3))\r
- # Completed version appears\r
- assert assigns(:versions).include?(Version.find(1))\r
- end\r
- \r
- def test_project_activity_routing\r
- assert_routing(\r
- {:method => :get, :path => '/projects/1/activity'},\r
- :controller => 'projects', :action => 'activity', :id => '1'\r
- )\r
- end\r
- \r
- def test_project_activity_atom_routing\r
- assert_routing(\r
- {:method => :get, :path => '/projects/1/activity.atom'},\r
- :controller => 'projects', :action => 'activity', :id => '1', :format => 'atom'\r
- ) \r
- end\r
- \r
- def test_project_activity\r
- get :activity, :id => 1, :with_subprojects => 0\r
- assert_response :success\r
- assert_template 'activity'\r
- assert_not_nil assigns(:events_by_day)\r
- \r
- assert_tag :tag => "h3", \r
- :content => /#{2.days.ago.to_date.day}/,\r
- :sibling => { :tag => "dl",\r
- :child => { :tag => "dt",\r
- :attributes => { :class => /issue-edit/ },\r
- :child => { :tag => "a",\r
- :content => /(#{IssueStatus.find(2).name})/,\r
- }\r
- }\r
- }\r
- end\r
- \r
- def test_previous_project_activity\r
- get :activity, :id => 1, :from => 3.days.ago.to_date\r
- assert_response :success\r
- assert_template 'activity'\r
- assert_not_nil assigns(:events_by_day)\r
- \r
- assert_tag :tag => "h3", \r
- :content => /#{3.day.ago.to_date.day}/,\r
- :sibling => { :tag => "dl",\r
- :child => { :tag => "dt",\r
- :attributes => { :class => /issue/ },\r
- :child => { :tag => "a",\r
- :content => /#{Issue.find(1).subject}/,\r
- }\r
- }\r
- }\r
- end\r
- \r
- def test_global_activity_routing\r
- assert_routing({:method => :get, :path => '/activity'}, :controller => 'projects', :action => 'activity', :id => nil)\r
- end\r
- \r
- def test_global_activity\r
- get :activity\r
- assert_response :success\r
- assert_template 'activity'\r
- assert_not_nil assigns(:events_by_day)\r
- \r
- assert_tag :tag => "h3", \r
- :content => /#{5.day.ago.to_date.day}/,\r
- :sibling => { :tag => "dl",\r
- :child => { :tag => "dt",\r
- :attributes => { :class => /issue/ },\r
- :child => { :tag => "a",\r
- :content => /#{Issue.find(5).subject}/,\r
- }\r
- }\r
- }\r
- end\r
- \r
- def test_user_activity\r
- get :activity, :user_id => 2\r
- assert_response :success\r
- assert_template 'activity'\r
- assert_not_nil assigns(:events_by_day)\r
- \r
- assert_tag :tag => "h3", \r
- :content => /#{3.day.ago.to_date.day}/,\r
- :sibling => { :tag => "dl",\r
- :child => { :tag => "dt",\r
- :attributes => { :class => /issue/ },\r
- :child => { :tag => "a",\r
- :content => /#{Issue.find(1).subject}/,\r
- }\r
- }\r
- }\r
- end\r
- \r
- def test_global_activity_atom_routing\r
- assert_routing({:method => :get, :path => '/activity.atom'}, :controller => 'projects', :action => 'activity', :id => nil, :format => 'atom')\r
- end\r
- \r
- def test_activity_atom_feed\r
- get :activity, :format => 'atom'\r
- assert_response :success\r
- assert_template 'common/feed.atom.rxml'\r
- end\r
- \r
- def test_archive_routing\r
- assert_routing(\r
- #TODO: use PUT to project path and modify form\r
- {:method => :post, :path => 'projects/64/archive'},\r
- :controller => 'projects', :action => 'archive', :id => '64'\r
- )\r
- end\r
- \r
- def test_archive\r
- @request.session[:user_id] = 1 # admin\r
- post :archive, :id => 1\r
- assert_redirected_to 'admin/projects'\r
- assert !Project.find(1).active?\r
- end\r
- \r
- def test_unarchive_routing\r
- assert_routing(\r
- #TODO: use PUT to project path and modify form\r
- {:method => :post, :path => '/projects/567/unarchive'},\r
- :controller => 'projects', :action => 'unarchive', :id => '567'\r
- )\r
- end\r
- \r
- def test_unarchive\r
- @request.session[:user_id] = 1 # admin\r
- Project.find(1).archive\r
- post :unarchive, :id => 1\r
- assert_redirected_to 'admin/projects'\r
- assert Project.find(1).active?\r
- end\r
- \r
- def test_project_breadcrumbs_should_be_limited_to_3_ancestors\r
- CustomField.delete_all\r
- parent = nil\r
- 6.times do |i|\r
- p = Project.create!(:name => "Breadcrumbs #{i}", :identifier => "breadcrumbs-#{i}")\r
- p.set_parent!(parent)\r
- get :show, :id => p\r
- assert_tag :h1, :parent => { :attributes => {:id => 'header'}},\r
- :children => { :count => [i, 3].min,\r
- :only => { :tag => 'a' } }\r
- \r
- parent = p\r
- end\r
- end\r
-\r
- def test_copy_with_project\r
- @request.session[:user_id] = 1 # admin\r
- get :copy, :id => 1\r
- assert_response :success\r
- assert_template 'copy'\r
- assert assigns(:project)\r
- assert_equal Project.find(1).description, assigns(:project).description\r
- assert_nil assigns(:project).id\r
- end\r
-\r
- def test_copy_without_project\r
- @request.session[:user_id] = 1 # admin\r
- get :copy\r
- assert_response :redirect\r
- assert_redirected_to :controller => 'admin', :action => 'projects'\r
- end\r
-\r
- def test_jump_should_redirect_to_active_tab\r
- get :show, :id => 1, :jump => 'issues'\r
- assert_redirected_to 'projects/ecookbook/issues'\r
- end\r
- \r
- def test_jump_should_not_redirect_to_inactive_tab\r
- get :show, :id => 3, :jump => 'documents'\r
- assert_response :success\r
- assert_template 'show'\r
- end\r
- \r
- def test_jump_should_not_redirect_to_unknown_tab\r
- get :show, :id => 3, :jump => 'foobar'\r
- assert_response :success\r
- assert_template 'show'\r
- end\r
- \r
- # A hook that is manually registered later\r
- class ProjectBasedTemplate < Redmine::Hook::ViewListener\r
- def view_layouts_base_html_head(context)\r
- # Adds a project stylesheet\r
- stylesheet_link_tag(context[:project].identifier) if context[:project]\r
- end\r
- end\r
- # Don't use this hook now\r
- Redmine::Hook.clear_listeners\r
- \r
- def test_hook_response\r
- Redmine::Hook.add_listener(ProjectBasedTemplate)\r
- get :show, :id => 1\r
- assert_tag :tag => 'link', :attributes => {:href => '/stylesheets/ecookbook.css'},\r
- :parent => {:tag => 'head'}\r
- \r
- Redmine::Hook.clear_listeners\r
- end\r
-end\r
+# Redmine - project management software
+# Copyright (C) 2006-2008 Jean-Philippe Lang
+#
+# 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.dirname(__FILE__) + '/../test_helper'
+require 'projects_controller'
+
+# Re-raise errors caught by the controller.
+class ProjectsController; def rescue_action(e) raise e end; end
+
+class ProjectsControllerTest < ActionController::TestCase
+ fixtures :projects, :versions, :users, :roles, :members, :member_roles, :issues, :journals, :journal_details,
+ :trackers, :projects_trackers, :issue_statuses, :enabled_modules, :enumerations, :boards, :messages,
+ :attachments
+
+ def setup
+ @controller = ProjectsController.new
+ @request = ActionController::TestRequest.new
+ @response = ActionController::TestResponse.new
+ @request.session[:user_id] = nil
+ Setting.default_language = 'en'
+ end
+
+ def test_index_routing
+ assert_routing(
+ {:method => :get, :path => '/projects'},
+ :controller => 'projects', :action => 'index'
+ )
+ end
+
+ def test_index
+ get :index
+ assert_response :success
+ assert_template 'index'
+ assert_not_nil assigns(:projects)
+
+ assert_tag :ul, :child => {:tag => 'li',
+ :descendant => {:tag => 'a', :content => 'eCookbook'},
+ :child => { :tag => 'ul',
+ :descendant => { :tag => 'a',
+ :content => 'Child of private child'
+ }
+ }
+ }
+
+ assert_no_tag :a, :content => /Private child of eCookbook/
+ end
+
+ def test_index_atom_routing
+ assert_routing(
+ {:method => :get, :path => '/projects.atom'},
+ :controller => 'projects', :action => 'index', :format => 'atom'
+ )
+ end
+
+ def test_index_atom
+ get :index, :format => 'atom'
+ assert_response :success
+ assert_template 'common/feed.atom.rxml'
+ assert_select 'feed>title', :text => 'Redmine: Latest projects'
+ assert_select 'feed>entry', :count => Project.count(:conditions => Project.visible_by(User.current))
+ end
+
+ def test_add_routing
+ assert_routing(
+ {:method => :get, :path => '/projects/new'},
+ :controller => 'projects', :action => 'add'
+ )
+ assert_recognizes(
+ {:controller => 'projects', :action => 'add'},
+ {:method => :post, :path => '/projects/new'}
+ )
+ assert_recognizes(
+ {:controller => 'projects', :action => 'add'},
+ {:method => :post, :path => '/projects'}
+ )
+ end
+
+ def test_get_add
+ @request.session[:user_id] = 1
+ get :add
+ assert_response :success
+ assert_template 'add'
+ end
+
+ def test_get_add_by_non_admin
+ @request.session[:user_id] = 2
+ get :add
+ assert_response :success
+ assert_template 'add'
+ end
+
+ def test_post_add
+ @request.session[:user_id] = 1
+ post :add, :project => { :name => "blog",
+ :description => "weblog",
+ :identifier => "blog",
+ :is_public => 1,
+ :custom_field_values => { '3' => 'Beta' }
+ }
+ assert_redirected_to '/projects/blog/settings'
+
+ project = Project.find_by_name('blog')
+ assert_kind_of Project, project
+ assert_equal 'weblog', project.description
+ assert_equal true, project.is_public?
+ end
+
+ def test_post_add_by_non_admin
+ @request.session[:user_id] = 2
+ post :add, :project => { :name => "blog",
+ :description => "weblog",
+ :identifier => "blog",
+ :is_public => 1,
+ :custom_field_values => { '3' => 'Beta' }
+ }
+ assert_redirected_to '/projects/blog/settings'
+
+ project = Project.find_by_name('blog')
+ assert_kind_of Project, project
+ assert_equal 'weblog', project.description
+ assert_equal true, project.is_public?
+
+ # User should be added as a project member
+ assert User.find(2).member_of?(project)
+ assert_equal 1, project.members.size
+ end
+
+ def test_show_routing
+ assert_routing(
+ {:method => :get, :path => '/projects/test'},
+ :controller => 'projects', :action => 'show', :id => 'test'
+ )
+ end
+
+ def test_show_by_id
+ get :show, :id => 1
+ assert_response :success
+ assert_template 'show'
+ assert_not_nil assigns(:project)
+ end
+
+ def test_show_by_identifier
+ get :show, :id => 'ecookbook'
+ assert_response :success
+ assert_template 'show'
+ assert_not_nil assigns(:project)
+ assert_equal Project.find_by_identifier('ecookbook'), assigns(:project)
+ end
+
+ def test_show_should_not_fail_when_custom_values_are_nil
+ project = Project.find_by_identifier('ecookbook')
+ project.custom_values.first.update_attribute(:value, nil)
+ get :show, :id => 'ecookbook'
+ assert_response :success
+ assert_template 'show'
+ assert_not_nil assigns(:project)
+ assert_equal Project.find_by_identifier('ecookbook'), assigns(:project)
+ end
+
+ def test_private_subprojects_hidden
+ get :show, :id => 'ecookbook'
+ assert_response :success
+ assert_template 'show'
+ assert_no_tag :tag => 'a', :content => /Private child/
+ end
+
+ def test_private_subprojects_visible
+ @request.session[:user_id] = 2 # manager who is a member of the private subproject
+ get :show, :id => 'ecookbook'
+ assert_response :success
+ assert_template 'show'
+ assert_tag :tag => 'a', :content => /Private child/
+ end
+
+ def test_settings_routing
+ assert_routing(
+ {:method => :get, :path => '/projects/4223/settings'},
+ :controller => 'projects', :action => 'settings', :id => '4223'
+ )
+ assert_routing(
+ {:method => :get, :path => '/projects/4223/settings/members'},
+ :controller => 'projects', :action => 'settings', :id => '4223', :tab => 'members'
+ )
+ end
+
+ def test_settings
+ @request.session[:user_id] = 2 # manager
+ get :settings, :id => 1
+ assert_response :success
+ assert_template 'settings'
+ end
+
+ def test_edit
+ @request.session[:user_id] = 2 # manager
+ post :edit, :id => 1, :project => {:name => 'Test changed name',
+ :issue_custom_field_ids => ['']}
+ assert_redirected_to 'projects/ecookbook/settings'
+ project = Project.find(1)
+ assert_equal 'Test changed name', project.name
+ end
+
+ def test_add_version_routing
+ assert_routing(
+ {:method => :get, :path => 'projects/64/versions/new'},
+ :controller => 'projects', :action => 'add_version', :id => '64'
+ )
+ assert_routing(
+ #TODO: use PUT
+ {:method => :post, :path => 'projects/64/versions/new'},
+ :controller => 'projects', :action => 'add_version', :id => '64'
+ )
+ end
+
+ def test_add_issue_category_routing
+ assert_routing(
+ {:method => :get, :path => 'projects/test/categories/new'},
+ :controller => 'projects', :action => 'add_issue_category', :id => 'test'
+ )
+ assert_routing(
+ #TODO: use PUT and update form
+ {:method => :post, :path => 'projects/64/categories/new'},
+ :controller => 'projects', :action => 'add_issue_category', :id => '64'
+ )
+ end
+
+ def test_destroy_routing
+ assert_routing(
+ {:method => :get, :path => '/projects/567/destroy'},
+ :controller => 'projects', :action => 'destroy', :id => '567'
+ )
+ assert_routing(
+ #TODO: use DELETE and update form
+ {:method => :post, :path => 'projects/64/destroy'},
+ :controller => 'projects', :action => 'destroy', :id => '64'
+ )
+ end
+
+ def test_get_destroy
+ @request.session[:user_id] = 1 # admin
+ get :destroy, :id => 1
+ assert_response :success
+ assert_template 'destroy'
+ assert_not_nil Project.find_by_id(1)
+ end
+
+ def test_post_destroy
+ @request.session[:user_id] = 1 # admin
+ post :destroy, :id => 1, :confirm => 1
+ assert_redirected_to 'admin/projects'
+ assert_nil Project.find_by_id(1)
+ end
+
+ def test_add_file
+ set_tmp_attachments_directory
+ @request.session[:user_id] = 2
+ Setting.notified_events = ['file_added']
+ ActionMailer::Base.deliveries.clear
+
+ assert_difference 'Attachment.count' do
+ post :add_file, :id => 1, :version_id => '',
+ :attachments => {'1' => {'file' => test_uploaded_file('testfile.txt', 'text/plain')}}
+ end
+ assert_redirected_to 'projects/ecookbook/files'
+ a = Attachment.find(:first, :order => 'created_on DESC')
+ assert_equal 'testfile.txt', a.filename
+ assert_equal Project.find(1), a.container
+
+ mail = ActionMailer::Base.deliveries.last
+ assert_kind_of TMail::Mail, mail
+ assert_equal "[eCookbook] New file", mail.subject
+ assert mail.body.include?('testfile.txt')
+ end
+
+ def test_add_file_routing
+ assert_routing(
+ {:method => :get, :path => '/projects/33/files/new'},
+ :controller => 'projects', :action => 'add_file', :id => '33'
+ )
+ assert_routing(
+ {:method => :post, :path => '/projects/33/files/new'},
+ :controller => 'projects', :action => 'add_file', :id => '33'
+ )
+ end
+
+ def test_add_version_file
+ set_tmp_attachments_directory
+ @request.session[:user_id] = 2
+ Setting.notified_events = ['file_added']
+
+ assert_difference 'Attachment.count' do
+ post :add_file, :id => 1, :version_id => '2',
+ :attachments => {'1' => {'file' => test_uploaded_file('testfile.txt', 'text/plain')}}
+ end
+ assert_redirected_to 'projects/ecookbook/files'
+ a = Attachment.find(:first, :order => 'created_on DESC')
+ assert_equal 'testfile.txt', a.filename
+ assert_equal Version.find(2), a.container
+ end
+
+ def test_list_files
+ get :list_files, :id => 1
+ assert_response :success
+ assert_template 'list_files'
+ assert_not_nil assigns(:containers)
+
+ # file attached to the project
+ assert_tag :a, :content => 'project_file.zip',
+ :attributes => { :href => '/attachments/download/8/project_file.zip' }
+
+ # file attached to a project's version
+ assert_tag :a, :content => 'version_file.zip',
+ :attributes => { :href => '/attachments/download/9/version_file.zip' }
+ end
+
+ def test_list_files_routing
+ assert_routing(
+ {:method => :get, :path => '/projects/33/files'},
+ :controller => 'projects', :action => 'list_files', :id => '33'
+ )
+ end
+
+ def test_changelog_routing
+ assert_routing(
+ {:method => :get, :path => '/projects/44/changelog'},
+ :controller => 'projects', :action => 'changelog', :id => '44'
+ )
+ end
+
+ def test_changelog
+ get :changelog, :id => 1
+ assert_response :success
+ assert_template 'changelog'
+ assert_not_nil assigns(:versions)
+ end
+
+ def test_roadmap_routing
+ assert_routing(
+ {:method => :get, :path => 'projects/33/roadmap'},
+ :controller => 'projects', :action => 'roadmap', :id => '33'
+ )
+ end
+
+ def test_roadmap
+ get :roadmap, :id => 1
+ assert_response :success
+ assert_template 'roadmap'
+ assert_not_nil assigns(:versions)
+ # Version with no date set appears
+ assert assigns(:versions).include?(Version.find(3))
+ # Completed version doesn't appear
+ assert !assigns(:versions).include?(Version.find(1))
+ end
+
+ def test_roadmap_with_completed_versions
+ get :roadmap, :id => 1, :completed => 1
+ assert_response :success
+ assert_template 'roadmap'
+ assert_not_nil assigns(:versions)
+ # Version with no date set appears
+ assert assigns(:versions).include?(Version.find(3))
+ # Completed version appears
+ assert assigns(:versions).include?(Version.find(1))
+ end
+
+ def test_project_activity_routing
+ assert_routing(
+ {:method => :get, :path => '/projects/1/activity'},
+ :controller => 'projects', :action => 'activity', :id => '1'
+ )
+ end
+
+ def test_project_activity_atom_routing
+ assert_routing(
+ {:method => :get, :path => '/projects/1/activity.atom'},
+ :controller => 'projects', :action => 'activity', :id => '1', :format => 'atom'
+ )
+ end
+
+ def test_project_activity
+ get :activity, :id => 1, :with_subprojects => 0
+ assert_response :success
+ assert_template 'activity'
+ assert_not_nil assigns(:events_by_day)
+
+ assert_tag :tag => "h3",
+ :content => /#{2.days.ago.to_date.day}/,
+ :sibling => { :tag => "dl",
+ :child => { :tag => "dt",
+ :attributes => { :class => /issue-edit/ },
+ :child => { :tag => "a",
+ :content => /(#{IssueStatus.find(2).name})/,
+ }
+ }
+ }
+ end
+
+ def test_previous_project_activity
+ get :activity, :id => 1, :from => 3.days.ago.to_date
+ assert_response :success
+ assert_template 'activity'
+ assert_not_nil assigns(:events_by_day)
+
+ assert_tag :tag => "h3",
+ :content => /#{3.day.ago.to_date.day}/,
+ :sibling => { :tag => "dl",
+ :child => { :tag => "dt",
+ :attributes => { :class => /issue/ },
+ :child => { :tag => "a",
+ :content => /#{Issue.find(1).subject}/,
+ }
+ }
+ }
+ end
+
+ def test_global_activity_routing
+ assert_routing({:method => :get, :path => '/activity'}, :controller => 'projects', :action => 'activity', :id => nil)
+ end
+
+ def test_global_activity
+ get :activity
+ assert_response :success
+ assert_template 'activity'
+ assert_not_nil assigns(:events_by_day)
+
+ assert_tag :tag => "h3",
+ :content => /#{5.day.ago.to_date.day}/,
+ :sibling => { :tag => "dl",
+ :child => { :tag => "dt",
+ :attributes => { :class => /issue/ },
+ :child => { :tag => "a",
+ :content => /#{Issue.find(5).subject}/,
+ }
+ }
+ }
+ end
+
+ def test_user_activity
+ get :activity, :user_id => 2
+ assert_response :success
+ assert_template 'activity'
+ assert_not_nil assigns(:events_by_day)
+
+ assert_tag :tag => "h3",
+ :content => /#{3.day.ago.to_date.day}/,
+ :sibling => { :tag => "dl",
+ :child => { :tag => "dt",
+ :attributes => { :class => /issue/ },
+ :child => { :tag => "a",
+ :content => /#{Issue.find(1).subject}/,
+ }
+ }
+ }
+ end
+
+ def test_global_activity_atom_routing
+ assert_routing({:method => :get, :path => '/activity.atom'}, :controller => 'projects', :action => 'activity', :id => nil, :format => 'atom')
+ end
+
+ def test_activity_atom_feed
+ get :activity, :format => 'atom'
+ assert_response :success
+ assert_template 'common/feed.atom.rxml'
+ end
+
+ def test_archive_routing
+ assert_routing(
+ #TODO: use PUT to project path and modify form
+ {:method => :post, :path => 'projects/64/archive'},
+ :controller => 'projects', :action => 'archive', :id => '64'
+ )
+ end
+
+ def test_archive
+ @request.session[:user_id] = 1 # admin
+ post :archive, :id => 1
+ assert_redirected_to 'admin/projects'
+ assert !Project.find(1).active?
+ end
+
+ def test_unarchive_routing
+ assert_routing(
+ #TODO: use PUT to project path and modify form
+ {:method => :post, :path => '/projects/567/unarchive'},
+ :controller => 'projects', :action => 'unarchive', :id => '567'
+ )
+ end
+
+ def test_unarchive
+ @request.session[:user_id] = 1 # admin
+ Project.find(1).archive
+ post :unarchive, :id => 1
+ assert_redirected_to 'admin/projects'
+ assert Project.find(1).active?
+ end
+
+ def test_project_breadcrumbs_should_be_limited_to_3_ancestors
+ CustomField.delete_all
+ parent = nil
+ 6.times do |i|
+ p = Project.create!(:name => "Breadcrumbs #{i}", :identifier => "breadcrumbs-#{i}")
+ p.set_parent!(parent)
+ get :show, :id => p
+ assert_tag :h1, :parent => { :attributes => {:id => 'header'}},
+ :children => { :count => [i, 3].min,
+ :only => { :tag => 'a' } }
+
+ parent = p
+ end
+ end
+
+ def test_copy_with_project
+ @request.session[:user_id] = 1 # admin
+ get :copy, :id => 1
+ assert_response :success
+ assert_template 'copy'
+ assert assigns(:project)
+ assert_equal Project.find(1).description, assigns(:project).description
+ assert_nil assigns(:project).id
+ end
+
+ def test_copy_without_project
+ @request.session[:user_id] = 1 # admin
+ get :copy
+ assert_response :redirect
+ assert_redirected_to :controller => 'admin', :action => 'projects'
+ end
+
+ def test_jump_should_redirect_to_active_tab
+ get :show, :id => 1, :jump => 'issues'
+ assert_redirected_to 'projects/ecookbook/issues'
+ end
+
+ def test_jump_should_not_redirect_to_inactive_tab
+ get :show, :id => 3, :jump => 'documents'
+ assert_response :success
+ assert_template 'show'
+ end
+
+ def test_jump_should_not_redirect_to_unknown_tab
+ get :show, :id => 3, :jump => 'foobar'
+ assert_response :success
+ assert_template 'show'
+ end
+
+ # A hook that is manually registered later
+ class ProjectBasedTemplate < Redmine::Hook::ViewListener
+ def view_layouts_base_html_head(context)
+ # Adds a project stylesheet
+ stylesheet_link_tag(context[:project].identifier) if context[:project]
+ end
+ end
+ # Don't use this hook now
+ Redmine::Hook.clear_listeners
+
+ def test_hook_response
+ Redmine::Hook.add_listener(ProjectBasedTemplate)
+ get :show, :id => 1
+ assert_tag :tag => 'link', :attributes => {:href => '/stylesheets/ecookbook.css'},
+ :parent => {:tag => 'head'}
+
+ Redmine::Hook.clear_listeners
+ end
+end
-# Redmine - project management software\r
-# Copyright (C) 2006-2009 Jean-Philippe Lang\r
-#\r
-# This program is free software; you can redistribute it and/or\r
-# modify it under the terms of the GNU General Public License\r
-# as published by the Free Software Foundation; either version 2\r
-# of the License, or (at your option) any later version.\r
-# \r
-# This program is distributed in the hope that it will be useful,\r
-# but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r
-# GNU General Public License for more details.\r
-# \r
-# You should have received a copy of the GNU General Public License\r
-# along with this program; if not, write to the Free Software\r
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\r
-\r
-require File.dirname(__FILE__) + '/../../test_helper'\r
-\r
-class SortHelperTest < HelperTestCase\r
- include SortHelper\r
- \r
- def setup\r
- @session = nil\r
- @sort_param = nil\r
- end\r
- \r
- def test_default_sort_clause_with_array\r
- sort_init 'attr1', 'desc'\r
- sort_update(['attr1', 'attr2'])\r
-\r
- assert_equal 'attr1 DESC', sort_clause\r
- end\r
- \r
- def test_default_sort_clause_with_hash\r
- sort_init 'attr1', 'desc'\r
- sort_update({'attr1' => 'table1.attr1', 'attr2' => 'table2.attr2'})\r
-\r
- assert_equal 'table1.attr1 DESC', sort_clause\r
- end\r
- \r
- def test_default_sort_clause_with_multiple_columns\r
- sort_init 'attr1', 'desc'\r
- sort_update({'attr1' => ['table1.attr1', 'table1.attr2'], 'attr2' => 'table2.attr2'})\r
-\r
- assert_equal 'table1.attr1 DESC, table1.attr2 DESC', sort_clause\r
- end\r
- \r
- def test_params_sort\r
- @sort_param = 'attr1,attr2:desc'\r
- \r
- sort_init 'attr1', 'desc'\r
- sort_update({'attr1' => 'table1.attr1', 'attr2' => 'table2.attr2'})\r
-\r
- assert_equal 'table1.attr1, table2.attr2 DESC', sort_clause\r
- assert_equal 'attr1,attr2:desc', @session['foo_bar_sort']\r
- end\r
- \r
- def test_invalid_params_sort\r
- @sort_param = 'invalid_key'\r
- \r
- sort_init 'attr1', 'desc'\r
- sort_update({'attr1' => 'table1.attr1', 'attr2' => 'table2.attr2'})\r
-\r
- assert_equal 'table1.attr1 DESC', sort_clause\r
- assert_equal 'attr1:desc', @session['foo_bar_sort']\r
- end\r
- \r
- def test_invalid_order_params_sort\r
- @sort_param = 'attr1:foo:bar,attr2'\r
- \r
- sort_init 'attr1', 'desc'\r
- sort_update({'attr1' => 'table1.attr1', 'attr2' => 'table2.attr2'})\r
-\r
- assert_equal 'table1.attr1, table2.attr2', sort_clause\r
- assert_equal 'attr1,attr2', @session['foo_bar_sort']\r
- end\r
- \r
- private\r
- \r
- def controller_name; 'foo'; end\r
- def action_name; 'bar'; end\r
- def params; {:sort => @sort_param}; end\r
- def session; @session ||= {}; end\r
-end\r
+# Redmine - project management software
+# Copyright (C) 2006-2009 Jean-Philippe Lang
+#
+# 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.dirname(__FILE__) + '/../../test_helper'
+
+class SortHelperTest < HelperTestCase
+ include SortHelper
+
+ def setup
+ @session = nil
+ @sort_param = nil
+ end
+
+ def test_default_sort_clause_with_array
+ sort_init 'attr1', 'desc'
+ sort_update(['attr1', 'attr2'])
+
+ assert_equal 'attr1 DESC', sort_clause
+ end
+
+ def test_default_sort_clause_with_hash
+ sort_init 'attr1', 'desc'
+ sort_update({'attr1' => 'table1.attr1', 'attr2' => 'table2.attr2'})
+
+ assert_equal 'table1.attr1 DESC', sort_clause
+ end
+
+ def test_default_sort_clause_with_multiple_columns
+ sort_init 'attr1', 'desc'
+ sort_update({'attr1' => ['table1.attr1', 'table1.attr2'], 'attr2' => 'table2.attr2'})
+
+ assert_equal 'table1.attr1 DESC, table1.attr2 DESC', sort_clause
+ end
+
+ def test_params_sort
+ @sort_param = 'attr1,attr2:desc'
+
+ sort_init 'attr1', 'desc'
+ sort_update({'attr1' => 'table1.attr1', 'attr2' => 'table2.attr2'})
+
+ assert_equal 'table1.attr1, table2.attr2 DESC', sort_clause
+ assert_equal 'attr1,attr2:desc', @session['foo_bar_sort']
+ end
+
+ def test_invalid_params_sort
+ @sort_param = 'invalid_key'
+
+ sort_init 'attr1', 'desc'
+ sort_update({'attr1' => 'table1.attr1', 'attr2' => 'table2.attr2'})
+
+ assert_equal 'table1.attr1 DESC', sort_clause
+ assert_equal 'attr1:desc', @session['foo_bar_sort']
+ end
+
+ def test_invalid_order_params_sort
+ @sort_param = 'attr1:foo:bar,attr2'
+
+ sort_init 'attr1', 'desc'
+ sort_update({'attr1' => 'table1.attr1', 'attr2' => 'table2.attr2'})
+
+ assert_equal 'table1.attr1, table2.attr2', sort_clause
+ assert_equal 'attr1,attr2', @session['foo_bar_sort']
+ end
+
+ private
+
+ def controller_name; 'foo'; end
+ def action_name; 'bar'; end
+ def params; {:sort => @sort_param}; end
+ def session; @session ||= {}; end
+end
@jsmith = Member.find(1)
end
- def test_create\r
- member = Member.new(:project_id => 1, :user_id => 4, :role_ids => [1, 2])\r
+ def test_create
+ member = Member.new(:project_id => 1, :user_id => 4, :role_ids => [1, 2])
assert member.save
member.reload
assert_equal 2, member.roles.size
- assert_equal Role.find(1), member.roles.sort.first\r
- end\r
+ assert_equal Role.find(1), member.roles.sort.first
+ end
def test_update
- assert_equal "eCookbook", @jsmith.project.name\r
- assert_equal "Manager", @jsmith.roles.first.name\r
- assert_equal "jsmith", @jsmith.user.login\r
- \r
- @jsmith.mail_notification = !@jsmith.mail_notification\r
+ assert_equal "eCookbook", @jsmith.project.name
+ assert_equal "Manager", @jsmith.roles.first.name
+ assert_equal "jsmith", @jsmith.user.login
+
+ @jsmith.mail_notification = !@jsmith.mail_notification
assert @jsmith.save
end
assert @jsmith.save
assert_equal 2, @jsmith.reload.roles.size
end
- \r
- def test_validate\r
- member = Member.new(:project_id => 1, :user_id => 2, :role_ids => [2])\r
- # same use can't have more than one membership for a project\r
+
+ def test_validate
+ member = Member.new(:project_id => 1, :user_id => 2, :role_ids => [2])
+ # same use can't have more than one membership for a project
assert !member.save
member = Member.new(:project_id => 1, :user_id => 2, :role_ids => [])
# must have one role at least
- assert !member.save\r
- end\r
- \r
+ assert !member.save
+ end
+
def test_destroy
assert_difference 'Member.count', -1 do
- assert_difference 'MemberRole.count', -1 do\r
+ assert_difference 'MemberRole.count', -1 do
@jsmith.destroy
end
end
- \r
- assert_raise(ActiveRecord::RecordNotFound) { Member.find(@jsmith.id) }\r
+
+ assert_raise(ActiveRecord::RecordNotFound) { Member.find(@jsmith.id) }
end
end
-# redMine - project management software\r
-# Copyright (C) 2006-2007 Jean-Philippe Lang\r
-#\r
-# This program is free software; you can redistribute it and/or\r
-# modify it under the terms of the GNU General Public License\r
-# as published by the Free Software Foundation; either version 2\r
-# of the License, or (at your option) any later version.\r
-# \r
-# This program is distributed in the hope that it will be useful,\r
-# but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r
-# GNU General Public License for more details.\r
-# \r
-# You should have received a copy of the GNU General Public License\r
-# along with this program; if not, write to the Free Software\r
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\r
-\r
-require File.dirname(__FILE__) + '/../test_helper'\r
-\r
-class ProjectTest < ActiveSupport::TestCase\r
- fixtures :projects, :enabled_modules, \r
- :issues, :issue_statuses, :journals, :journal_details,\r
- :users, :members, :member_roles, :roles, :projects_trackers, :trackers, :boards,\r
- :queries\r
-\r
- def setup\r
- @ecookbook = Project.find(1)\r
- @ecookbook_sub1 = Project.find(3)\r
- end\r
- \r
- def test_truth\r
- assert_kind_of Project, @ecookbook\r
- assert_equal "eCookbook", @ecookbook.name\r
- end\r
- \r
- def test_update\r
- assert_equal "eCookbook", @ecookbook.name\r
- @ecookbook.name = "eCook"\r
- assert @ecookbook.save, @ecookbook.errors.full_messages.join("; ")\r
- @ecookbook.reload\r
- assert_equal "eCook", @ecookbook.name\r
- end\r
- \r
- def test_validate\r
- @ecookbook.name = ""\r
- assert !@ecookbook.save\r
- assert_equal 1, @ecookbook.errors.count\r
- assert_equal I18n.translate('activerecord.errors.messages.blank'), @ecookbook.errors.on(:name)\r
- end\r
- \r
- def test_validate_identifier\r
- to_test = {"abc" => true,\r
- "ab12" => true,\r
- "ab-12" => true,\r
- "12" => false,\r
- "new" => false}\r
- \r
- to_test.each do |identifier, valid|\r
- p = Project.new\r
- p.identifier = identifier\r
- p.valid?\r
- assert_equal valid, p.errors.on('identifier').nil?\r
- end\r
- end\r
- \r
- def test_members_should_be_active_users\r
- Project.all.each do |project|\r
- assert_nil project.members.detect {|m| !(m.user.is_a?(User) && m.user.active?) }\r
- end\r
- end\r
- \r
- def test_users_should_be_active_users\r
- Project.all.each do |project|\r
- assert_nil project.users.detect {|u| !(u.is_a?(User) && u.active?) }\r
- end\r
- end\r
- \r
- def test_archive\r
- user = @ecookbook.members.first.user\r
- @ecookbook.archive\r
- @ecookbook.reload\r
- \r
- assert !@ecookbook.active?\r
- assert !user.projects.include?(@ecookbook)\r
- # Subproject are also archived\r
- assert !@ecookbook.children.empty?\r
- assert @ecookbook.descendants.active.empty?\r
- end\r
- \r
- def test_unarchive\r
- user = @ecookbook.members.first.user\r
- @ecookbook.archive\r
- # A subproject of an archived project can not be unarchived\r
- assert !@ecookbook_sub1.unarchive\r
- \r
- # Unarchive project\r
- assert @ecookbook.unarchive\r
- @ecookbook.reload\r
- assert @ecookbook.active?\r
- assert user.projects.include?(@ecookbook)\r
- # Subproject can now be unarchived\r
- @ecookbook_sub1.reload\r
- assert @ecookbook_sub1.unarchive\r
- end\r
- \r
- def test_destroy\r
- # 2 active members\r
- assert_equal 2, @ecookbook.members.size\r
- # and 1 is locked\r
- assert_equal 3, Member.find(:all, :conditions => ['project_id = ?', @ecookbook.id]).size\r
- # some boards\r
- assert @ecookbook.boards.any?\r
- \r
- @ecookbook.destroy\r
- # make sure that the project non longer exists\r
- assert_raise(ActiveRecord::RecordNotFound) { Project.find(@ecookbook.id) }\r
- # make sure related data was removed\r
- assert Member.find(:all, :conditions => ['project_id = ?', @ecookbook.id]).empty?\r
- assert Board.find(:all, :conditions => ['project_id = ?', @ecookbook.id]).empty?\r
- end\r
- \r
- def test_move_an_orphan_project_to_a_root_project\r
- sub = Project.find(2)\r
- sub.set_parent! @ecookbook\r
- assert_equal @ecookbook.id, sub.parent.id\r
- @ecookbook.reload\r
- assert_equal 4, @ecookbook.children.size\r
- end\r
- \r
- def test_move_an_orphan_project_to_a_subproject\r
- sub = Project.find(2)\r
- assert sub.set_parent!(@ecookbook_sub1)\r
- end\r
- \r
- def test_move_a_root_project_to_a_project\r
- sub = @ecookbook\r
- assert sub.set_parent!(Project.find(2))\r
- end\r
- \r
- def test_should_not_move_a_project_to_its_children\r
- sub = @ecookbook\r
- assert !(sub.set_parent!(Project.find(3)))\r
- end\r
- \r
- def test_set_parent_should_add_roots_in_alphabetical_order\r
- ProjectCustomField.delete_all\r
- Project.delete_all\r
- Project.create!(:name => 'Project C', :identifier => 'project-c').set_parent!(nil)\r
- Project.create!(:name => 'Project B', :identifier => 'project-b').set_parent!(nil)\r
- Project.create!(:name => 'Project D', :identifier => 'project-d').set_parent!(nil)\r
- Project.create!(:name => 'Project A', :identifier => 'project-a').set_parent!(nil)\r
- \r
- assert_equal 4, Project.count\r
- assert_equal Project.all.sort_by(&:name), Project.all.sort_by(&:lft)\r
- end\r
- \r
- def test_set_parent_should_add_children_in_alphabetical_order\r
- ProjectCustomField.delete_all\r
- parent = Project.create!(:name => 'Parent', :identifier => 'parent')\r
- Project.create!(:name => 'Project C', :identifier => 'project-c').set_parent!(parent)\r
- Project.create!(:name => 'Project B', :identifier => 'project-b').set_parent!(parent)\r
- Project.create!(:name => 'Project D', :identifier => 'project-d').set_parent!(parent)\r
- Project.create!(:name => 'Project A', :identifier => 'project-a').set_parent!(parent)\r
- \r
- parent.reload\r
- assert_equal 4, parent.children.size\r
- assert_equal parent.children.sort_by(&:name), parent.children\r
- end\r
- \r
- def test_rebuild_should_sort_children_alphabetically\r
- ProjectCustomField.delete_all\r
- parent = Project.create!(:name => 'Parent', :identifier => 'parent')\r
- Project.create!(:name => 'Project C', :identifier => 'project-c').move_to_child_of(parent)\r
- Project.create!(:name => 'Project B', :identifier => 'project-b').move_to_child_of(parent)\r
- Project.create!(:name => 'Project D', :identifier => 'project-d').move_to_child_of(parent)\r
- Project.create!(:name => 'Project A', :identifier => 'project-a').move_to_child_of(parent)\r
- \r
- Project.update_all("lft = NULL, rgt = NULL")\r
- Project.rebuild!\r
- \r
- parent.reload\r
- assert_equal 4, parent.children.size\r
- assert_equal parent.children.sort_by(&:name), parent.children\r
- end\r
- \r
- def test_parent\r
- p = Project.find(6).parent\r
- assert p.is_a?(Project)\r
- assert_equal 5, p.id\r
- end\r
- \r
- def test_ancestors\r
- a = Project.find(6).ancestors\r
- assert a.first.is_a?(Project)\r
- assert_equal [1, 5], a.collect(&:id)\r
- end\r
- \r
- def test_root\r
- r = Project.find(6).root\r
- assert r.is_a?(Project)\r
- assert_equal 1, r.id\r
- end\r
- \r
- def test_children\r
- c = Project.find(1).children\r
- assert c.first.is_a?(Project)\r
- assert_equal [5, 3, 4], c.collect(&:id)\r
- end\r
- \r
- def test_descendants\r
- d = Project.find(1).descendants\r
- assert d.first.is_a?(Project)\r
- assert_equal [5, 6, 3, 4], d.collect(&:id)\r
- end\r
- \r
- def test_users_by_role\r
- users_by_role = Project.find(1).users_by_role\r
- assert_kind_of Hash, users_by_role\r
- role = Role.find(1)\r
- assert_kind_of Array, users_by_role[role]\r
- assert users_by_role[role].include?(User.find(2))\r
- end\r
- \r
- def test_rolled_up_trackers\r
- parent = Project.find(1)\r
- parent.trackers = Tracker.find([1,2])\r
- child = parent.children.find(3)\r
- \r
- assert_equal [1, 2], parent.tracker_ids\r
- assert_equal [2, 3], child.trackers.collect(&:id)\r
- \r
- assert_kind_of Tracker, parent.rolled_up_trackers.first\r
- assert_equal Tracker.find(1), parent.rolled_up_trackers.first\r
- \r
- assert_equal [1, 2, 3], parent.rolled_up_trackers.collect(&:id)\r
- assert_equal [2, 3], child.rolled_up_trackers.collect(&:id)\r
- end\r
- \r
- def test_rolled_up_trackers_should_ignore_archived_subprojects\r
- parent = Project.find(1)\r
- parent.trackers = Tracker.find([1,2])\r
- child = parent.children.find(3)\r
- child.trackers = Tracker.find([1,3])\r
- parent.children.each(&:archive)\r
- \r
- assert_equal [1,2], parent.rolled_up_trackers.collect(&:id)\r
- end\r
- \r
- def test_next_identifier\r
- ProjectCustomField.delete_all\r
- Project.create!(:name => 'last', :identifier => 'p2008040')\r
- assert_equal 'p2008041', Project.next_identifier\r
- end\r
- \r
- def test_next_identifier_first_project\r
- Project.delete_all\r
- assert_nil Project.next_identifier\r
- end\r
- \r
+# redMine - project management software
+# Copyright (C) 2006-2007 Jean-Philippe Lang
+#
+# 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.
- def test_enabled_module_names_should_not_recreate_enabled_modules\r
- project = Project.find(1)\r
- # Remove one module\r
- modules = project.enabled_modules.slice(0..-2)\r
- assert modules.any?\r
- assert_difference 'EnabledModule.count', -1 do\r
- project.enabled_module_names = modules.collect(&:name)\r
- end\r
- project.reload\r
- # Ids should be preserved\r
- assert_equal project.enabled_module_ids.sort, modules.collect(&:id).sort\r
- end\r
+require File.dirname(__FILE__) + '/../test_helper'
- def test_copy_from_existing_project\r
- source_project = Project.find(1)\r
- copied_project = Project.copy_from(1)\r
-\r
- assert copied_project\r
- # Cleared attributes\r
- assert copied_project.id.blank?\r
- assert copied_project.name.blank?\r
- assert copied_project.identifier.blank?\r
- \r
- # Duplicated attributes\r
- assert_equal source_project.description, copied_project.description\r
- assert_equal source_project.enabled_modules, copied_project.enabled_modules\r
- assert_equal source_project.trackers, copied_project.trackers\r
-\r
- # Default attributes\r
- assert_equal 1, copied_project.status\r
- end\r
- \r
- # Context: Project#copy\r
- def test_copy_should_copy_issues\r
- # Setup\r
- ProjectCustomField.destroy_all # Custom values are a mess to isolate in tests\r
- source_project = Project.find(2)\r
- Project.destroy_all :identifier => "copy-test"\r
- project = Project.new(:name => 'Copy Test', :identifier => 'copy-test')\r
- project.trackers = source_project.trackers\r
- assert project.valid?\r
- \r
- assert project.issues.empty?\r
- assert project.copy(source_project)\r
-\r
- # Tests\r
- assert_equal source_project.issues.size, project.issues.size\r
- project.issues.each do |issue|\r
- assert issue.valid?\r
- assert ! issue.assigned_to.blank?\r
- assert_equal project, issue.project\r
- end\r
- end\r
- \r
- def test_copy_should_copy_members\r
- # Setup\r
- ProjectCustomField.destroy_all # Custom values are a mess to isolate in tests\r
- source_project = Project.find(2)\r
- project = Project.new(:name => 'Copy Test', :identifier => 'copy-test')\r
- project.trackers = source_project.trackers\r
- project.enabled_modules = source_project.enabled_modules\r
- assert project.valid?\r
-\r
- assert project.members.empty?\r
- assert project.copy(source_project)\r
-\r
- # Tests\r
- assert_equal source_project.members.size, project.members.size\r
- project.members.each do |member|\r
- assert member\r
- assert_equal project, member.project\r
- end\r
- end\r
-\r
- def test_copy_should_copy_project_level_queries\r
- # Setup\r
- ProjectCustomField.destroy_all # Custom values are a mess to isolate in tests\r
- source_project = Project.find(2)\r
- project = Project.new(:name => 'Copy Test', :identifier => 'copy-test')\r
- project.trackers = source_project.trackers\r
- project.enabled_modules = source_project.enabled_modules\r
- assert project.valid?\r
-\r
- assert project.queries.empty?\r
- assert project.copy(source_project)\r
-\r
- # Tests\r
- assert_equal source_project.queries.size, project.queries.size\r
- project.queries.each do |query|\r
- assert query\r
- assert_equal project, query.project\r
- end\r
- end\r
-\r
-end\r
+class ProjectTest < ActiveSupport::TestCase
+ fixtures :projects, :enabled_modules,
+ :issues, :issue_statuses, :journals, :journal_details,
+ :users, :members, :member_roles, :roles, :projects_trackers, :trackers, :boards,
+ :queries
+
+ def setup
+ @ecookbook = Project.find(1)
+ @ecookbook_sub1 = Project.find(3)
+ end
+
+ def test_truth
+ assert_kind_of Project, @ecookbook
+ assert_equal "eCookbook", @ecookbook.name
+ end
+
+ def test_update
+ assert_equal "eCookbook", @ecookbook.name
+ @ecookbook.name = "eCook"
+ assert @ecookbook.save, @ecookbook.errors.full_messages.join("; ")
+ @ecookbook.reload
+ assert_equal "eCook", @ecookbook.name
+ end
+
+ def test_validate
+ @ecookbook.name = ""
+ assert !@ecookbook.save
+ assert_equal 1, @ecookbook.errors.count
+ assert_equal I18n.translate('activerecord.errors.messages.blank'), @ecookbook.errors.on(:name)
+ end
+
+ def test_validate_identifier
+ to_test = {"abc" => true,
+ "ab12" => true,
+ "ab-12" => true,
+ "12" => false,
+ "new" => false}
+
+ to_test.each do |identifier, valid|
+ p = Project.new
+ p.identifier = identifier
+ p.valid?
+ assert_equal valid, p.errors.on('identifier').nil?
+ end
+ end
+
+ def test_members_should_be_active_users
+ Project.all.each do |project|
+ assert_nil project.members.detect {|m| !(m.user.is_a?(User) && m.user.active?) }
+ end
+ end
+
+ def test_users_should_be_active_users
+ Project.all.each do |project|
+ assert_nil project.users.detect {|u| !(u.is_a?(User) && u.active?) }
+ end
+ end
+
+ def test_archive
+ user = @ecookbook.members.first.user
+ @ecookbook.archive
+ @ecookbook.reload
+
+ assert !@ecookbook.active?
+ assert !user.projects.include?(@ecookbook)
+ # Subproject are also archived
+ assert !@ecookbook.children.empty?
+ assert @ecookbook.descendants.active.empty?
+ end
+
+ def test_unarchive
+ user = @ecookbook.members.first.user
+ @ecookbook.archive
+ # A subproject of an archived project can not be unarchived
+ assert !@ecookbook_sub1.unarchive
+
+ # Unarchive project
+ assert @ecookbook.unarchive
+ @ecookbook.reload
+ assert @ecookbook.active?
+ assert user.projects.include?(@ecookbook)
+ # Subproject can now be unarchived
+ @ecookbook_sub1.reload
+ assert @ecookbook_sub1.unarchive
+ end
+
+ def test_destroy
+ # 2 active members
+ assert_equal 2, @ecookbook.members.size
+ # and 1 is locked
+ assert_equal 3, Member.find(:all, :conditions => ['project_id = ?', @ecookbook.id]).size
+ # some boards
+ assert @ecookbook.boards.any?
+
+ @ecookbook.destroy
+ # make sure that the project non longer exists
+ assert_raise(ActiveRecord::RecordNotFound) { Project.find(@ecookbook.id) }
+ # make sure related data was removed
+ assert Member.find(:all, :conditions => ['project_id = ?', @ecookbook.id]).empty?
+ assert Board.find(:all, :conditions => ['project_id = ?', @ecookbook.id]).empty?
+ end
+
+ def test_move_an_orphan_project_to_a_root_project
+ sub = Project.find(2)
+ sub.set_parent! @ecookbook
+ assert_equal @ecookbook.id, sub.parent.id
+ @ecookbook.reload
+ assert_equal 4, @ecookbook.children.size
+ end
+
+ def test_move_an_orphan_project_to_a_subproject
+ sub = Project.find(2)
+ assert sub.set_parent!(@ecookbook_sub1)
+ end
+
+ def test_move_a_root_project_to_a_project
+ sub = @ecookbook
+ assert sub.set_parent!(Project.find(2))
+ end
+
+ def test_should_not_move_a_project_to_its_children
+ sub = @ecookbook
+ assert !(sub.set_parent!(Project.find(3)))
+ end
+
+ def test_set_parent_should_add_roots_in_alphabetical_order
+ ProjectCustomField.delete_all
+ Project.delete_all
+ Project.create!(:name => 'Project C', :identifier => 'project-c').set_parent!(nil)
+ Project.create!(:name => 'Project B', :identifier => 'project-b').set_parent!(nil)
+ Project.create!(:name => 'Project D', :identifier => 'project-d').set_parent!(nil)
+ Project.create!(:name => 'Project A', :identifier => 'project-a').set_parent!(nil)
+
+ assert_equal 4, Project.count
+ assert_equal Project.all.sort_by(&:name), Project.all.sort_by(&:lft)
+ end
+
+ def test_set_parent_should_add_children_in_alphabetical_order
+ ProjectCustomField.delete_all
+ parent = Project.create!(:name => 'Parent', :identifier => 'parent')
+ Project.create!(:name => 'Project C', :identifier => 'project-c').set_parent!(parent)
+ Project.create!(:name => 'Project B', :identifier => 'project-b').set_parent!(parent)
+ Project.create!(:name => 'Project D', :identifier => 'project-d').set_parent!(parent)
+ Project.create!(:name => 'Project A', :identifier => 'project-a').set_parent!(parent)
+
+ parent.reload
+ assert_equal 4, parent.children.size
+ assert_equal parent.children.sort_by(&:name), parent.children
+ end
+
+ def test_rebuild_should_sort_children_alphabetically
+ ProjectCustomField.delete_all
+ parent = Project.create!(:name => 'Parent', :identifier => 'parent')
+ Project.create!(:name => 'Project C', :identifier => 'project-c').move_to_child_of(parent)
+ Project.create!(:name => 'Project B', :identifier => 'project-b').move_to_child_of(parent)
+ Project.create!(:name => 'Project D', :identifier => 'project-d').move_to_child_of(parent)
+ Project.create!(:name => 'Project A', :identifier => 'project-a').move_to_child_of(parent)
+
+ Project.update_all("lft = NULL, rgt = NULL")
+ Project.rebuild!
+
+ parent.reload
+ assert_equal 4, parent.children.size
+ assert_equal parent.children.sort_by(&:name), parent.children
+ end
+
+ def test_parent
+ p = Project.find(6).parent
+ assert p.is_a?(Project)
+ assert_equal 5, p.id
+ end
+
+ def test_ancestors
+ a = Project.find(6).ancestors
+ assert a.first.is_a?(Project)
+ assert_equal [1, 5], a.collect(&:id)
+ end
+
+ def test_root
+ r = Project.find(6).root
+ assert r.is_a?(Project)
+ assert_equal 1, r.id
+ end
+
+ def test_children
+ c = Project.find(1).children
+ assert c.first.is_a?(Project)
+ assert_equal [5, 3, 4], c.collect(&:id)
+ end
+
+ def test_descendants
+ d = Project.find(1).descendants
+ assert d.first.is_a?(Project)
+ assert_equal [5, 6, 3, 4], d.collect(&:id)
+ end
+
+ def test_users_by_role
+ users_by_role = Project.find(1).users_by_role
+ assert_kind_of Hash, users_by_role
+ role = Role.find(1)
+ assert_kind_of Array, users_by_role[role]
+ assert users_by_role[role].include?(User.find(2))
+ end
+
+ def test_rolled_up_trackers
+ parent = Project.find(1)
+ parent.trackers = Tracker.find([1,2])
+ child = parent.children.find(3)
+
+ assert_equal [1, 2], parent.tracker_ids
+ assert_equal [2, 3], child.trackers.collect(&:id)
+
+ assert_kind_of Tracker, parent.rolled_up_trackers.first
+ assert_equal Tracker.find(1), parent.rolled_up_trackers.first
+
+ assert_equal [1, 2, 3], parent.rolled_up_trackers.collect(&:id)
+ assert_equal [2, 3], child.rolled_up_trackers.collect(&:id)
+ end
+
+ def test_rolled_up_trackers_should_ignore_archived_subprojects
+ parent = Project.find(1)
+ parent.trackers = Tracker.find([1,2])
+ child = parent.children.find(3)
+ child.trackers = Tracker.find([1,3])
+ parent.children.each(&:archive)
+
+ assert_equal [1,2], parent.rolled_up_trackers.collect(&:id)
+ end
+
+ def test_next_identifier
+ ProjectCustomField.delete_all
+ Project.create!(:name => 'last', :identifier => 'p2008040')
+ assert_equal 'p2008041', Project.next_identifier
+ end
+
+ def test_next_identifier_first_project
+ Project.delete_all
+ assert_nil Project.next_identifier
+ end
+
+
+ def test_enabled_module_names_should_not_recreate_enabled_modules
+ project = Project.find(1)
+ # Remove one module
+ modules = project.enabled_modules.slice(0..-2)
+ assert modules.any?
+ assert_difference 'EnabledModule.count', -1 do
+ project.enabled_module_names = modules.collect(&:name)
+ end
+ project.reload
+ # Ids should be preserved
+ assert_equal project.enabled_module_ids.sort, modules.collect(&:id).sort
+ end
+
+ def test_copy_from_existing_project
+ source_project = Project.find(1)
+ copied_project = Project.copy_from(1)
+
+ assert copied_project
+ # Cleared attributes
+ assert copied_project.id.blank?
+ assert copied_project.name.blank?
+ assert copied_project.identifier.blank?
+
+ # Duplicated attributes
+ assert_equal source_project.description, copied_project.description
+ assert_equal source_project.enabled_modules, copied_project.enabled_modules
+ assert_equal source_project.trackers, copied_project.trackers
+
+ # Default attributes
+ assert_equal 1, copied_project.status
+ end
+
+ # Context: Project#copy
+ def test_copy_should_copy_issues
+ # Setup
+ ProjectCustomField.destroy_all # Custom values are a mess to isolate in tests
+ source_project = Project.find(2)
+ Project.destroy_all :identifier => "copy-test"
+ project = Project.new(:name => 'Copy Test', :identifier => 'copy-test')
+ project.trackers = source_project.trackers
+ assert project.valid?
+
+ assert project.issues.empty?
+ assert project.copy(source_project)
+
+ # Tests
+ assert_equal source_project.issues.size, project.issues.size
+ project.issues.each do |issue|
+ assert issue.valid?
+ assert ! issue.assigned_to.blank?
+ assert_equal project, issue.project
+ end
+ end
+
+ def test_copy_should_copy_members
+ # Setup
+ ProjectCustomField.destroy_all # Custom values are a mess to isolate in tests
+ source_project = Project.find(2)
+ project = Project.new(:name => 'Copy Test', :identifier => 'copy-test')
+ project.trackers = source_project.trackers
+ project.enabled_modules = source_project.enabled_modules
+ assert project.valid?
+
+ assert project.members.empty?
+ assert project.copy(source_project)
+
+ # Tests
+ assert_equal source_project.members.size, project.members.size
+ project.members.each do |member|
+ assert member
+ assert_equal project, member.project
+ end
+ end
+
+ def test_copy_should_copy_project_level_queries
+ # Setup
+ ProjectCustomField.destroy_all # Custom values are a mess to isolate in tests
+ source_project = Project.find(2)
+ project = Project.new(:name => 'Copy Test', :identifier => 'copy-test')
+ project.trackers = source_project.trackers
+ project.enabled_modules = source_project.enabled_modules
+ assert project.valid?
+
+ assert project.queries.empty?
+ assert project.copy(source_project)
+
+ # Tests
+ assert_equal source_project.queries.size, project.queries.size
+ project.queries.each do |query|
+ assert query
+ assert_equal project, query.project
+ end
+ end
+
+end
def setup
@repository = Project.find(1).repository
end
- \r
- def test_create\r
+
+ def test_create
repository = Repository::Subversion.new(:project => Project.find(3))
assert !repository.save
- repository.url = "svn://localhost"\r
+ repository.url = "svn://localhost"
assert repository.save
repository.reload
project = Project.find(3)
- assert_equal repository, project.repository\r
+ assert_equal repository, project.repository
end
def test_destroy
-# redMine - project management software\r
-# Copyright (C) 2006 Jean-Philippe Lang\r
-#\r
-# This program is free software; you can redistribute it and/or\r
-# modify it under the terms of the GNU General Public License\r
-# as published by the Free Software Foundation; either version 2\r
-# of the License, or (at your option) any later version.\r
-# \r
-# This program is distributed in the hope that it will be useful,\r
-# but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r
-# GNU General Public License for more details.\r
-# \r
-# You should have received a copy of the GNU General Public License\r
-# along with this program; if not, write to the Free Software\r
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\r
-\r
-require File.dirname(__FILE__) + '/../test_helper'\r
-\r
-class UserTest < ActiveSupport::TestCase\r
- fixtures :users, :members, :projects, :roles, :member_roles\r
-\r
- def setup\r
- @admin = User.find(1)\r
- @jsmith = User.find(2)\r
- @dlopper = User.find(3)\r
- end\r
- \r
- def test_truth\r
- assert_kind_of User, @jsmith\r
- end\r
-\r
- def test_create\r
- user = User.new(:firstname => "new", :lastname => "user", :mail => "newuser@somenet.foo")\r
- \r
- user.login = "jsmith"\r
- user.password, user.password_confirmation = "password", "password"\r
- # login uniqueness\r
- assert !user.save\r
- assert_equal 1, user.errors.count\r
- \r
- user.login = "newuser"\r
- user.password, user.password_confirmation = "passwd", "password"\r
- # password confirmation\r
- assert !user.save\r
- assert_equal 1, user.errors.count\r
-\r
- user.password, user.password_confirmation = "password", "password"\r
- assert user.save\r
- end\r
- \r
- def test_mail_uniqueness_should_not_be_case_sensitive\r
- u = User.new(:firstname => "new", :lastname => "user", :mail => "newuser@somenet.foo")\r
- u.login = 'newuser1'\r
- u.password, u.password_confirmation = "password", "password"\r
- assert u.save\r
- \r
- u = User.new(:firstname => "new", :lastname => "user", :mail => "newUser@Somenet.foo")\r
- u.login = 'newuser2'\r
- u.password, u.password_confirmation = "password", "password"\r
- assert !u.save\r
- assert_equal I18n.translate('activerecord.errors.messages.taken'), u.errors.on(:mail)\r
- end\r
-\r
- def test_update\r
- assert_equal "admin", @admin.login\r
- @admin.login = "john"\r
- assert @admin.save, @admin.errors.full_messages.join("; ")\r
- @admin.reload\r
- assert_equal "john", @admin.login\r
- end\r
- \r
- def test_destroy\r
- User.find(2).destroy\r
- assert_nil User.find_by_id(2)\r
- assert Member.find_all_by_user_id(2).empty?\r
- end\r
- \r
- def test_validate\r
- @admin.login = ""\r
- assert !@admin.save\r
- assert_equal 1, @admin.errors.count\r
- end\r
- \r
- def test_password\r
- user = User.try_to_login("admin", "admin")\r
- assert_kind_of User, user\r
- assert_equal "admin", user.login\r
- user.password = "hello"\r
- assert user.save\r
- \r
- user = User.try_to_login("admin", "hello")\r
- assert_kind_of User, user\r
- assert_equal "admin", user.login\r
- assert_equal User.hash_password("hello"), user.hashed_password \r
- end\r
- \r
- def test_name_format\r
- assert_equal 'Smith, John', @jsmith.name(:lastname_coma_firstname)\r
- Setting.user_format = :firstname_lastname\r
- assert_equal 'John Smith', @jsmith.reload.name\r
- Setting.user_format = :username\r
- assert_equal 'jsmith', @jsmith.reload.name\r
- end\r
- \r
- def test_lock\r
- user = User.try_to_login("jsmith", "jsmith")\r
- assert_equal @jsmith, user\r
- \r
- @jsmith.status = User::STATUS_LOCKED\r
- assert @jsmith.save\r
- \r
- user = User.try_to_login("jsmith", "jsmith")\r
- assert_equal nil, user \r
- end\r
- \r
- def test_create_anonymous\r
- AnonymousUser.delete_all\r
- anon = User.anonymous\r
- assert !anon.new_record?\r
- assert_kind_of AnonymousUser, anon\r
- end\r
- \r
- def test_rss_key\r
- assert_nil @jsmith.rss_token\r
- key = @jsmith.rss_key\r
- assert_equal 40, key.length\r
- \r
- @jsmith.reload\r
- assert_equal key, @jsmith.rss_key\r
- end\r
- \r
- def test_roles_for_project\r
- # user with a role\r
- roles = @jsmith.roles_for_project(Project.find(1))\r
- assert_kind_of Role, roles.first\r
- assert_equal "Manager", roles.first.name\r
- \r
- # user with no role\r
- assert_nil @dlopper.roles_for_project(Project.find(2)).detect {|role| role.member?}\r
- end\r
- \r
- def test_mail_notification_all\r
- @jsmith.mail_notification = true\r
- @jsmith.notified_project_ids = []\r
- @jsmith.save\r
- @jsmith.reload\r
- assert @jsmith.projects.first.recipients.include?(@jsmith.mail)\r
- end\r
- \r
- def test_mail_notification_selected\r
- @jsmith.mail_notification = false\r
- @jsmith.notified_project_ids = [1]\r
- @jsmith.save\r
- @jsmith.reload\r
- assert Project.find(1).recipients.include?(@jsmith.mail)\r
- end\r
- \r
- def test_mail_notification_none\r
- @jsmith.mail_notification = false\r
- @jsmith.notified_project_ids = []\r
- @jsmith.save\r
- @jsmith.reload\r
- assert !@jsmith.projects.first.recipients.include?(@jsmith.mail)\r
- end\r
- \r
- def test_comments_sorting_preference\r
- assert !@jsmith.wants_comments_in_reverse_order?\r
- @jsmith.pref.comments_sorting = 'asc'\r
- assert !@jsmith.wants_comments_in_reverse_order?\r
- @jsmith.pref.comments_sorting = 'desc'\r
- assert @jsmith.wants_comments_in_reverse_order?\r
- end\r
- \r
- def test_find_by_mail_should_be_case_insensitive\r
- u = User.find_by_mail('JSmith@somenet.foo')\r
- assert_not_nil u\r
- assert_equal 'jsmith@somenet.foo', u.mail\r
- end\r
- \r
- def test_random_password\r
- u = User.new\r
- u.random_password\r
- assert !u.password.blank?\r
- assert !u.password_confirmation.blank?\r
- end\r
- \r
- if Object.const_defined?(:OpenID)\r
- \r
- def test_setting_identity_url\r
- normalized_open_id_url = 'http://example.com/'\r
- u = User.new( :identity_url => 'http://example.com/' )\r
- assert_equal normalized_open_id_url, u.identity_url\r
- end\r
-\r
- def test_setting_identity_url_without_trailing_slash\r
- normalized_open_id_url = 'http://example.com/'\r
- u = User.new( :identity_url => 'http://example.com' )\r
- assert_equal normalized_open_id_url, u.identity_url\r
- end\r
-\r
- def test_setting_identity_url_without_protocol\r
- normalized_open_id_url = 'http://example.com/'\r
- u = User.new( :identity_url => 'example.com' )\r
- assert_equal normalized_open_id_url, u.identity_url\r
- end\r
- \r
- def test_setting_blank_identity_url\r
- u = User.new( :identity_url => 'example.com' )\r
- u.identity_url = ''\r
- assert u.identity_url.blank?\r
- end\r
- \r
- def test_setting_invalid_identity_url\r
- u = User.new( :identity_url => 'this is not an openid url' )\r
- assert u.identity_url.blank?\r
- end\r
- \r
- else\r
- puts "Skipping openid tests."\r
- end\r
-\r
-end\r
+# redMine - project management software
+# Copyright (C) 2006 Jean-Philippe Lang
+#
+# 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.dirname(__FILE__) + '/../test_helper'
+
+class UserTest < ActiveSupport::TestCase
+ fixtures :users, :members, :projects, :roles, :member_roles
+
+ def setup
+ @admin = User.find(1)
+ @jsmith = User.find(2)
+ @dlopper = User.find(3)
+ end
+
+ def test_truth
+ assert_kind_of User, @jsmith
+ end
+
+ def test_create
+ user = User.new(:firstname => "new", :lastname => "user", :mail => "newuser@somenet.foo")
+
+ user.login = "jsmith"
+ user.password, user.password_confirmation = "password", "password"
+ # login uniqueness
+ assert !user.save
+ assert_equal 1, user.errors.count
+
+ user.login = "newuser"
+ user.password, user.password_confirmation = "passwd", "password"
+ # password confirmation
+ assert !user.save
+ assert_equal 1, user.errors.count
+
+ user.password, user.password_confirmation = "password", "password"
+ assert user.save
+ end
+
+ def test_mail_uniqueness_should_not_be_case_sensitive
+ u = User.new(:firstname => "new", :lastname => "user", :mail => "newuser@somenet.foo")
+ u.login = 'newuser1'
+ u.password, u.password_confirmation = "password", "password"
+ assert u.save
+
+ u = User.new(:firstname => "new", :lastname => "user", :mail => "newUser@Somenet.foo")
+ u.login = 'newuser2'
+ u.password, u.password_confirmation = "password", "password"
+ assert !u.save
+ assert_equal I18n.translate('activerecord.errors.messages.taken'), u.errors.on(:mail)
+ end
+
+ def test_update
+ assert_equal "admin", @admin.login
+ @admin.login = "john"
+ assert @admin.save, @admin.errors.full_messages.join("; ")
+ @admin.reload
+ assert_equal "john", @admin.login
+ end
+
+ def test_destroy
+ User.find(2).destroy
+ assert_nil User.find_by_id(2)
+ assert Member.find_all_by_user_id(2).empty?
+ end
+
+ def test_validate
+ @admin.login = ""
+ assert !@admin.save
+ assert_equal 1, @admin.errors.count
+ end
+
+ def test_password
+ user = User.try_to_login("admin", "admin")
+ assert_kind_of User, user
+ assert_equal "admin", user.login
+ user.password = "hello"
+ assert user.save
+
+ user = User.try_to_login("admin", "hello")
+ assert_kind_of User, user
+ assert_equal "admin", user.login
+ assert_equal User.hash_password("hello"), user.hashed_password
+ end
+
+ def test_name_format
+ assert_equal 'Smith, John', @jsmith.name(:lastname_coma_firstname)
+ Setting.user_format = :firstname_lastname
+ assert_equal 'John Smith', @jsmith.reload.name
+ Setting.user_format = :username
+ assert_equal 'jsmith', @jsmith.reload.name
+ end
+
+ def test_lock
+ user = User.try_to_login("jsmith", "jsmith")
+ assert_equal @jsmith, user
+
+ @jsmith.status = User::STATUS_LOCKED
+ assert @jsmith.save
+
+ user = User.try_to_login("jsmith", "jsmith")
+ assert_equal nil, user
+ end
+
+ def test_create_anonymous
+ AnonymousUser.delete_all
+ anon = User.anonymous
+ assert !anon.new_record?
+ assert_kind_of AnonymousUser, anon
+ end
+
+ def test_rss_key
+ assert_nil @jsmith.rss_token
+ key = @jsmith.rss_key
+ assert_equal 40, key.length
+
+ @jsmith.reload
+ assert_equal key, @jsmith.rss_key
+ end
+
+ def test_roles_for_project
+ # user with a role
+ roles = @jsmith.roles_for_project(Project.find(1))
+ assert_kind_of Role, roles.first
+ assert_equal "Manager", roles.first.name
+
+ # user with no role
+ assert_nil @dlopper.roles_for_project(Project.find(2)).detect {|role| role.member?}
+ end
+
+ def test_mail_notification_all
+ @jsmith.mail_notification = true
+ @jsmith.notified_project_ids = []
+ @jsmith.save
+ @jsmith.reload
+ assert @jsmith.projects.first.recipients.include?(@jsmith.mail)
+ end
+
+ def test_mail_notification_selected
+ @jsmith.mail_notification = false
+ @jsmith.notified_project_ids = [1]
+ @jsmith.save
+ @jsmith.reload
+ assert Project.find(1).recipients.include?(@jsmith.mail)
+ end
+
+ def test_mail_notification_none
+ @jsmith.mail_notification = false
+ @jsmith.notified_project_ids = []
+ @jsmith.save
+ @jsmith.reload
+ assert !@jsmith.projects.first.recipients.include?(@jsmith.mail)
+ end
+
+ def test_comments_sorting_preference
+ assert !@jsmith.wants_comments_in_reverse_order?
+ @jsmith.pref.comments_sorting = 'asc'
+ assert !@jsmith.wants_comments_in_reverse_order?
+ @jsmith.pref.comments_sorting = 'desc'
+ assert @jsmith.wants_comments_in_reverse_order?
+ end
+
+ def test_find_by_mail_should_be_case_insensitive
+ u = User.find_by_mail('JSmith@somenet.foo')
+ assert_not_nil u
+ assert_equal 'jsmith@somenet.foo', u.mail
+ end
+
+ def test_random_password
+ u = User.new
+ u.random_password
+ assert !u.password.blank?
+ assert !u.password_confirmation.blank?
+ end
+
+ if Object.const_defined?(:OpenID)
+
+ def test_setting_identity_url
+ normalized_open_id_url = 'http://example.com/'
+ u = User.new( :identity_url => 'http://example.com/' )
+ assert_equal normalized_open_id_url, u.identity_url
+ end
+
+ def test_setting_identity_url_without_trailing_slash
+ normalized_open_id_url = 'http://example.com/'
+ u = User.new( :identity_url => 'http://example.com' )
+ assert_equal normalized_open_id_url, u.identity_url
+ end
+
+ def test_setting_identity_url_without_protocol
+ normalized_open_id_url = 'http://example.com/'
+ u = User.new( :identity_url => 'example.com' )
+ assert_equal normalized_open_id_url, u.identity_url
+ end
+
+ def test_setting_blank_identity_url
+ u = User.new( :identity_url => 'example.com' )
+ u.identity_url = ''
+ assert u.identity_url.blank?
+ end
+
+ def test_setting_invalid_identity_url
+ u = User.new( :identity_url => 'this is not an openid url' )
+ assert u.identity_url.blank?
+ end
+
+ else
+ puts "Skipping openid tests."
+ end
+
+end
@wiki = Wiki.find(1)
@page = @wiki.pages.first
end
- \r
- def test_create\r
+
+ def test_create
page = WikiPage.new(:wiki => @wiki)
assert !page.save
assert_equal 1, page.errors.count
- page.title = "Page"\r
+ page.title = "Page"
assert page.save
page.reload
@wiki.reload
- assert @wiki.pages.include?(page)\r
+ assert @wiki.pages.include?(page)
end
def test_find_or_new_page
class WikiTest < ActiveSupport::TestCase
fixtures :wikis, :wiki_pages, :wiki_contents, :wiki_content_versions
- \r
- def test_create\r
+
+ def test_create
wiki = Wiki.new(:project => Project.find(2))
assert !wiki.save
assert_equal 1, wiki.errors.count
- wiki.start_page = "Start page"\r
- assert wiki.save\r
- end\r
+ wiki.start_page = "Start page"
+ assert wiki.save
+ end
def test_update
@wiki = Wiki.find(1)