Adds missing native eol properties.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@2895 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
parent
52a6b0a21e
commit
21e18c1eb4
|
@ -1,38 +1,38 @@
|
||||||
# Redmine - project management software
|
# Redmine - project management software
|
||||||
# Copyright (C) 2006-2009 Jean-Philippe Lang
|
# Copyright (C) 2006-2009 Jean-Philippe Lang
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or
|
# This program is free software; you can redistribute it and/or
|
||||||
# modify it under the terms of the GNU General Public License
|
# modify it under the terms of the GNU General Public License
|
||||||
# as published by the Free Software Foundation; either version 2
|
# as published by the Free Software Foundation; either version 2
|
||||||
# of the License, or (at your option) any later version.
|
# of the License, or (at your option) any later version.
|
||||||
#
|
#
|
||||||
# This program is distributed in the hope that it will be useful,
|
# This program is distributed in the hope that it will be useful,
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
# GNU General Public License for more details.
|
# GNU General Public License for more details.
|
||||||
#
|
#
|
||||||
# You should have received a copy of the GNU General Public License
|
# You should have received a copy of the GNU General Public License
|
||||||
# along with this program; if not, write to the Free Software
|
# along with this program; if not, write to the Free Software
|
||||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
|
|
||||||
class Principal < ActiveRecord::Base
|
class Principal < ActiveRecord::Base
|
||||||
set_table_name 'users'
|
set_table_name 'users'
|
||||||
|
|
||||||
has_many :members, :foreign_key => 'user_id', :dependent => :destroy
|
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 :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
|
has_many :projects, :through => :memberships
|
||||||
|
|
||||||
# Groups and active users
|
# 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 :active, :conditions => "#{Principal.table_name}.type='Group' OR (#{Principal.table_name}.type='User' AND #{Principal.table_name}.status = 1)"
|
||||||
|
|
||||||
named_scope :like, lambda {|q|
|
named_scope :like, lambda {|q|
|
||||||
s = "%#{q.to_s.strip.downcase}%"
|
s = "%#{q.to_s.strip.downcase}%"
|
||||||
{:conditions => ["LOWER(login) LIKE ? OR LOWER(firstname) LIKE ? OR LOWER(lastname) LIKE ?", s, s, s],
|
{:conditions => ["LOWER(login) LIKE ? OR LOWER(firstname) LIKE ? OR LOWER(lastname) LIKE ?", s, s, s],
|
||||||
:order => 'type, login, lastname, firstname'
|
:order => 'type, login, lastname, firstname'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
def <=>(principal)
|
def <=>(principal)
|
||||||
self.to_s.downcase <=> principal.to_s.downcase
|
self.to_s.downcase <=> principal.to_s.downcase
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,16 +1,16 @@
|
||||||
<h3><%=l(:label_watched_issues)%> (<%= Issue.visible.count(:include => :watchers,
|
<h3><%=l(:label_watched_issues)%> (<%= Issue.visible.count(:include => :watchers,
|
||||||
:conditions => ["#{Watcher.table_name}.user_id = ?", user.id]) %>)</h3>
|
:conditions => ["#{Watcher.table_name}.user_id = ?", user.id]) %>)</h3>
|
||||||
<% watched_issues = Issue.visible.find(:all,
|
<% watched_issues = Issue.visible.find(:all,
|
||||||
:include => [:status, :project, :tracker, :watchers],
|
:include => [:status, :project, :tracker, :watchers],
|
||||||
:limit => 10,
|
:limit => 10,
|
||||||
:conditions => ["#{Watcher.table_name}.user_id = ?", user.id],
|
:conditions => ["#{Watcher.table_name}.user_id = ?", user.id],
|
||||||
:order => "#{Issue.table_name}.updated_on DESC") %>
|
:order => "#{Issue.table_name}.updated_on DESC") %>
|
||||||
|
|
||||||
<%= render :partial => 'issues/list_simple', :locals => { :issues => watched_issues } %>
|
<%= render :partial => 'issues/list_simple', :locals => { :issues => watched_issues } %>
|
||||||
<% if watched_issues.length > 0 %>
|
<% if watched_issues.length > 0 %>
|
||||||
<p class="small"><%= link_to l(:label_issue_view_all), :controller => 'issues',
|
<p class="small"><%= link_to l(:label_issue_view_all), :controller => 'issues',
|
||||||
:action => 'index',
|
:action => 'index',
|
||||||
:set_filter => 1,
|
:set_filter => 1,
|
||||||
:watcher_id => 'me',
|
:watcher_id => 'me',
|
||||||
:sort => 'updated_on:desc' %></p>
|
:sort => 'updated_on:desc' %></p>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
<h2><%= l(:label_query_new) %></h2>
|
<h2><%= l(:label_query_new) %></h2>
|
||||||
|
|
||||||
<% form_tag({:action => 'new', :project_id => @query.project}, :onsubmit => 'selectAllOptions("selected_columns");') do %>
|
<% form_tag({:action => 'new', :project_id => @query.project}, :onsubmit => 'selectAllOptions("selected_columns");') do %>
|
||||||
<%= render :partial => 'form', :locals => {:query => @query} %>
|
<%= render :partial => 'form', :locals => {:query => @query} %>
|
||||||
<%= submit_tag l(:button_save) %>
|
<%= submit_tag l(:button_save) %>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|
|
@ -1,12 +1,12 @@
|
||||||
<h2><%= l(:label_statistics) %></h2>
|
<h2><%= l(:label_statistics) %></h2>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
<%= tag("embed", :width => 800, :height => 300, :type => "image/svg+xml", :src => url_for(:controller => 'repositories', :action => 'graph', :id => @project, :graph => "commits_per_month")) %>
|
<%= 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>
|
||||||
<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")) %>
|
<%= 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>
|
||||||
|
|
||||||
<p><%= link_to l(:button_back), :action => 'show', :id => @project %></p>
|
<p><%= link_to l(:button_back), :action => 'show', :id => @project %></p>
|
||||||
|
|
||||||
<% html_title(l(:label_repository), l(:label_statistics)) -%>
|
<% html_title(l(:label_repository), l(:label_statistics)) -%>
|
||||||
|
|
|
@ -1,51 +1,51 @@
|
||||||
<h2><%= l(:label_search) %></h2>
|
<h2><%= l(:label_search) %></h2>
|
||||||
|
|
||||||
<div class="box">
|
<div class="box">
|
||||||
<% form_tag({}, :method => :get) do %>
|
<% form_tag({}, :method => :get) do %>
|
||||||
<p><%= text_field_tag 'q', @question, :size => 60, :id => 'search-input' %>
|
<p><%= text_field_tag 'q', @question, :size => 60, :id => 'search-input' %>
|
||||||
<%= javascript_tag "Field.focus('search-input')" %>
|
<%= javascript_tag "Field.focus('search-input')" %>
|
||||||
<%= project_select_tag %>
|
<%= project_select_tag %>
|
||||||
<label><%= check_box_tag 'all_words', 1, @all_words %> <%= l(:label_all_words) %></label>
|
<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>
|
<label><%= check_box_tag 'titles_only', 1, @titles_only %> <%= l(:label_search_titles_only) %></label>
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
<% @object_types.each do |t| %>
|
<% @object_types.each do |t| %>
|
||||||
<label><%= check_box_tag t, 1, @scope.include?(t) %> <%= type_label(t) %></label>
|
<label><%= check_box_tag t, 1, @scope.include?(t) %> <%= type_label(t) %></label>
|
||||||
<% end %>
|
<% end %>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p><%= submit_tag l(:button_submit), :name => 'submit' %></p>
|
<p><%= submit_tag l(:button_submit), :name => 'submit' %></p>
|
||||||
<% end %>
|
<% end %>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<% if @results %>
|
<% if @results %>
|
||||||
<div id="search-results-counts">
|
<div id="search-results-counts">
|
||||||
<%= render_results_by_type(@results_by_type) unless @scope.size == 1 %>
|
<%= render_results_by_type(@results_by_type) unless @scope.size == 1 %>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<h3><%= l(:label_result_plural) %> (<%= @results_by_type.values.sum %>)</h3>
|
<h3><%= l(:label_result_plural) %> (<%= @results_by_type.values.sum %>)</h3>
|
||||||
<dl id="search-results">
|
<dl id="search-results">
|
||||||
<% @results.each do |e| %>
|
<% @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>
|
<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>
|
<dd><span class="description"><%= highlight_tokens(e.event_description, @tokens) %></span>
|
||||||
<span class="author"><%= format_time(e.event_datetime) %></span></dd>
|
<span class="author"><%= format_time(e.event_datetime) %></span></dd>
|
||||||
<% end %>
|
<% end %>
|
||||||
</dl>
|
</dl>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|
||||||
<p><center>
|
<p><center>
|
||||||
<% if @pagination_previous_date %>
|
<% if @pagination_previous_date %>
|
||||||
<%= link_to_remote ('« ' + l(:label_previous)),
|
<%= link_to_remote ('« ' + l(:label_previous)),
|
||||||
{:update => :content,
|
{:update => :content,
|
||||||
:url => params.merge(:previous => 1, :offset => @pagination_previous_date.strftime("%Y%m%d%H%M%S"))
|
: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"))) %>
|
}, :href => url_for(params.merge(:previous => 1, :offset => @pagination_previous_date.strftime("%Y%m%d%H%M%S"))) %>
|
||||||
<% end %>
|
<% end %>
|
||||||
<% if @pagination_next_date %>
|
<% if @pagination_next_date %>
|
||||||
<%= link_to_remote (l(:label_next) + ' »'),
|
<%= link_to_remote (l(:label_next) + ' »'),
|
||||||
{:update => :content,
|
{:update => :content,
|
||||||
:url => params.merge(:previous => nil, :offset => @pagination_next_date.strftime("%Y%m%d%H%M%S"))
|
: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"))) %>
|
}, :href => url_for(params.merge(:previous => nil, :offset => @pagination_next_date.strftime("%Y%m%d%H%M%S"))) %>
|
||||||
<% end %>
|
<% end %>
|
||||||
</center></p>
|
</center></p>
|
||||||
|
|
||||||
<% html_title(l(:label_search)) -%>
|
<% html_title(l(:label_search)) -%>
|
||||||
|
|
|
@ -1,35 +1,35 @@
|
||||||
<div class="contextual">
|
<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' %>
|
<%= link_to_if_authorized l(:button_log_time), {:controller => 'timelog', :action => 'edit', :project_id => @project, :issue_id => @issue}, :class => 'icon icon-time-add' %>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<%= render_timelog_breadcrumb %>
|
<%= render_timelog_breadcrumb %>
|
||||||
|
|
||||||
<h2><%= l(:label_spent_time) %></h2>
|
<h2><%= l(:label_spent_time) %></h2>
|
||||||
|
|
||||||
<% form_remote_tag( :url => {}, :html => {:method => :get, :id => 'query_form'}, :method => :get, :update => 'content' ) do %>
|
<% 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
|
<%# TOOD: remove the project_id and issue_id hidden fields, that information is
|
||||||
already in the URI %>
|
already in the URI %>
|
||||||
<%= hidden_field_tag('project_id', params[:project_id]) if @project %>
|
<%= hidden_field_tag('project_id', params[:project_id]) if @project %>
|
||||||
<%= hidden_field_tag 'issue_id', params[:issue_id] if @issue %>
|
<%= hidden_field_tag 'issue_id', params[:issue_id] if @issue %>
|
||||||
<%= render :partial => 'date_range' %>
|
<%= render :partial => 'date_range' %>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|
||||||
<div class="total-hours">
|
<div class="total-hours">
|
||||||
<p><%= l(:label_total) %>: <%= html_hours(l_hours(@total_hours)) %></p>
|
<p><%= l(:label_total) %>: <%= html_hours(l_hours(@total_hours)) %></p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<% unless @entries.empty? %>
|
<% unless @entries.empty? %>
|
||||||
<%= render :partial => 'list', :locals => { :entries => @entries }%>
|
<%= render :partial => 'list', :locals => { :entries => @entries }%>
|
||||||
<p class="pagination"><%= pagination_links_full @entry_pages, @entry_count %></p>
|
<p class="pagination"><%= pagination_links_full @entry_pages, @entry_count %></p>
|
||||||
|
|
||||||
<% other_formats_links do |f| %>
|
<% other_formats_links do |f| %>
|
||||||
<%= f.link_to 'Atom', :url => params.merge({:issue_id => @issue, :key => User.current.rss_key}) %>
|
<%= f.link_to 'Atom', :url => params.merge({:issue_id => @issue, :key => User.current.rss_key}) %>
|
||||||
<%= f.link_to 'CSV', :url => params %>
|
<%= f.link_to 'CSV', :url => params %>
|
||||||
<% end %>
|
<% end %>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|
||||||
<% html_title l(:label_spent_time), l(:label_details) %>
|
<% html_title l(:label_spent_time), l(:label_details) %>
|
||||||
|
|
||||||
<% content_for :header_tags do %>
|
<% 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)) %>
|
<%= auto_discovery_link_tag(:atom, {:issue_id => @issue, :format => 'atom', :key => User.current.rss_key}, :title => l(:label_spent_time)) %>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|
|
@ -1,21 +1,21 @@
|
||||||
<h2><%= l(:label_spent_time) %></h2>
|
<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| %>
|
<% 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' %>
|
<%= error_messages_for 'time_entry' %>
|
||||||
<%= back_url_hidden_field_tag %>
|
<%= back_url_hidden_field_tag %>
|
||||||
|
|
||||||
<div class="box">
|
<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 :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 :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 :hours, :size => 6, :required => true %></p>
|
||||||
<p><%= f.text_field :comments, :size => 100 %></p>
|
<p><%= f.text_field :comments, :size => 100 %></p>
|
||||||
<p><%= f.select :activity_id, activity_collection_for_select_options, :required => true %></p>
|
<p><%= f.select :activity_id, activity_collection_for_select_options, :required => true %></p>
|
||||||
<% @time_entry.custom_field_values.each do |value| %>
|
<% @time_entry.custom_field_values.each do |value| %>
|
||||||
<p><%= custom_field_tag_with_label :time_entry, value %></p>
|
<p><%= custom_field_tag_with_label :time_entry, value %></p>
|
||||||
<% end %>
|
<% end %>
|
||||||
<%= call_hook(:view_timelog_edit_form_bottom, { :time_entry => @time_entry, :form => f }) %>
|
<%= call_hook(:view_timelog_edit_form_bottom, { :time_entry => @time_entry, :form => f }) %>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<%= submit_tag l(:button_save) %>
|
<%= submit_tag l(:button_save) %>
|
||||||
|
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|
|
@ -821,20 +821,20 @@ bs:
|
||||||
label_descending: Opadajuće
|
label_descending: Opadajuće
|
||||||
label_greater_or_equal: ">="
|
label_greater_or_equal: ">="
|
||||||
label_less_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?
|
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_reassign_children: Reassign child pages to this parent page
|
||||||
text_wiki_page_nullify_children: Keep child pages as root pages
|
text_wiki_page_nullify_children: Keep child pages as root pages
|
||||||
text_wiki_page_destroy_children: Delete child pages and all their descendants
|
text_wiki_page_destroy_children: Delete child pages and all their descendants
|
||||||
setting_password_min_length: Minimum password length
|
setting_password_min_length: Minimum password length
|
||||||
field_group_by: Group results by
|
field_group_by: Group results by
|
||||||
mail_subject_wiki_content_updated: "'{{page}}' wiki page has been updated"
|
mail_subject_wiki_content_updated: "'{{page}}' wiki page has been updated"
|
||||||
label_wiki_content_added: Wiki page added
|
label_wiki_content_added: Wiki page added
|
||||||
mail_subject_wiki_content_added: "'{{page}}' wiki page has been 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}}.
|
mail_body_wiki_content_added: The '{{page}}' wiki page has been added by {{author}}.
|
||||||
label_wiki_content_updated: Wiki page updated
|
label_wiki_content_updated: Wiki page updated
|
||||||
mail_body_wiki_content_updated: The '{{page}}' wiki page has been updated by {{author}}.
|
mail_body_wiki_content_updated: The '{{page}}' wiki page has been updated by {{author}}.
|
||||||
permission_add_project: Create project
|
permission_add_project: Create project
|
||||||
setting_new_project_user_role_id: Role given to a non-admin user who creates a 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_view_all_revisions: View all revisions
|
||||||
label_tag: Tag
|
label_tag: Tag
|
||||||
label_branch: Branch
|
label_branch: Branch
|
||||||
|
@ -843,7 +843,7 @@ bs:
|
||||||
text_journal_changed: "{{label}} changed from {{old}} to {{new}}"
|
text_journal_changed: "{{label}} changed from {{old}} to {{new}}"
|
||||||
text_journal_set_to: "{{label}} set to {{value}}"
|
text_journal_set_to: "{{label}} set to {{value}}"
|
||||||
text_journal_deleted: "{{label}} deleted"
|
text_journal_deleted: "{{label}} deleted"
|
||||||
label_group_plural: Groups
|
label_group_plural: Groups
|
||||||
label_group: Group
|
label_group: Group
|
||||||
label_group_new: New group
|
label_group_new: New group
|
||||||
label_time_entry_plural: Spent time
|
label_time_entry_plural: Spent time
|
||||||
|
|
|
@ -825,7 +825,7 @@ el:
|
||||||
text_journal_changed: "{{label}} changed from {{old}} to {{new}}"
|
text_journal_changed: "{{label}} changed from {{old}} to {{new}}"
|
||||||
text_journal_set_to: "{{label}} set to {{value}}"
|
text_journal_set_to: "{{label}} set to {{value}}"
|
||||||
text_journal_deleted: "{{label}} deleted"
|
text_journal_deleted: "{{label}} deleted"
|
||||||
label_group_plural: Groups
|
label_group_plural: Groups
|
||||||
label_group: Group
|
label_group: Group
|
||||||
label_group_new: New group
|
label_group_new: New group
|
||||||
label_time_entry_plural: Spent time
|
label_time_entry_plural: Spent time
|
||||||
|
|
|
@ -1,124 +1,124 @@
|
||||||
---
|
---
|
||||||
attachments_001:
|
attachments_001:
|
||||||
created_on: 2006-07-19 21:07:27 +02:00
|
created_on: 2006-07-19 21:07:27 +02:00
|
||||||
downloads: 0
|
downloads: 0
|
||||||
content_type: text/plain
|
content_type: text/plain
|
||||||
disk_filename: 060719210727_error281.txt
|
disk_filename: 060719210727_error281.txt
|
||||||
container_id: 3
|
container_id: 3
|
||||||
digest: b91e08d0cf966d5c6ff411bd8c4cc3a2
|
digest: b91e08d0cf966d5c6ff411bd8c4cc3a2
|
||||||
id: 1
|
id: 1
|
||||||
container_type: Issue
|
container_type: Issue
|
||||||
filesize: 28
|
filesize: 28
|
||||||
filename: error281.txt
|
filename: error281.txt
|
||||||
author_id: 2
|
author_id: 2
|
||||||
attachments_002:
|
attachments_002:
|
||||||
created_on: 2006-07-19 21:07:27 +02:00
|
created_on: 2006-07-19 21:07:27 +02:00
|
||||||
downloads: 0
|
downloads: 0
|
||||||
content_type: text/plain
|
content_type: text/plain
|
||||||
disk_filename: 060719210727_document.txt
|
disk_filename: 060719210727_document.txt
|
||||||
container_id: 1
|
container_id: 1
|
||||||
digest: b91e08d0cf966d5c6ff411bd8c4cc3a2
|
digest: b91e08d0cf966d5c6ff411bd8c4cc3a2
|
||||||
id: 2
|
id: 2
|
||||||
container_type: Document
|
container_type: Document
|
||||||
filesize: 28
|
filesize: 28
|
||||||
filename: document.txt
|
filename: document.txt
|
||||||
author_id: 2
|
author_id: 2
|
||||||
attachments_003:
|
attachments_003:
|
||||||
created_on: 2006-07-19 21:07:27 +02:00
|
created_on: 2006-07-19 21:07:27 +02:00
|
||||||
downloads: 0
|
downloads: 0
|
||||||
content_type: image/gif
|
content_type: image/gif
|
||||||
disk_filename: 060719210727_logo.gif
|
disk_filename: 060719210727_logo.gif
|
||||||
container_id: 4
|
container_id: 4
|
||||||
digest: b91e08d0cf966d5c6ff411bd8c4cc3a2
|
digest: b91e08d0cf966d5c6ff411bd8c4cc3a2
|
||||||
id: 3
|
id: 3
|
||||||
container_type: WikiPage
|
container_type: WikiPage
|
||||||
filesize: 280
|
filesize: 280
|
||||||
filename: logo.gif
|
filename: logo.gif
|
||||||
description: This is a logo
|
description: This is a logo
|
||||||
author_id: 2
|
author_id: 2
|
||||||
attachments_004:
|
attachments_004:
|
||||||
created_on: 2006-07-19 21:07:27 +02:00
|
created_on: 2006-07-19 21:07:27 +02:00
|
||||||
container_type: Issue
|
container_type: Issue
|
||||||
container_id: 3
|
container_id: 3
|
||||||
downloads: 0
|
downloads: 0
|
||||||
disk_filename: 060719210727_source.rb
|
disk_filename: 060719210727_source.rb
|
||||||
digest: b91e08d0cf966d5c6ff411bd8c4cc3a2
|
digest: b91e08d0cf966d5c6ff411bd8c4cc3a2
|
||||||
id: 4
|
id: 4
|
||||||
filesize: 153
|
filesize: 153
|
||||||
filename: source.rb
|
filename: source.rb
|
||||||
author_id: 2
|
author_id: 2
|
||||||
description: This is a Ruby source file
|
description: This is a Ruby source file
|
||||||
content_type: application/x-ruby
|
content_type: application/x-ruby
|
||||||
attachments_005:
|
attachments_005:
|
||||||
created_on: 2006-07-19 21:07:27 +02:00
|
created_on: 2006-07-19 21:07:27 +02:00
|
||||||
container_type: Issue
|
container_type: Issue
|
||||||
container_id: 3
|
container_id: 3
|
||||||
downloads: 0
|
downloads: 0
|
||||||
disk_filename: 060719210727_changeset.diff
|
disk_filename: 060719210727_changeset.diff
|
||||||
digest: b91e08d0cf966d5c6ff411bd8c4cc3a2
|
digest: b91e08d0cf966d5c6ff411bd8c4cc3a2
|
||||||
id: 5
|
id: 5
|
||||||
filesize: 687
|
filesize: 687
|
||||||
filename: changeset.diff
|
filename: changeset.diff
|
||||||
author_id: 2
|
author_id: 2
|
||||||
content_type: text/x-diff
|
content_type: text/x-diff
|
||||||
attachments_006:
|
attachments_006:
|
||||||
created_on: 2006-07-19 21:07:27 +02:00
|
created_on: 2006-07-19 21:07:27 +02:00
|
||||||
container_type: Issue
|
container_type: Issue
|
||||||
container_id: 3
|
container_id: 3
|
||||||
downloads: 0
|
downloads: 0
|
||||||
disk_filename: 060719210727_archive.zip
|
disk_filename: 060719210727_archive.zip
|
||||||
digest: b91e08d0cf966d5c6ff411bd8c4cc3a2
|
digest: b91e08d0cf966d5c6ff411bd8c4cc3a2
|
||||||
id: 6
|
id: 6
|
||||||
filesize: 157
|
filesize: 157
|
||||||
filename: archive.zip
|
filename: archive.zip
|
||||||
author_id: 2
|
author_id: 2
|
||||||
content_type: application/octet-stream
|
content_type: application/octet-stream
|
||||||
attachments_007:
|
attachments_007:
|
||||||
created_on: 2006-07-19 21:07:27 +02:00
|
created_on: 2006-07-19 21:07:27 +02:00
|
||||||
container_type: Issue
|
container_type: Issue
|
||||||
container_id: 4
|
container_id: 4
|
||||||
downloads: 0
|
downloads: 0
|
||||||
disk_filename: 060719210727_archive.zip
|
disk_filename: 060719210727_archive.zip
|
||||||
digest: b91e08d0cf966d5c6ff411bd8c4cc3a2
|
digest: b91e08d0cf966d5c6ff411bd8c4cc3a2
|
||||||
id: 7
|
id: 7
|
||||||
filesize: 157
|
filesize: 157
|
||||||
filename: archive.zip
|
filename: archive.zip
|
||||||
author_id: 1
|
author_id: 1
|
||||||
content_type: application/octet-stream
|
content_type: application/octet-stream
|
||||||
attachments_008:
|
attachments_008:
|
||||||
created_on: 2006-07-19 21:07:27 +02:00
|
created_on: 2006-07-19 21:07:27 +02:00
|
||||||
container_type: Project
|
container_type: Project
|
||||||
container_id: 1
|
container_id: 1
|
||||||
downloads: 0
|
downloads: 0
|
||||||
disk_filename: 060719210727_project_file.zip
|
disk_filename: 060719210727_project_file.zip
|
||||||
digest: b91e08d0cf966d5c6ff411bd8c4cc3a2
|
digest: b91e08d0cf966d5c6ff411bd8c4cc3a2
|
||||||
id: 8
|
id: 8
|
||||||
filesize: 320
|
filesize: 320
|
||||||
filename: project_file.zip
|
filename: project_file.zip
|
||||||
author_id: 2
|
author_id: 2
|
||||||
content_type: application/octet-stream
|
content_type: application/octet-stream
|
||||||
attachments_009:
|
attachments_009:
|
||||||
created_on: 2006-07-19 21:07:27 +02:00
|
created_on: 2006-07-19 21:07:27 +02:00
|
||||||
container_type: Version
|
container_type: Version
|
||||||
container_id: 1
|
container_id: 1
|
||||||
downloads: 0
|
downloads: 0
|
||||||
disk_filename: 060719210727_version_file.zip
|
disk_filename: 060719210727_version_file.zip
|
||||||
digest: b91e08d0cf966d5c6ff411bd8c4cc3a2
|
digest: b91e08d0cf966d5c6ff411bd8c4cc3a2
|
||||||
id: 9
|
id: 9
|
||||||
filesize: 452
|
filesize: 452
|
||||||
filename: version_file.zip
|
filename: version_file.zip
|
||||||
author_id: 2
|
author_id: 2
|
||||||
content_type: application/octet-stream
|
content_type: application/octet-stream
|
||||||
attachments_010:
|
attachments_010:
|
||||||
created_on: 2006-07-19 21:07:27 +02:00
|
created_on: 2006-07-19 21:07:27 +02:00
|
||||||
container_type: Issue
|
container_type: Issue
|
||||||
container_id: 2
|
container_id: 2
|
||||||
downloads: 0
|
downloads: 0
|
||||||
disk_filename: 060719210727_picture.jpg
|
disk_filename: 060719210727_picture.jpg
|
||||||
digest: b91e08d0cf966d5c6ff411bd8c4cc3a2
|
digest: b91e08d0cf966d5c6ff411bd8c4cc3a2
|
||||||
id: 10
|
id: 10
|
||||||
filesize: 452
|
filesize: 452
|
||||||
filename: picture.jpg
|
filename: picture.jpg
|
||||||
author_id: 2
|
author_id: 2
|
||||||
content_type: image/jpeg
|
content_type: image/jpeg
|
||||||
|
|
|
@ -1,2 +1,2 @@
|
||||||
--- {}
|
--- {}
|
||||||
|
|
||||||
|
|
|
@ -1,19 +1,19 @@
|
||||||
---
|
---
|
||||||
boards_001:
|
boards_001:
|
||||||
name: Help
|
name: Help
|
||||||
project_id: 1
|
project_id: 1
|
||||||
topics_count: 2
|
topics_count: 2
|
||||||
id: 1
|
id: 1
|
||||||
description: Help board
|
description: Help board
|
||||||
position: 1
|
position: 1
|
||||||
last_message_id: 6
|
last_message_id: 6
|
||||||
messages_count: 6
|
messages_count: 6
|
||||||
boards_002:
|
boards_002:
|
||||||
name: Discussion
|
name: Discussion
|
||||||
project_id: 1
|
project_id: 1
|
||||||
topics_count: 0
|
topics_count: 0
|
||||||
id: 2
|
id: 2
|
||||||
description: Discussion board
|
description: Discussion board
|
||||||
position: 2
|
position: 2
|
||||||
last_message_id:
|
last_message_id:
|
||||||
messages_count: 0
|
messages_count: 0
|
||||||
|
|
|
@ -1,23 +1,23 @@
|
||||||
---
|
---
|
||||||
changes_001:
|
changes_001:
|
||||||
id: 1
|
id: 1
|
||||||
changeset_id: 100
|
changeset_id: 100
|
||||||
action: A
|
action: A
|
||||||
path: /test/some/path/in/the/repo
|
path: /test/some/path/in/the/repo
|
||||||
from_path:
|
from_path:
|
||||||
from_revision:
|
from_revision:
|
||||||
changes_002:
|
changes_002:
|
||||||
id: 2
|
id: 2
|
||||||
changeset_id: 100
|
changeset_id: 100
|
||||||
action: A
|
action: A
|
||||||
path: /test/some/path/elsewhere/in/the/repo
|
path: /test/some/path/elsewhere/in/the/repo
|
||||||
from_path:
|
from_path:
|
||||||
from_revision:
|
from_revision:
|
||||||
changes_003:
|
changes_003:
|
||||||
id: 3
|
id: 3
|
||||||
changeset_id: 101
|
changeset_id: 101
|
||||||
action: M
|
action: M
|
||||||
path: /test/some/path/in/the/repo
|
path: /test/some/path/in/the/repo
|
||||||
from_path:
|
from_path:
|
||||||
from_revision:
|
from_revision:
|
||||||
|
|
|
@ -1,84 +1,84 @@
|
||||||
---
|
---
|
||||||
changesets_001:
|
changesets_001:
|
||||||
commit_date: 2007-04-11
|
commit_date: 2007-04-11
|
||||||
committed_on: 2007-04-11 15:14:44 +02:00
|
committed_on: 2007-04-11 15:14:44 +02:00
|
||||||
revision: 1
|
revision: 1
|
||||||
id: 100
|
id: 100
|
||||||
comments: My very first commit
|
comments: My very first commit
|
||||||
repository_id: 10
|
repository_id: 10
|
||||||
committer: dlopper
|
committer: dlopper
|
||||||
user_id: 3
|
user_id: 3
|
||||||
changesets_002:
|
changesets_002:
|
||||||
commit_date: 2007-04-12
|
commit_date: 2007-04-12
|
||||||
committed_on: 2007-04-12 15:14:44 +02:00
|
committed_on: 2007-04-12 15:14:44 +02:00
|
||||||
revision: 2
|
revision: 2
|
||||||
id: 101
|
id: 101
|
||||||
comments: 'This commit fixes #1, #2 and references #1 & #3'
|
comments: 'This commit fixes #1, #2 and references #1 & #3'
|
||||||
repository_id: 10
|
repository_id: 10
|
||||||
committer: dlopper
|
committer: dlopper
|
||||||
user_id: 3
|
user_id: 3
|
||||||
changesets_003:
|
changesets_003:
|
||||||
commit_date: 2007-04-12
|
commit_date: 2007-04-12
|
||||||
committed_on: 2007-04-12 15:14:44 +02:00
|
committed_on: 2007-04-12 15:14:44 +02:00
|
||||||
revision: 3
|
revision: 3
|
||||||
id: 102
|
id: 102
|
||||||
comments: |-
|
comments: |-
|
||||||
A commit with wrong issue ids
|
A commit with wrong issue ids
|
||||||
IssueID 666 3
|
IssueID 666 3
|
||||||
repository_id: 10
|
repository_id: 10
|
||||||
committer: dlopper
|
committer: dlopper
|
||||||
user_id: 3
|
user_id: 3
|
||||||
changesets_004:
|
changesets_004:
|
||||||
commit_date: 2007-04-12
|
commit_date: 2007-04-12
|
||||||
committed_on: 2007-04-12 15:14:44 +02:00
|
committed_on: 2007-04-12 15:14:44 +02:00
|
||||||
revision: 4
|
revision: 4
|
||||||
id: 103
|
id: 103
|
||||||
comments: |-
|
comments: |-
|
||||||
A commit with an issue id of an other project
|
A commit with an issue id of an other project
|
||||||
IssueID 4 2
|
IssueID 4 2
|
||||||
repository_id: 10
|
repository_id: 10
|
||||||
committer: dlopper
|
committer: dlopper
|
||||||
user_id: 3
|
user_id: 3
|
||||||
changesets_005:
|
changesets_005:
|
||||||
commit_date: "2007-09-10"
|
commit_date: "2007-09-10"
|
||||||
comments: Modified one file in the folder.
|
comments: Modified one file in the folder.
|
||||||
committed_on: 2007-09-10 19:01:08
|
committed_on: 2007-09-10 19:01:08
|
||||||
revision: "5"
|
revision: "5"
|
||||||
id: 104
|
id: 104
|
||||||
scmid:
|
scmid:
|
||||||
user_id: 3
|
user_id: 3
|
||||||
repository_id: 10
|
repository_id: 10
|
||||||
committer: dlopper
|
committer: dlopper
|
||||||
changesets_006:
|
changesets_006:
|
||||||
commit_date: "2007-09-10"
|
commit_date: "2007-09-10"
|
||||||
comments: Moved helloworld.rb from / to /folder.
|
comments: Moved helloworld.rb from / to /folder.
|
||||||
committed_on: 2007-09-10 19:01:47
|
committed_on: 2007-09-10 19:01:47
|
||||||
revision: "6"
|
revision: "6"
|
||||||
id: 105
|
id: 105
|
||||||
scmid:
|
scmid:
|
||||||
user_id: 3
|
user_id: 3
|
||||||
repository_id: 10
|
repository_id: 10
|
||||||
committer: dlopper
|
committer: dlopper
|
||||||
changesets_007:
|
changesets_007:
|
||||||
commit_date: "2007-09-10"
|
commit_date: "2007-09-10"
|
||||||
comments: Removed one file.
|
comments: Removed one file.
|
||||||
committed_on: 2007-09-10 19:02:16
|
committed_on: 2007-09-10 19:02:16
|
||||||
revision: "7"
|
revision: "7"
|
||||||
id: 106
|
id: 106
|
||||||
scmid:
|
scmid:
|
||||||
user_id: 3
|
user_id: 3
|
||||||
repository_id: 10
|
repository_id: 10
|
||||||
committer: dlopper
|
committer: dlopper
|
||||||
changesets_008:
|
changesets_008:
|
||||||
commit_date: "2007-09-10"
|
commit_date: "2007-09-10"
|
||||||
comments: |-
|
comments: |-
|
||||||
This commits references an issue.
|
This commits references an issue.
|
||||||
Refs #2
|
Refs #2
|
||||||
committed_on: 2007-09-10 19:04:35
|
committed_on: 2007-09-10 19:04:35
|
||||||
revision: "8"
|
revision: "8"
|
||||||
id: 107
|
id: 107
|
||||||
scmid:
|
scmid:
|
||||||
user_id: 3
|
user_id: 3
|
||||||
repository_id: 10
|
repository_id: 10
|
||||||
committer: dlopper
|
committer: dlopper
|
||||||
|
|
|
@ -1,90 +1,90 @@
|
||||||
---
|
---
|
||||||
custom_fields_001:
|
custom_fields_001:
|
||||||
name: Database
|
name: Database
|
||||||
min_length: 0
|
min_length: 0
|
||||||
regexp: ""
|
regexp: ""
|
||||||
is_for_all: true
|
is_for_all: true
|
||||||
is_filter: true
|
is_filter: true
|
||||||
type: IssueCustomField
|
type: IssueCustomField
|
||||||
max_length: 0
|
max_length: 0
|
||||||
possible_values:
|
possible_values:
|
||||||
- MySQL
|
- MySQL
|
||||||
- PostgreSQL
|
- PostgreSQL
|
||||||
- Oracle
|
- Oracle
|
||||||
id: 1
|
id: 1
|
||||||
is_required: false
|
is_required: false
|
||||||
field_format: list
|
field_format: list
|
||||||
default_value: ""
|
default_value: ""
|
||||||
editable: true
|
editable: true
|
||||||
custom_fields_002:
|
custom_fields_002:
|
||||||
name: Searchable field
|
name: Searchable field
|
||||||
min_length: 1
|
min_length: 1
|
||||||
regexp: ""
|
regexp: ""
|
||||||
is_for_all: true
|
is_for_all: true
|
||||||
type: IssueCustomField
|
type: IssueCustomField
|
||||||
max_length: 100
|
max_length: 100
|
||||||
possible_values: ""
|
possible_values: ""
|
||||||
id: 2
|
id: 2
|
||||||
is_required: false
|
is_required: false
|
||||||
field_format: string
|
field_format: string
|
||||||
searchable: true
|
searchable: true
|
||||||
default_value: "Default string"
|
default_value: "Default string"
|
||||||
editable: true
|
editable: true
|
||||||
custom_fields_003:
|
custom_fields_003:
|
||||||
name: Development status
|
name: Development status
|
||||||
min_length: 0
|
min_length: 0
|
||||||
regexp: ""
|
regexp: ""
|
||||||
is_for_all: false
|
is_for_all: false
|
||||||
is_filter: true
|
is_filter: true
|
||||||
type: ProjectCustomField
|
type: ProjectCustomField
|
||||||
max_length: 0
|
max_length: 0
|
||||||
possible_values:
|
possible_values:
|
||||||
- Stable
|
- Stable
|
||||||
- Beta
|
- Beta
|
||||||
- Alpha
|
- Alpha
|
||||||
- Planning
|
- Planning
|
||||||
id: 3
|
id: 3
|
||||||
is_required: true
|
is_required: true
|
||||||
field_format: list
|
field_format: list
|
||||||
default_value: ""
|
default_value: ""
|
||||||
editable: true
|
editable: true
|
||||||
custom_fields_004:
|
custom_fields_004:
|
||||||
name: Phone number
|
name: Phone number
|
||||||
min_length: 0
|
min_length: 0
|
||||||
regexp: ""
|
regexp: ""
|
||||||
is_for_all: false
|
is_for_all: false
|
||||||
type: UserCustomField
|
type: UserCustomField
|
||||||
max_length: 0
|
max_length: 0
|
||||||
possible_values: ""
|
possible_values: ""
|
||||||
id: 4
|
id: 4
|
||||||
is_required: false
|
is_required: false
|
||||||
field_format: string
|
field_format: string
|
||||||
default_value: ""
|
default_value: ""
|
||||||
editable: true
|
editable: true
|
||||||
custom_fields_005:
|
custom_fields_005:
|
||||||
name: Money
|
name: Money
|
||||||
min_length: 0
|
min_length: 0
|
||||||
regexp: ""
|
regexp: ""
|
||||||
is_for_all: false
|
is_for_all: false
|
||||||
type: UserCustomField
|
type: UserCustomField
|
||||||
max_length: 0
|
max_length: 0
|
||||||
possible_values: ""
|
possible_values: ""
|
||||||
id: 5
|
id: 5
|
||||||
is_required: false
|
is_required: false
|
||||||
field_format: float
|
field_format: float
|
||||||
default_value: ""
|
default_value: ""
|
||||||
editable: true
|
editable: true
|
||||||
custom_fields_006:
|
custom_fields_006:
|
||||||
name: Float field
|
name: Float field
|
||||||
min_length: 0
|
min_length: 0
|
||||||
regexp: ""
|
regexp: ""
|
||||||
is_for_all: true
|
is_for_all: true
|
||||||
type: IssueCustomField
|
type: IssueCustomField
|
||||||
max_length: 0
|
max_length: 0
|
||||||
possible_values: ""
|
possible_values: ""
|
||||||
id: 6
|
id: 6
|
||||||
is_required: false
|
is_required: false
|
||||||
field_format: float
|
field_format: float
|
||||||
default_value: ""
|
default_value: ""
|
||||||
editable: true
|
editable: true
|
||||||
|
|
|
@ -1,2 +1,2 @@
|
||||||
--- {}
|
--- {}
|
||||||
|
|
||||||
|
|
|
@ -1,19 +1,19 @@
|
||||||
---
|
---
|
||||||
custom_fields_trackers_001:
|
custom_fields_trackers_001:
|
||||||
custom_field_id: 1
|
custom_field_id: 1
|
||||||
tracker_id: 1
|
tracker_id: 1
|
||||||
custom_fields_trackers_002:
|
custom_fields_trackers_002:
|
||||||
custom_field_id: 2
|
custom_field_id: 2
|
||||||
tracker_id: 1
|
tracker_id: 1
|
||||||
custom_fields_trackers_003:
|
custom_fields_trackers_003:
|
||||||
custom_field_id: 2
|
custom_field_id: 2
|
||||||
tracker_id: 3
|
tracker_id: 3
|
||||||
custom_fields_trackers_004:
|
custom_fields_trackers_004:
|
||||||
custom_field_id: 6
|
custom_field_id: 6
|
||||||
tracker_id: 1
|
tracker_id: 1
|
||||||
custom_fields_trackers_005:
|
custom_fields_trackers_005:
|
||||||
custom_field_id: 6
|
custom_field_id: 6
|
||||||
tracker_id: 2
|
tracker_id: 2
|
||||||
custom_fields_trackers_006:
|
custom_fields_trackers_006:
|
||||||
custom_field_id: 6
|
custom_field_id: 6
|
||||||
tracker_id: 3
|
tracker_id: 3
|
||||||
|
|
|
@ -1,86 +1,86 @@
|
||||||
---
|
---
|
||||||
custom_values_006:
|
custom_values_006:
|
||||||
customized_type: Issue
|
customized_type: Issue
|
||||||
custom_field_id: 2
|
custom_field_id: 2
|
||||||
customized_id: 3
|
customized_id: 3
|
||||||
id: 6
|
id: 6
|
||||||
value: "125"
|
value: "125"
|
||||||
custom_values_007:
|
custom_values_007:
|
||||||
customized_type: Project
|
customized_type: Project
|
||||||
custom_field_id: 3
|
custom_field_id: 3
|
||||||
customized_id: 1
|
customized_id: 1
|
||||||
id: 7
|
id: 7
|
||||||
value: Stable
|
value: Stable
|
||||||
custom_values_001:
|
custom_values_001:
|
||||||
customized_type: User
|
customized_type: User
|
||||||
custom_field_id: 4
|
custom_field_id: 4
|
||||||
customized_id: 3
|
customized_id: 3
|
||||||
id: 1
|
id: 1
|
||||||
value: ""
|
value: ""
|
||||||
custom_values_002:
|
custom_values_002:
|
||||||
customized_type: User
|
customized_type: User
|
||||||
custom_field_id: 4
|
custom_field_id: 4
|
||||||
customized_id: 4
|
customized_id: 4
|
||||||
id: 2
|
id: 2
|
||||||
value: 01 23 45 67 89
|
value: 01 23 45 67 89
|
||||||
custom_values_003:
|
custom_values_003:
|
||||||
customized_type: User
|
customized_type: User
|
||||||
custom_field_id: 4
|
custom_field_id: 4
|
||||||
customized_id: 2
|
customized_id: 2
|
||||||
id: 3
|
id: 3
|
||||||
value: ""
|
value: ""
|
||||||
custom_values_004:
|
custom_values_004:
|
||||||
customized_type: Issue
|
customized_type: Issue
|
||||||
custom_field_id: 2
|
custom_field_id: 2
|
||||||
customized_id: 1
|
customized_id: 1
|
||||||
id: 4
|
id: 4
|
||||||
value: "125"
|
value: "125"
|
||||||
custom_values_005:
|
custom_values_005:
|
||||||
customized_type: Issue
|
customized_type: Issue
|
||||||
custom_field_id: 2
|
custom_field_id: 2
|
||||||
customized_id: 2
|
customized_id: 2
|
||||||
id: 5
|
id: 5
|
||||||
value: ""
|
value: ""
|
||||||
custom_values_008:
|
custom_values_008:
|
||||||
customized_type: Issue
|
customized_type: Issue
|
||||||
custom_field_id: 1
|
custom_field_id: 1
|
||||||
customized_id: 3
|
customized_id: 3
|
||||||
id: 8
|
id: 8
|
||||||
value: "MySQL"
|
value: "MySQL"
|
||||||
custom_values_009:
|
custom_values_009:
|
||||||
customized_type: Issue
|
customized_type: Issue
|
||||||
custom_field_id: 2
|
custom_field_id: 2
|
||||||
customized_id: 3
|
customized_id: 3
|
||||||
id: 9
|
id: 9
|
||||||
value: "this is a stringforcustomfield search"
|
value: "this is a stringforcustomfield search"
|
||||||
custom_values_010:
|
custom_values_010:
|
||||||
customized_type: Issue
|
customized_type: Issue
|
||||||
custom_field_id: 6
|
custom_field_id: 6
|
||||||
customized_id: 1
|
customized_id: 1
|
||||||
id: 10
|
id: 10
|
||||||
value: "2.1"
|
value: "2.1"
|
||||||
custom_values_011:
|
custom_values_011:
|
||||||
customized_type: Issue
|
customized_type: Issue
|
||||||
custom_field_id: 6
|
custom_field_id: 6
|
||||||
customized_id: 2
|
customized_id: 2
|
||||||
id: 11
|
id: 11
|
||||||
value: "2.05"
|
value: "2.05"
|
||||||
custom_values_012:
|
custom_values_012:
|
||||||
customized_type: Issue
|
customized_type: Issue
|
||||||
custom_field_id: 6
|
custom_field_id: 6
|
||||||
customized_id: 3
|
customized_id: 3
|
||||||
id: 12
|
id: 12
|
||||||
value: "11.65"
|
value: "11.65"
|
||||||
custom_values_013:
|
custom_values_013:
|
||||||
customized_type: Issue
|
customized_type: Issue
|
||||||
custom_field_id: 6
|
custom_field_id: 6
|
||||||
customized_id: 7
|
customized_id: 7
|
||||||
id: 13
|
id: 13
|
||||||
value: ""
|
value: ""
|
||||||
custom_values_014:
|
custom_values_014:
|
||||||
customized_type: Issue
|
customized_type: Issue
|
||||||
custom_field_id: 6
|
custom_field_id: 6
|
||||||
customized_id: 5
|
customized_id: 5
|
||||||
id: 14
|
id: 14
|
||||||
value: "-7.6"
|
value: "-7.6"
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
documents_001:
|
documents_001:
|
||||||
created_on: 2007-01-27 15:08:27 +01:00
|
created_on: 2007-01-27 15:08:27 +01:00
|
||||||
project_id: 1
|
project_id: 1
|
||||||
title: "Test document"
|
title: "Test document"
|
||||||
id: 1
|
id: 1
|
||||||
description: "Document description"
|
description: "Document description"
|
||||||
category_id: 1
|
category_id: 1
|
|
@ -1,69 +1,69 @@
|
||||||
---
|
---
|
||||||
enumerations_001:
|
enumerations_001:
|
||||||
name: Uncategorized
|
name: Uncategorized
|
||||||
id: 1
|
id: 1
|
||||||
opt: DCAT
|
opt: DCAT
|
||||||
type: DocumentCategory
|
type: DocumentCategory
|
||||||
enumerations_002:
|
enumerations_002:
|
||||||
name: User documentation
|
name: User documentation
|
||||||
id: 2
|
id: 2
|
||||||
opt: DCAT
|
opt: DCAT
|
||||||
type: DocumentCategory
|
type: DocumentCategory
|
||||||
enumerations_003:
|
enumerations_003:
|
||||||
name: Technical documentation
|
name: Technical documentation
|
||||||
id: 3
|
id: 3
|
||||||
opt: DCAT
|
opt: DCAT
|
||||||
type: DocumentCategory
|
type: DocumentCategory
|
||||||
enumerations_004:
|
enumerations_004:
|
||||||
name: Low
|
name: Low
|
||||||
id: 4
|
id: 4
|
||||||
opt: IPRI
|
opt: IPRI
|
||||||
type: IssuePriority
|
type: IssuePriority
|
||||||
enumerations_005:
|
enumerations_005:
|
||||||
name: Normal
|
name: Normal
|
||||||
id: 5
|
id: 5
|
||||||
opt: IPRI
|
opt: IPRI
|
||||||
type: IssuePriority
|
type: IssuePriority
|
||||||
is_default: true
|
is_default: true
|
||||||
enumerations_006:
|
enumerations_006:
|
||||||
name: High
|
name: High
|
||||||
id: 6
|
id: 6
|
||||||
opt: IPRI
|
opt: IPRI
|
||||||
type: IssuePriority
|
type: IssuePriority
|
||||||
enumerations_007:
|
enumerations_007:
|
||||||
name: Urgent
|
name: Urgent
|
||||||
id: 7
|
id: 7
|
||||||
opt: IPRI
|
opt: IPRI
|
||||||
type: IssuePriority
|
type: IssuePriority
|
||||||
enumerations_008:
|
enumerations_008:
|
||||||
name: Immediate
|
name: Immediate
|
||||||
id: 8
|
id: 8
|
||||||
opt: IPRI
|
opt: IPRI
|
||||||
type: IssuePriority
|
type: IssuePriority
|
||||||
enumerations_009:
|
enumerations_009:
|
||||||
name: Design
|
name: Design
|
||||||
id: 9
|
id: 9
|
||||||
opt: ACTI
|
opt: ACTI
|
||||||
type: TimeEntryActivity
|
type: TimeEntryActivity
|
||||||
enumerations_010:
|
enumerations_010:
|
||||||
name: Development
|
name: Development
|
||||||
id: 10
|
id: 10
|
||||||
opt: ACTI
|
opt: ACTI
|
||||||
type: TimeEntryActivity
|
type: TimeEntryActivity
|
||||||
is_default: true
|
is_default: true
|
||||||
enumerations_011:
|
enumerations_011:
|
||||||
name: QA
|
name: QA
|
||||||
id: 11
|
id: 11
|
||||||
opt: ACTI
|
opt: ACTI
|
||||||
type: TimeEntryActivity
|
type: TimeEntryActivity
|
||||||
enumerations_012:
|
enumerations_012:
|
||||||
name: Default Enumeration
|
name: Default Enumeration
|
||||||
id: 12
|
id: 12
|
||||||
opt: ''
|
opt: ''
|
||||||
type: Enumeration
|
type: Enumeration
|
||||||
is_default: true
|
is_default: true
|
||||||
enumerations_013:
|
enumerations_013:
|
||||||
name: Another Enumeration
|
name: Another Enumeration
|
||||||
id: 13
|
id: 13
|
||||||
opt: ''
|
opt: ''
|
||||||
type: Enumeration
|
type: Enumeration
|
||||||
|
|
|
@ -1,22 +1,22 @@
|
||||||
---
|
---
|
||||||
issue_categories_001:
|
issue_categories_001:
|
||||||
name: Printing
|
name: Printing
|
||||||
project_id: 1
|
project_id: 1
|
||||||
assigned_to_id: 2
|
assigned_to_id: 2
|
||||||
id: 1
|
id: 1
|
||||||
issue_categories_002:
|
issue_categories_002:
|
||||||
name: Recipes
|
name: Recipes
|
||||||
project_id: 1
|
project_id: 1
|
||||||
assigned_to_id:
|
assigned_to_id:
|
||||||
id: 2
|
id: 2
|
||||||
issue_categories_003:
|
issue_categories_003:
|
||||||
name: Stock management
|
name: Stock management
|
||||||
project_id: 2
|
project_id: 2
|
||||||
assigned_to_id:
|
assigned_to_id:
|
||||||
id: 3
|
id: 3
|
||||||
issue_categories_004:
|
issue_categories_004:
|
||||||
name: Printing
|
name: Printing
|
||||||
project_id: 2
|
project_id: 2
|
||||||
assigned_to_id:
|
assigned_to_id:
|
||||||
id: 4
|
id: 4
|
||||||
|
|
|
@ -1,31 +1,31 @@
|
||||||
---
|
---
|
||||||
issue_statuses_006:
|
issue_statuses_006:
|
||||||
name: Rejected
|
name: Rejected
|
||||||
is_default: false
|
is_default: false
|
||||||
is_closed: true
|
is_closed: true
|
||||||
id: 6
|
id: 6
|
||||||
issue_statuses_001:
|
issue_statuses_001:
|
||||||
name: New
|
name: New
|
||||||
is_default: true
|
is_default: true
|
||||||
is_closed: false
|
is_closed: false
|
||||||
id: 1
|
id: 1
|
||||||
issue_statuses_002:
|
issue_statuses_002:
|
||||||
name: Assigned
|
name: Assigned
|
||||||
is_default: false
|
is_default: false
|
||||||
is_closed: false
|
is_closed: false
|
||||||
id: 2
|
id: 2
|
||||||
issue_statuses_003:
|
issue_statuses_003:
|
||||||
name: Resolved
|
name: Resolved
|
||||||
is_default: false
|
is_default: false
|
||||||
is_closed: false
|
is_closed: false
|
||||||
id: 3
|
id: 3
|
||||||
issue_statuses_004:
|
issue_statuses_004:
|
||||||
name: Feedback
|
name: Feedback
|
||||||
is_default: false
|
is_default: false
|
||||||
is_closed: false
|
is_closed: false
|
||||||
id: 4
|
id: 4
|
||||||
issue_statuses_005:
|
issue_statuses_005:
|
||||||
name: Closed
|
name: Closed
|
||||||
is_default: false
|
is_default: false
|
||||||
is_closed: true
|
is_closed: true
|
||||||
id: 5
|
id: 5
|
||||||
|
|
|
@ -1,159 +1,159 @@
|
||||||
---
|
---
|
||||||
issues_001:
|
issues_001:
|
||||||
created_on: <%= 3.days.ago.to_date.to_s(:db) %>
|
created_on: <%= 3.days.ago.to_date.to_s(:db) %>
|
||||||
project_id: 1
|
project_id: 1
|
||||||
updated_on: <%= 1.day.ago.to_date.to_s(:db) %>
|
updated_on: <%= 1.day.ago.to_date.to_s(:db) %>
|
||||||
priority_id: 4
|
priority_id: 4
|
||||||
subject: Can't print recipes
|
subject: Can't print recipes
|
||||||
id: 1
|
id: 1
|
||||||
fixed_version_id:
|
fixed_version_id:
|
||||||
category_id: 1
|
category_id: 1
|
||||||
description: Unable to print recipes
|
description: Unable to print recipes
|
||||||
tracker_id: 1
|
tracker_id: 1
|
||||||
assigned_to_id:
|
assigned_to_id:
|
||||||
author_id: 2
|
author_id: 2
|
||||||
status_id: 1
|
status_id: 1
|
||||||
start_date: <%= 1.day.ago.to_date.to_s(:db) %>
|
start_date: <%= 1.day.ago.to_date.to_s(:db) %>
|
||||||
due_date: <%= 10.day.from_now.to_date.to_s(:db) %>
|
due_date: <%= 10.day.from_now.to_date.to_s(:db) %>
|
||||||
issues_002:
|
issues_002:
|
||||||
created_on: 2006-07-19 21:04:21 +02:00
|
created_on: 2006-07-19 21:04:21 +02:00
|
||||||
project_id: 1
|
project_id: 1
|
||||||
updated_on: 2006-07-19 21:09:50 +02:00
|
updated_on: 2006-07-19 21:09:50 +02:00
|
||||||
priority_id: 5
|
priority_id: 5
|
||||||
subject: Add ingredients categories
|
subject: Add ingredients categories
|
||||||
id: 2
|
id: 2
|
||||||
fixed_version_id: 2
|
fixed_version_id: 2
|
||||||
category_id:
|
category_id:
|
||||||
description: Ingredients of the recipe should be classified by categories
|
description: Ingredients of the recipe should be classified by categories
|
||||||
tracker_id: 2
|
tracker_id: 2
|
||||||
assigned_to_id: 3
|
assigned_to_id: 3
|
||||||
author_id: 2
|
author_id: 2
|
||||||
status_id: 2
|
status_id: 2
|
||||||
start_date: <%= 2.day.ago.to_date.to_s(:db) %>
|
start_date: <%= 2.day.ago.to_date.to_s(:db) %>
|
||||||
due_date:
|
due_date:
|
||||||
issues_003:
|
issues_003:
|
||||||
created_on: 2006-07-19 21:07:27 +02:00
|
created_on: 2006-07-19 21:07:27 +02:00
|
||||||
project_id: 1
|
project_id: 1
|
||||||
updated_on: 2006-07-19 21:07:27 +02:00
|
updated_on: 2006-07-19 21:07:27 +02:00
|
||||||
priority_id: 4
|
priority_id: 4
|
||||||
subject: Error 281 when updating a recipe
|
subject: Error 281 when updating a recipe
|
||||||
id: 3
|
id: 3
|
||||||
fixed_version_id:
|
fixed_version_id:
|
||||||
category_id:
|
category_id:
|
||||||
description: Error 281 is encountered when saving a recipe
|
description: Error 281 is encountered when saving a recipe
|
||||||
tracker_id: 1
|
tracker_id: 1
|
||||||
assigned_to_id: 3
|
assigned_to_id: 3
|
||||||
author_id: 2
|
author_id: 2
|
||||||
status_id: 1
|
status_id: 1
|
||||||
start_date: <%= 1.day.from_now.to_date.to_s(:db) %>
|
start_date: <%= 1.day.from_now.to_date.to_s(:db) %>
|
||||||
due_date: <%= 40.day.ago.to_date.to_s(:db) %>
|
due_date: <%= 40.day.ago.to_date.to_s(:db) %>
|
||||||
issues_004:
|
issues_004:
|
||||||
created_on: <%= 5.days.ago.to_date.to_s(:db) %>
|
created_on: <%= 5.days.ago.to_date.to_s(:db) %>
|
||||||
project_id: 2
|
project_id: 2
|
||||||
updated_on: <%= 2.days.ago.to_date.to_s(:db) %>
|
updated_on: <%= 2.days.ago.to_date.to_s(:db) %>
|
||||||
priority_id: 4
|
priority_id: 4
|
||||||
subject: Issue on project 2
|
subject: Issue on project 2
|
||||||
id: 4
|
id: 4
|
||||||
fixed_version_id:
|
fixed_version_id:
|
||||||
category_id:
|
category_id:
|
||||||
description: Issue on project 2
|
description: Issue on project 2
|
||||||
tracker_id: 1
|
tracker_id: 1
|
||||||
assigned_to_id: 2
|
assigned_to_id: 2
|
||||||
author_id: 2
|
author_id: 2
|
||||||
status_id: 1
|
status_id: 1
|
||||||
issues_005:
|
issues_005:
|
||||||
created_on: <%= 5.days.ago.to_date.to_s(:db) %>
|
created_on: <%= 5.days.ago.to_date.to_s(:db) %>
|
||||||
project_id: 3
|
project_id: 3
|
||||||
updated_on: <%= 2.days.ago.to_date.to_s(:db) %>
|
updated_on: <%= 2.days.ago.to_date.to_s(:db) %>
|
||||||
priority_id: 4
|
priority_id: 4
|
||||||
subject: Subproject issue
|
subject: Subproject issue
|
||||||
id: 5
|
id: 5
|
||||||
fixed_version_id:
|
fixed_version_id:
|
||||||
category_id:
|
category_id:
|
||||||
description: This is an issue on a cookbook subproject
|
description: This is an issue on a cookbook subproject
|
||||||
tracker_id: 1
|
tracker_id: 1
|
||||||
assigned_to_id:
|
assigned_to_id:
|
||||||
author_id: 2
|
author_id: 2
|
||||||
status_id: 1
|
status_id: 1
|
||||||
issues_006:
|
issues_006:
|
||||||
created_on: <%= 1.minute.ago.to_date.to_s(:db) %>
|
created_on: <%= 1.minute.ago.to_date.to_s(:db) %>
|
||||||
project_id: 5
|
project_id: 5
|
||||||
updated_on: <%= 1.minute.ago.to_date.to_s(:db) %>
|
updated_on: <%= 1.minute.ago.to_date.to_s(:db) %>
|
||||||
priority_id: 4
|
priority_id: 4
|
||||||
subject: Issue of a private subproject
|
subject: Issue of a private subproject
|
||||||
id: 6
|
id: 6
|
||||||
fixed_version_id:
|
fixed_version_id:
|
||||||
category_id:
|
category_id:
|
||||||
description: This is an issue of a private subproject of cookbook
|
description: This is an issue of a private subproject of cookbook
|
||||||
tracker_id: 1
|
tracker_id: 1
|
||||||
assigned_to_id:
|
assigned_to_id:
|
||||||
author_id: 2
|
author_id: 2
|
||||||
status_id: 1
|
status_id: 1
|
||||||
start_date: <%= Date.today.to_s(:db) %>
|
start_date: <%= Date.today.to_s(:db) %>
|
||||||
due_date: <%= 1.days.from_now.to_date.to_s(:db) %>
|
due_date: <%= 1.days.from_now.to_date.to_s(:db) %>
|
||||||
issues_007:
|
issues_007:
|
||||||
created_on: <%= 10.days.ago.to_date.to_s(:db) %>
|
created_on: <%= 10.days.ago.to_date.to_s(:db) %>
|
||||||
project_id: 1
|
project_id: 1
|
||||||
updated_on: <%= 10.days.ago.to_date.to_s(:db) %>
|
updated_on: <%= 10.days.ago.to_date.to_s(:db) %>
|
||||||
priority_id: 5
|
priority_id: 5
|
||||||
subject: Issue due today
|
subject: Issue due today
|
||||||
id: 7
|
id: 7
|
||||||
fixed_version_id:
|
fixed_version_id:
|
||||||
category_id:
|
category_id:
|
||||||
description: This is an issue that is due today
|
description: This is an issue that is due today
|
||||||
tracker_id: 1
|
tracker_id: 1
|
||||||
assigned_to_id:
|
assigned_to_id:
|
||||||
author_id: 2
|
author_id: 2
|
||||||
status_id: 1
|
status_id: 1
|
||||||
start_date: <%= 10.days.ago.to_s(:db) %>
|
start_date: <%= 10.days.ago.to_s(:db) %>
|
||||||
due_date: <%= Date.today.to_s(:db) %>
|
due_date: <%= Date.today.to_s(:db) %>
|
||||||
lock_version: 0
|
lock_version: 0
|
||||||
issues_008:
|
issues_008:
|
||||||
created_on: <%= 10.days.ago.to_date.to_s(:db) %>
|
created_on: <%= 10.days.ago.to_date.to_s(:db) %>
|
||||||
project_id: 1
|
project_id: 1
|
||||||
updated_on: <%= 10.days.ago.to_date.to_s(:db) %>
|
updated_on: <%= 10.days.ago.to_date.to_s(:db) %>
|
||||||
priority_id: 5
|
priority_id: 5
|
||||||
subject: Closed issue
|
subject: Closed issue
|
||||||
id: 8
|
id: 8
|
||||||
fixed_version_id:
|
fixed_version_id:
|
||||||
category_id:
|
category_id:
|
||||||
description: This is a closed issue.
|
description: This is a closed issue.
|
||||||
tracker_id: 1
|
tracker_id: 1
|
||||||
assigned_to_id:
|
assigned_to_id:
|
||||||
author_id: 2
|
author_id: 2
|
||||||
status_id: 5
|
status_id: 5
|
||||||
start_date:
|
start_date:
|
||||||
due_date:
|
due_date:
|
||||||
lock_version: 0
|
lock_version: 0
|
||||||
issues_009:
|
issues_009:
|
||||||
created_on: <%= 1.minute.ago.to_date.to_s(:db) %>
|
created_on: <%= 1.minute.ago.to_date.to_s(:db) %>
|
||||||
project_id: 5
|
project_id: 5
|
||||||
updated_on: <%= 1.minute.ago.to_date.to_s(:db) %>
|
updated_on: <%= 1.minute.ago.to_date.to_s(:db) %>
|
||||||
priority_id: 5
|
priority_id: 5
|
||||||
subject: Blocked Issue
|
subject: Blocked Issue
|
||||||
id: 9
|
id: 9
|
||||||
fixed_version_id:
|
fixed_version_id:
|
||||||
category_id:
|
category_id:
|
||||||
description: This is an issue that is blocked by issue #10
|
description: This is an issue that is blocked by issue #10
|
||||||
tracker_id: 1
|
tracker_id: 1
|
||||||
assigned_to_id:
|
assigned_to_id:
|
||||||
author_id: 2
|
author_id: 2
|
||||||
status_id: 1
|
status_id: 1
|
||||||
start_date: <%= Date.today.to_s(:db) %>
|
start_date: <%= Date.today.to_s(:db) %>
|
||||||
due_date: <%= 1.days.from_now.to_date.to_s(:db) %>
|
due_date: <%= 1.days.from_now.to_date.to_s(:db) %>
|
||||||
issues_010:
|
issues_010:
|
||||||
created_on: <%= 1.minute.ago.to_date.to_s(:db) %>
|
created_on: <%= 1.minute.ago.to_date.to_s(:db) %>
|
||||||
project_id: 5
|
project_id: 5
|
||||||
updated_on: <%= 1.minute.ago.to_date.to_s(:db) %>
|
updated_on: <%= 1.minute.ago.to_date.to_s(:db) %>
|
||||||
priority_id: 5
|
priority_id: 5
|
||||||
subject: Issue Doing the Blocking
|
subject: Issue Doing the Blocking
|
||||||
id: 10
|
id: 10
|
||||||
fixed_version_id:
|
fixed_version_id:
|
||||||
category_id:
|
category_id:
|
||||||
description: This is an issue that blocks issue #9
|
description: This is an issue that blocks issue #9
|
||||||
tracker_id: 1
|
tracker_id: 1
|
||||||
assigned_to_id:
|
assigned_to_id:
|
||||||
author_id: 2
|
author_id: 2
|
||||||
status_id: 1
|
status_id: 1
|
||||||
start_date: <%= Date.today.to_s(:db) %>
|
start_date: <%= Date.today.to_s(:db) %>
|
||||||
due_date: <%= 1.days.from_now.to_date.to_s(:db) %>
|
due_date: <%= 1.days.from_now.to_date.to_s(:db) %>
|
||||||
|
|
|
@ -1,15 +1,15 @@
|
||||||
---
|
---
|
||||||
journal_details_001:
|
journal_details_001:
|
||||||
old_value: "1"
|
old_value: "1"
|
||||||
property: attr
|
property: attr
|
||||||
id: 1
|
id: 1
|
||||||
value: "2"
|
value: "2"
|
||||||
prop_key: status_id
|
prop_key: status_id
|
||||||
journal_id: 1
|
journal_id: 1
|
||||||
journal_details_002:
|
journal_details_002:
|
||||||
old_value: "40"
|
old_value: "40"
|
||||||
property: attr
|
property: attr
|
||||||
id: 2
|
id: 2
|
||||||
value: "30"
|
value: "30"
|
||||||
prop_key: done_ratio
|
prop_key: done_ratio
|
||||||
journal_id: 1
|
journal_id: 1
|
||||||
|
|
|
@ -1,23 +1,23 @@
|
||||||
---
|
---
|
||||||
journals_001:
|
journals_001:
|
||||||
created_on: <%= 2.days.ago.to_date.to_s(:db) %>
|
created_on: <%= 2.days.ago.to_date.to_s(:db) %>
|
||||||
notes: "Journal notes"
|
notes: "Journal notes"
|
||||||
id: 1
|
id: 1
|
||||||
journalized_type: Issue
|
journalized_type: Issue
|
||||||
user_id: 1
|
user_id: 1
|
||||||
journalized_id: 1
|
journalized_id: 1
|
||||||
journals_002:
|
journals_002:
|
||||||
created_on: <%= 1.days.ago.to_date.to_s(:db) %>
|
created_on: <%= 1.days.ago.to_date.to_s(:db) %>
|
||||||
notes: "Some notes with Redmine links: #2, r2."
|
notes: "Some notes with Redmine links: #2, r2."
|
||||||
id: 2
|
id: 2
|
||||||
journalized_type: Issue
|
journalized_type: Issue
|
||||||
user_id: 2
|
user_id: 2
|
||||||
journalized_id: 1
|
journalized_id: 1
|
||||||
journals_003:
|
journals_003:
|
||||||
created_on: <%= 1.days.ago.to_date.to_s(:db) %>
|
created_on: <%= 1.days.ago.to_date.to_s(:db) %>
|
||||||
notes: "A comment with inline image: !picture.jpg!"
|
notes: "A comment with inline image: !picture.jpg!"
|
||||||
id: 3
|
id: 3
|
||||||
journalized_type: Issue
|
journalized_type: Issue
|
||||||
user_id: 2
|
user_id: 2
|
||||||
journalized_id: 2
|
journalized_id: 2
|
||||||
|
|
|
@ -1,45 +1,45 @@
|
||||||
---
|
---
|
||||||
members_001:
|
members_001:
|
||||||
created_on: 2006-07-19 19:35:33 +02:00
|
created_on: 2006-07-19 19:35:33 +02:00
|
||||||
project_id: 1
|
project_id: 1
|
||||||
id: 1
|
id: 1
|
||||||
user_id: 2
|
user_id: 2
|
||||||
mail_notification: true
|
mail_notification: true
|
||||||
members_002:
|
members_002:
|
||||||
created_on: 2006-07-19 19:35:36 +02:00
|
created_on: 2006-07-19 19:35:36 +02:00
|
||||||
project_id: 1
|
project_id: 1
|
||||||
id: 2
|
id: 2
|
||||||
user_id: 3
|
user_id: 3
|
||||||
mail_notification: true
|
mail_notification: true
|
||||||
members_003:
|
members_003:
|
||||||
created_on: 2006-07-19 19:35:36 +02:00
|
created_on: 2006-07-19 19:35:36 +02:00
|
||||||
project_id: 2
|
project_id: 2
|
||||||
id: 3
|
id: 3
|
||||||
user_id: 2
|
user_id: 2
|
||||||
mail_notification: true
|
mail_notification: true
|
||||||
members_004:
|
members_004:
|
||||||
id: 4
|
id: 4
|
||||||
created_on: 2006-07-19 19:35:36 +02:00
|
created_on: 2006-07-19 19:35:36 +02:00
|
||||||
project_id: 1
|
project_id: 1
|
||||||
# Locked user
|
# Locked user
|
||||||
user_id: 5
|
user_id: 5
|
||||||
mail_notification: true
|
mail_notification: true
|
||||||
members_005:
|
members_005:
|
||||||
id: 5
|
id: 5
|
||||||
created_on: 2006-07-19 19:35:33 +02:00
|
created_on: 2006-07-19 19:35:33 +02:00
|
||||||
project_id: 5
|
project_id: 5
|
||||||
user_id: 2
|
user_id: 2
|
||||||
mail_notification: true
|
mail_notification: true
|
||||||
members_006:
|
members_006:
|
||||||
id: 6
|
id: 6
|
||||||
created_on: 2006-07-19 19:35:33 +02:00
|
created_on: 2006-07-19 19:35:33 +02:00
|
||||||
project_id: 5
|
project_id: 5
|
||||||
user_id: 10
|
user_id: 10
|
||||||
mail_notification: false
|
mail_notification: false
|
||||||
members_007:
|
members_007:
|
||||||
id: 7
|
id: 7
|
||||||
created_on: 2006-07-19 19:35:33 +02:00
|
created_on: 2006-07-19 19:35:33 +02:00
|
||||||
project_id: 5
|
project_id: 5
|
||||||
user_id: 8
|
user_id: 8
|
||||||
mail_notification: false
|
mail_notification: false
|
||||||
|
|
|
@ -1,68 +1,68 @@
|
||||||
---
|
---
|
||||||
messages_001:
|
messages_001:
|
||||||
created_on: 2007-05-12 17:15:32 +02:00
|
created_on: 2007-05-12 17:15:32 +02:00
|
||||||
updated_on: 2007-05-12 17:15:32 +02:00
|
updated_on: 2007-05-12 17:15:32 +02:00
|
||||||
subject: First post
|
subject: First post
|
||||||
id: 1
|
id: 1
|
||||||
replies_count: 2
|
replies_count: 2
|
||||||
last_reply_id: 3
|
last_reply_id: 3
|
||||||
content: "This is the very first post\n\
|
content: "This is the very first post\n\
|
||||||
in the forum"
|
in the forum"
|
||||||
author_id: 1
|
author_id: 1
|
||||||
parent_id:
|
parent_id:
|
||||||
board_id: 1
|
board_id: 1
|
||||||
messages_002:
|
messages_002:
|
||||||
created_on: 2007-05-12 17:18:00 +02:00
|
created_on: 2007-05-12 17:18:00 +02:00
|
||||||
updated_on: 2007-05-12 17:18:00 +02:00
|
updated_on: 2007-05-12 17:18:00 +02:00
|
||||||
subject: First reply
|
subject: First reply
|
||||||
id: 2
|
id: 2
|
||||||
replies_count: 0
|
replies_count: 0
|
||||||
last_reply_id:
|
last_reply_id:
|
||||||
content: "Reply to the first post"
|
content: "Reply to the first post"
|
||||||
author_id: 1
|
author_id: 1
|
||||||
parent_id: 1
|
parent_id: 1
|
||||||
board_id: 1
|
board_id: 1
|
||||||
messages_003:
|
messages_003:
|
||||||
created_on: 2007-05-12 17:18:02 +02:00
|
created_on: 2007-05-12 17:18:02 +02:00
|
||||||
updated_on: 2007-05-12 17:18:02 +02:00
|
updated_on: 2007-05-12 17:18:02 +02:00
|
||||||
subject: "RE: First post"
|
subject: "RE: First post"
|
||||||
id: 3
|
id: 3
|
||||||
replies_count: 0
|
replies_count: 0
|
||||||
last_reply_id:
|
last_reply_id:
|
||||||
content: "An other reply"
|
content: "An other reply"
|
||||||
author_id: 2
|
author_id: 2
|
||||||
parent_id: 1
|
parent_id: 1
|
||||||
board_id: 1
|
board_id: 1
|
||||||
messages_004:
|
messages_004:
|
||||||
created_on: 2007-08-12 17:15:32 +02:00
|
created_on: 2007-08-12 17:15:32 +02:00
|
||||||
updated_on: 2007-08-12 17:15:32 +02:00
|
updated_on: 2007-08-12 17:15:32 +02:00
|
||||||
subject: Post 2
|
subject: Post 2
|
||||||
id: 4
|
id: 4
|
||||||
replies_count: 2
|
replies_count: 2
|
||||||
last_reply_id: 6
|
last_reply_id: 6
|
||||||
content: "This is an other post"
|
content: "This is an other post"
|
||||||
author_id:
|
author_id:
|
||||||
parent_id:
|
parent_id:
|
||||||
board_id: 1
|
board_id: 1
|
||||||
messages_005:
|
messages_005:
|
||||||
created_on: <%= 3.days.ago.to_date.to_s(:db) %>
|
created_on: <%= 3.days.ago.to_date.to_s(:db) %>
|
||||||
updated_on: <%= 3.days.ago.to_date.to_s(:db) %>
|
updated_on: <%= 3.days.ago.to_date.to_s(:db) %>
|
||||||
subject: 'RE: post 2'
|
subject: 'RE: post 2'
|
||||||
id: 5
|
id: 5
|
||||||
replies_count: 0
|
replies_count: 0
|
||||||
last_reply_id:
|
last_reply_id:
|
||||||
content: "Reply to the second post"
|
content: "Reply to the second post"
|
||||||
author_id: 1
|
author_id: 1
|
||||||
parent_id: 4
|
parent_id: 4
|
||||||
board_id: 1
|
board_id: 1
|
||||||
messages_006:
|
messages_006:
|
||||||
created_on: <%= 2.days.ago.to_date.to_s(:db) %>
|
created_on: <%= 2.days.ago.to_date.to_s(:db) %>
|
||||||
updated_on: <%= 2.days.ago.to_date.to_s(:db) %>
|
updated_on: <%= 2.days.ago.to_date.to_s(:db) %>
|
||||||
subject: 'RE: post 2'
|
subject: 'RE: post 2'
|
||||||
id: 6
|
id: 6
|
||||||
replies_count: 0
|
replies_count: 0
|
||||||
last_reply_id:
|
last_reply_id:
|
||||||
content: "Another reply to the second post"
|
content: "Another reply to the second post"
|
||||||
author_id: 3
|
author_id: 3
|
||||||
parent_id: 4
|
parent_id: 4
|
||||||
board_id: 1
|
board_id: 1
|
||||||
|
|
|
@ -1,22 +1,22 @@
|
||||||
---
|
---
|
||||||
news_001:
|
news_001:
|
||||||
created_on: 2006-07-19 22:40:26 +02:00
|
created_on: 2006-07-19 22:40:26 +02:00
|
||||||
project_id: 1
|
project_id: 1
|
||||||
title: eCookbook first release !
|
title: eCookbook first release !
|
||||||
id: 1
|
id: 1
|
||||||
description: |-
|
description: |-
|
||||||
eCookbook 1.0 has been released.
|
eCookbook 1.0 has been released.
|
||||||
|
|
||||||
Visit http://ecookbook.somenet.foo/
|
Visit http://ecookbook.somenet.foo/
|
||||||
summary: First version was released...
|
summary: First version was released...
|
||||||
author_id: 2
|
author_id: 2
|
||||||
comments_count: 1
|
comments_count: 1
|
||||||
news_002:
|
news_002:
|
||||||
created_on: 2006-07-19 22:42:58 +02:00
|
created_on: 2006-07-19 22:42:58 +02:00
|
||||||
project_id: 1
|
project_id: 1
|
||||||
title: 100,000 downloads for eCookbook
|
title: 100,000 downloads for eCookbook
|
||||||
id: 2
|
id: 2
|
||||||
description: eCookbook 1.0 have downloaded 100,000 times
|
description: eCookbook 1.0 have downloaded 100,000 times
|
||||||
summary: eCookbook 1.0 have downloaded 100,000 times
|
summary: eCookbook 1.0 have downloaded 100,000 times
|
||||||
author_id: 2
|
author_id: 2
|
||||||
comments_count: 0
|
comments_count: 0
|
||||||
|
|
|
@ -1,74 +1,74 @@
|
||||||
---
|
---
|
||||||
projects_001:
|
projects_001:
|
||||||
created_on: 2006-07-19 19:13:59 +02:00
|
created_on: 2006-07-19 19:13:59 +02:00
|
||||||
name: eCookbook
|
name: eCookbook
|
||||||
updated_on: 2006-07-19 22:53:01 +02:00
|
updated_on: 2006-07-19 22:53:01 +02:00
|
||||||
id: 1
|
id: 1
|
||||||
description: Recipes management application
|
description: Recipes management application
|
||||||
homepage: http://ecookbook.somenet.foo/
|
homepage: http://ecookbook.somenet.foo/
|
||||||
is_public: true
|
is_public: true
|
||||||
identifier: ecookbook
|
identifier: ecookbook
|
||||||
parent_id:
|
parent_id:
|
||||||
lft: 1
|
lft: 1
|
||||||
rgt: 10
|
rgt: 10
|
||||||
projects_002:
|
projects_002:
|
||||||
created_on: 2006-07-19 19:14:19 +02:00
|
created_on: 2006-07-19 19:14:19 +02:00
|
||||||
name: OnlineStore
|
name: OnlineStore
|
||||||
updated_on: 2006-07-19 19:14:19 +02:00
|
updated_on: 2006-07-19 19:14:19 +02:00
|
||||||
id: 2
|
id: 2
|
||||||
description: E-commerce web site
|
description: E-commerce web site
|
||||||
homepage: ""
|
homepage: ""
|
||||||
is_public: false
|
is_public: false
|
||||||
identifier: onlinestore
|
identifier: onlinestore
|
||||||
parent_id:
|
parent_id:
|
||||||
lft: 11
|
lft: 11
|
||||||
rgt: 12
|
rgt: 12
|
||||||
projects_003:
|
projects_003:
|
||||||
created_on: 2006-07-19 19:15:21 +02:00
|
created_on: 2006-07-19 19:15:21 +02:00
|
||||||
name: eCookbook Subproject 1
|
name: eCookbook Subproject 1
|
||||||
updated_on: 2006-07-19 19:18:12 +02:00
|
updated_on: 2006-07-19 19:18:12 +02:00
|
||||||
id: 3
|
id: 3
|
||||||
description: eCookBook Subproject 1
|
description: eCookBook Subproject 1
|
||||||
homepage: ""
|
homepage: ""
|
||||||
is_public: true
|
is_public: true
|
||||||
identifier: subproject1
|
identifier: subproject1
|
||||||
parent_id: 1
|
parent_id: 1
|
||||||
lft: 6
|
lft: 6
|
||||||
rgt: 7
|
rgt: 7
|
||||||
projects_004:
|
projects_004:
|
||||||
created_on: 2006-07-19 19:15:51 +02:00
|
created_on: 2006-07-19 19:15:51 +02:00
|
||||||
name: eCookbook Subproject 2
|
name: eCookbook Subproject 2
|
||||||
updated_on: 2006-07-19 19:17:07 +02:00
|
updated_on: 2006-07-19 19:17:07 +02:00
|
||||||
id: 4
|
id: 4
|
||||||
description: eCookbook Subproject 2
|
description: eCookbook Subproject 2
|
||||||
homepage: ""
|
homepage: ""
|
||||||
is_public: true
|
is_public: true
|
||||||
identifier: subproject2
|
identifier: subproject2
|
||||||
parent_id: 1
|
parent_id: 1
|
||||||
lft: 8
|
lft: 8
|
||||||
rgt: 9
|
rgt: 9
|
||||||
projects_005:
|
projects_005:
|
||||||
created_on: 2006-07-19 19:15:51 +02:00
|
created_on: 2006-07-19 19:15:51 +02:00
|
||||||
name: Private child of eCookbook
|
name: Private child of eCookbook
|
||||||
updated_on: 2006-07-19 19:17:07 +02:00
|
updated_on: 2006-07-19 19:17:07 +02:00
|
||||||
id: 5
|
id: 5
|
||||||
description: This is a private subproject of a public project
|
description: This is a private subproject of a public project
|
||||||
homepage: ""
|
homepage: ""
|
||||||
is_public: false
|
is_public: false
|
||||||
identifier: private-child
|
identifier: private-child
|
||||||
parent_id: 1
|
parent_id: 1
|
||||||
lft: 2
|
lft: 2
|
||||||
rgt: 5
|
rgt: 5
|
||||||
projects_006:
|
projects_006:
|
||||||
created_on: 2006-07-19 19:15:51 +02:00
|
created_on: 2006-07-19 19:15:51 +02:00
|
||||||
name: Child of private child
|
name: Child of private child
|
||||||
updated_on: 2006-07-19 19:17:07 +02:00
|
updated_on: 2006-07-19 19:17:07 +02:00
|
||||||
id: 6
|
id: 6
|
||||||
description: This is a public subproject of a private project
|
description: This is a public subproject of a private project
|
||||||
homepage: ""
|
homepage: ""
|
||||||
is_public: true
|
is_public: true
|
||||||
identifier: project6
|
identifier: project6
|
||||||
parent_id: 5
|
parent_id: 5
|
||||||
lft: 3
|
lft: 3
|
||||||
rgt: 4
|
rgt: 4
|
||||||
|
|
|
@ -1,137 +1,137 @@
|
||||||
---
|
---
|
||||||
queries_001:
|
queries_001:
|
||||||
id: 1
|
id: 1
|
||||||
project_id: 1
|
project_id: 1
|
||||||
is_public: true
|
is_public: true
|
||||||
name: Multiple custom fields query
|
name: Multiple custom fields query
|
||||||
filters: |
|
filters: |
|
||||||
---
|
---
|
||||||
cf_1:
|
cf_1:
|
||||||
:values:
|
:values:
|
||||||
- MySQL
|
- MySQL
|
||||||
:operator: "="
|
:operator: "="
|
||||||
status_id:
|
status_id:
|
||||||
:values:
|
:values:
|
||||||
- "1"
|
- "1"
|
||||||
:operator: o
|
:operator: o
|
||||||
cf_2:
|
cf_2:
|
||||||
:values:
|
:values:
|
||||||
- "125"
|
- "125"
|
||||||
:operator: "="
|
:operator: "="
|
||||||
|
|
||||||
user_id: 1
|
user_id: 1
|
||||||
column_names:
|
column_names:
|
||||||
queries_002:
|
queries_002:
|
||||||
id: 2
|
id: 2
|
||||||
project_id: 1
|
project_id: 1
|
||||||
is_public: false
|
is_public: false
|
||||||
name: Private query for cookbook
|
name: Private query for cookbook
|
||||||
filters: |
|
filters: |
|
||||||
---
|
---
|
||||||
tracker_id:
|
tracker_id:
|
||||||
:values:
|
:values:
|
||||||
- "3"
|
- "3"
|
||||||
:operator: "="
|
:operator: "="
|
||||||
status_id:
|
status_id:
|
||||||
:values:
|
:values:
|
||||||
- "1"
|
- "1"
|
||||||
:operator: o
|
:operator: o
|
||||||
|
|
||||||
user_id: 3
|
user_id: 3
|
||||||
column_names:
|
column_names:
|
||||||
queries_003:
|
queries_003:
|
||||||
id: 3
|
id: 3
|
||||||
project_id:
|
project_id:
|
||||||
is_public: false
|
is_public: false
|
||||||
name: Private query for all projects
|
name: Private query for all projects
|
||||||
filters: |
|
filters: |
|
||||||
---
|
---
|
||||||
tracker_id:
|
tracker_id:
|
||||||
:values:
|
:values:
|
||||||
- "3"
|
- "3"
|
||||||
:operator: "="
|
:operator: "="
|
||||||
|
|
||||||
user_id: 3
|
user_id: 3
|
||||||
column_names:
|
column_names:
|
||||||
queries_004:
|
queries_004:
|
||||||
id: 4
|
id: 4
|
||||||
project_id:
|
project_id:
|
||||||
is_public: true
|
is_public: true
|
||||||
name: Public query for all projects
|
name: Public query for all projects
|
||||||
filters: |
|
filters: |
|
||||||
---
|
---
|
||||||
tracker_id:
|
tracker_id:
|
||||||
:values:
|
:values:
|
||||||
- "3"
|
- "3"
|
||||||
:operator: "="
|
:operator: "="
|
||||||
|
|
||||||
user_id: 2
|
user_id: 2
|
||||||
column_names:
|
column_names:
|
||||||
queries_005:
|
queries_005:
|
||||||
id: 5
|
id: 5
|
||||||
project_id:
|
project_id:
|
||||||
is_public: true
|
is_public: true
|
||||||
name: Open issues by priority and tracker
|
name: Open issues by priority and tracker
|
||||||
filters: |
|
filters: |
|
||||||
---
|
---
|
||||||
status_id:
|
status_id:
|
||||||
:values:
|
:values:
|
||||||
- "1"
|
- "1"
|
||||||
:operator: o
|
:operator: o
|
||||||
|
|
||||||
user_id: 1
|
user_id: 1
|
||||||
column_names:
|
column_names:
|
||||||
sort_criteria: |
|
sort_criteria: |
|
||||||
---
|
---
|
||||||
- - priority
|
- - priority
|
||||||
- desc
|
- desc
|
||||||
- - tracker
|
- - tracker
|
||||||
- asc
|
- asc
|
||||||
queries_006:
|
queries_006:
|
||||||
id: 6
|
id: 6
|
||||||
project_id:
|
project_id:
|
||||||
is_public: true
|
is_public: true
|
||||||
name: Open issues grouped by tracker
|
name: Open issues grouped by tracker
|
||||||
filters: |
|
filters: |
|
||||||
---
|
---
|
||||||
status_id:
|
status_id:
|
||||||
:values:
|
:values:
|
||||||
- "1"
|
- "1"
|
||||||
:operator: o
|
:operator: o
|
||||||
|
|
||||||
user_id: 1
|
user_id: 1
|
||||||
column_names:
|
column_names:
|
||||||
group_by: tracker
|
group_by: tracker
|
||||||
sort_criteria: |
|
sort_criteria: |
|
||||||
---
|
---
|
||||||
- - priority
|
- - priority
|
||||||
- desc
|
- desc
|
||||||
queries_007:
|
queries_007:
|
||||||
id: 7
|
id: 7
|
||||||
project_id: 2
|
project_id: 2
|
||||||
is_public: true
|
is_public: true
|
||||||
name: Public query for project 2
|
name: Public query for project 2
|
||||||
filters: |
|
filters: |
|
||||||
---
|
---
|
||||||
tracker_id:
|
tracker_id:
|
||||||
:values:
|
:values:
|
||||||
- "3"
|
- "3"
|
||||||
:operator: "="
|
:operator: "="
|
||||||
|
|
||||||
user_id: 2
|
user_id: 2
|
||||||
column_names:
|
column_names:
|
||||||
queries_008:
|
queries_008:
|
||||||
id: 8
|
id: 8
|
||||||
project_id: 2
|
project_id: 2
|
||||||
is_public: false
|
is_public: false
|
||||||
name: Private query for project 2
|
name: Private query for project 2
|
||||||
filters: |
|
filters: |
|
||||||
---
|
---
|
||||||
tracker_id:
|
tracker_id:
|
||||||
:values:
|
:values:
|
||||||
- "3"
|
- "3"
|
||||||
:operator: "="
|
:operator: "="
|
||||||
|
|
||||||
user_id: 2
|
user_id: 2
|
||||||
column_names:
|
column_names:
|
||||||
|
|
||||||
|
|
|
@ -1,17 +1,17 @@
|
||||||
---
|
---
|
||||||
repositories_001:
|
repositories_001:
|
||||||
project_id: 1
|
project_id: 1
|
||||||
url: file:///<%= RAILS_ROOT.gsub(%r{config\/\.\.}, '') %>/tmp/test/subversion_repository
|
url: file:///<%= RAILS_ROOT.gsub(%r{config\/\.\.}, '') %>/tmp/test/subversion_repository
|
||||||
id: 10
|
id: 10
|
||||||
root_url: file:///<%= RAILS_ROOT.gsub(%r{config\/\.\.}, '') %>/tmp/test/subversion_repository
|
root_url: file:///<%= RAILS_ROOT.gsub(%r{config\/\.\.}, '') %>/tmp/test/subversion_repository
|
||||||
password: ""
|
password: ""
|
||||||
login: ""
|
login: ""
|
||||||
type: Subversion
|
type: Subversion
|
||||||
repositories_002:
|
repositories_002:
|
||||||
project_id: 2
|
project_id: 2
|
||||||
url: svn://localhost/test
|
url: svn://localhost/test
|
||||||
id: 11
|
id: 11
|
||||||
root_url: svn://localhost
|
root_url: svn://localhost
|
||||||
password: ""
|
password: ""
|
||||||
login: ""
|
login: ""
|
||||||
type: Subversion
|
type: Subversion
|
||||||
|
|
|
@ -1,177 +1,177 @@
|
||||||
---
|
---
|
||||||
roles_001:
|
roles_001:
|
||||||
name: Manager
|
name: Manager
|
||||||
id: 1
|
id: 1
|
||||||
builtin: 0
|
builtin: 0
|
||||||
permissions: |
|
permissions: |
|
||||||
---
|
---
|
||||||
- :add_project
|
- :add_project
|
||||||
- :edit_project
|
- :edit_project
|
||||||
- :manage_members
|
- :manage_members
|
||||||
- :manage_versions
|
- :manage_versions
|
||||||
- :manage_categories
|
- :manage_categories
|
||||||
- :add_issues
|
- :add_issues
|
||||||
- :edit_issues
|
- :edit_issues
|
||||||
- :manage_issue_relations
|
- :manage_issue_relations
|
||||||
- :add_issue_notes
|
- :add_issue_notes
|
||||||
- :move_issues
|
- :move_issues
|
||||||
- :delete_issues
|
- :delete_issues
|
||||||
- :view_issue_watchers
|
- :view_issue_watchers
|
||||||
- :add_issue_watchers
|
- :add_issue_watchers
|
||||||
- :manage_public_queries
|
- :manage_public_queries
|
||||||
- :save_queries
|
- :save_queries
|
||||||
- :view_gantt
|
- :view_gantt
|
||||||
- :view_calendar
|
- :view_calendar
|
||||||
- :log_time
|
- :log_time
|
||||||
- :view_time_entries
|
- :view_time_entries
|
||||||
- :edit_time_entries
|
- :edit_time_entries
|
||||||
- :delete_time_entries
|
- :delete_time_entries
|
||||||
- :manage_news
|
- :manage_news
|
||||||
- :comment_news
|
- :comment_news
|
||||||
- :view_documents
|
- :view_documents
|
||||||
- :manage_documents
|
- :manage_documents
|
||||||
- :view_wiki_pages
|
- :view_wiki_pages
|
||||||
- :view_wiki_edits
|
- :view_wiki_edits
|
||||||
- :edit_wiki_pages
|
- :edit_wiki_pages
|
||||||
- :delete_wiki_pages_attachments
|
- :delete_wiki_pages_attachments
|
||||||
- :protect_wiki_pages
|
- :protect_wiki_pages
|
||||||
- :delete_wiki_pages
|
- :delete_wiki_pages
|
||||||
- :rename_wiki_pages
|
- :rename_wiki_pages
|
||||||
- :add_messages
|
- :add_messages
|
||||||
- :edit_messages
|
- :edit_messages
|
||||||
- :delete_messages
|
- :delete_messages
|
||||||
- :manage_boards
|
- :manage_boards
|
||||||
- :view_files
|
- :view_files
|
||||||
- :manage_files
|
- :manage_files
|
||||||
- :browse_repository
|
- :browse_repository
|
||||||
- :manage_repository
|
- :manage_repository
|
||||||
- :view_changesets
|
- :view_changesets
|
||||||
|
|
||||||
position: 1
|
position: 1
|
||||||
roles_002:
|
roles_002:
|
||||||
name: Developer
|
name: Developer
|
||||||
id: 2
|
id: 2
|
||||||
builtin: 0
|
builtin: 0
|
||||||
permissions: |
|
permissions: |
|
||||||
---
|
---
|
||||||
- :edit_project
|
- :edit_project
|
||||||
- :manage_members
|
- :manage_members
|
||||||
- :manage_versions
|
- :manage_versions
|
||||||
- :manage_categories
|
- :manage_categories
|
||||||
- :add_issues
|
- :add_issues
|
||||||
- :edit_issues
|
- :edit_issues
|
||||||
- :manage_issue_relations
|
- :manage_issue_relations
|
||||||
- :add_issue_notes
|
- :add_issue_notes
|
||||||
- :move_issues
|
- :move_issues
|
||||||
- :delete_issues
|
- :delete_issues
|
||||||
- :view_issue_watchers
|
- :view_issue_watchers
|
||||||
- :save_queries
|
- :save_queries
|
||||||
- :view_gantt
|
- :view_gantt
|
||||||
- :view_calendar
|
- :view_calendar
|
||||||
- :log_time
|
- :log_time
|
||||||
- :view_time_entries
|
- :view_time_entries
|
||||||
- :edit_own_time_entries
|
- :edit_own_time_entries
|
||||||
- :manage_news
|
- :manage_news
|
||||||
- :comment_news
|
- :comment_news
|
||||||
- :view_documents
|
- :view_documents
|
||||||
- :manage_documents
|
- :manage_documents
|
||||||
- :view_wiki_pages
|
- :view_wiki_pages
|
||||||
- :view_wiki_edits
|
- :view_wiki_edits
|
||||||
- :edit_wiki_pages
|
- :edit_wiki_pages
|
||||||
- :protect_wiki_pages
|
- :protect_wiki_pages
|
||||||
- :delete_wiki_pages
|
- :delete_wiki_pages
|
||||||
- :add_messages
|
- :add_messages
|
||||||
- :edit_own_messages
|
- :edit_own_messages
|
||||||
- :delete_own_messages
|
- :delete_own_messages
|
||||||
- :manage_boards
|
- :manage_boards
|
||||||
- :view_files
|
- :view_files
|
||||||
- :manage_files
|
- :manage_files
|
||||||
- :browse_repository
|
- :browse_repository
|
||||||
- :view_changesets
|
- :view_changesets
|
||||||
|
|
||||||
position: 2
|
position: 2
|
||||||
roles_003:
|
roles_003:
|
||||||
name: Reporter
|
name: Reporter
|
||||||
id: 3
|
id: 3
|
||||||
builtin: 0
|
builtin: 0
|
||||||
permissions: |
|
permissions: |
|
||||||
---
|
---
|
||||||
- :edit_project
|
- :edit_project
|
||||||
- :manage_members
|
- :manage_members
|
||||||
- :manage_versions
|
- :manage_versions
|
||||||
- :manage_categories
|
- :manage_categories
|
||||||
- :add_issues
|
- :add_issues
|
||||||
- :edit_issues
|
- :edit_issues
|
||||||
- :manage_issue_relations
|
- :manage_issue_relations
|
||||||
- :add_issue_notes
|
- :add_issue_notes
|
||||||
- :move_issues
|
- :move_issues
|
||||||
- :view_issue_watchers
|
- :view_issue_watchers
|
||||||
- :save_queries
|
- :save_queries
|
||||||
- :view_gantt
|
- :view_gantt
|
||||||
- :view_calendar
|
- :view_calendar
|
||||||
- :log_time
|
- :log_time
|
||||||
- :view_time_entries
|
- :view_time_entries
|
||||||
- :manage_news
|
- :manage_news
|
||||||
- :comment_news
|
- :comment_news
|
||||||
- :view_documents
|
- :view_documents
|
||||||
- :manage_documents
|
- :manage_documents
|
||||||
- :view_wiki_pages
|
- :view_wiki_pages
|
||||||
- :view_wiki_edits
|
- :view_wiki_edits
|
||||||
- :edit_wiki_pages
|
- :edit_wiki_pages
|
||||||
- :delete_wiki_pages
|
- :delete_wiki_pages
|
||||||
- :add_messages
|
- :add_messages
|
||||||
- :manage_boards
|
- :manage_boards
|
||||||
- :view_files
|
- :view_files
|
||||||
- :manage_files
|
- :manage_files
|
||||||
- :browse_repository
|
- :browse_repository
|
||||||
- :view_changesets
|
- :view_changesets
|
||||||
|
|
||||||
position: 3
|
position: 3
|
||||||
roles_004:
|
roles_004:
|
||||||
name: Non member
|
name: Non member
|
||||||
id: 4
|
id: 4
|
||||||
builtin: 1
|
builtin: 1
|
||||||
permissions: |
|
permissions: |
|
||||||
---
|
---
|
||||||
- :add_issues
|
- :add_issues
|
||||||
- :edit_issues
|
- :edit_issues
|
||||||
- :manage_issue_relations
|
- :manage_issue_relations
|
||||||
- :add_issue_notes
|
- :add_issue_notes
|
||||||
- :move_issues
|
- :move_issues
|
||||||
- :save_queries
|
- :save_queries
|
||||||
- :view_gantt
|
- :view_gantt
|
||||||
- :view_calendar
|
- :view_calendar
|
||||||
- :log_time
|
- :log_time
|
||||||
- :view_time_entries
|
- :view_time_entries
|
||||||
- :comment_news
|
- :comment_news
|
||||||
- :view_documents
|
- :view_documents
|
||||||
- :manage_documents
|
- :manage_documents
|
||||||
- :view_wiki_pages
|
- :view_wiki_pages
|
||||||
- :view_wiki_edits
|
- :view_wiki_edits
|
||||||
- :edit_wiki_pages
|
- :edit_wiki_pages
|
||||||
- :add_messages
|
- :add_messages
|
||||||
- :view_files
|
- :view_files
|
||||||
- :manage_files
|
- :manage_files
|
||||||
- :browse_repository
|
- :browse_repository
|
||||||
- :view_changesets
|
- :view_changesets
|
||||||
|
|
||||||
position: 4
|
position: 4
|
||||||
roles_005:
|
roles_005:
|
||||||
name: Anonymous
|
name: Anonymous
|
||||||
id: 5
|
id: 5
|
||||||
builtin: 2
|
builtin: 2
|
||||||
permissions: |
|
permissions: |
|
||||||
---
|
---
|
||||||
- :add_issue_notes
|
- :add_issue_notes
|
||||||
- :view_gantt
|
- :view_gantt
|
||||||
- :view_calendar
|
- :view_calendar
|
||||||
- :view_time_entries
|
- :view_time_entries
|
||||||
- :view_documents
|
- :view_documents
|
||||||
- :view_wiki_pages
|
- :view_wiki_pages
|
||||||
- :view_wiki_edits
|
- :view_wiki_edits
|
||||||
- :view_files
|
- :view_files
|
||||||
- :browse_repository
|
- :browse_repository
|
||||||
- :view_changesets
|
- :view_changesets
|
||||||
|
|
||||||
position: 5
|
position: 5
|
||||||
|
|
|
@ -1,58 +1,58 @@
|
||||||
---
|
---
|
||||||
time_entries_001:
|
time_entries_001:
|
||||||
created_on: 2007-03-23 12:54:18 +01:00
|
created_on: 2007-03-23 12:54:18 +01:00
|
||||||
tweek: 12
|
tweek: 12
|
||||||
tmonth: 3
|
tmonth: 3
|
||||||
project_id: 1
|
project_id: 1
|
||||||
comments: My hours
|
comments: My hours
|
||||||
updated_on: 2007-03-23 12:54:18 +01:00
|
updated_on: 2007-03-23 12:54:18 +01:00
|
||||||
activity_id: 9
|
activity_id: 9
|
||||||
spent_on: 2007-03-23
|
spent_on: 2007-03-23
|
||||||
issue_id: 1
|
issue_id: 1
|
||||||
id: 1
|
id: 1
|
||||||
hours: 4.25
|
hours: 4.25
|
||||||
user_id: 2
|
user_id: 2
|
||||||
tyear: 2007
|
tyear: 2007
|
||||||
time_entries_002:
|
time_entries_002:
|
||||||
created_on: 2007-03-23 14:11:04 +01:00
|
created_on: 2007-03-23 14:11:04 +01:00
|
||||||
tweek: 11
|
tweek: 11
|
||||||
tmonth: 3
|
tmonth: 3
|
||||||
project_id: 1
|
project_id: 1
|
||||||
comments: ""
|
comments: ""
|
||||||
updated_on: 2007-03-23 14:11:04 +01:00
|
updated_on: 2007-03-23 14:11:04 +01:00
|
||||||
activity_id: 9
|
activity_id: 9
|
||||||
spent_on: 2007-03-12
|
spent_on: 2007-03-12
|
||||||
issue_id: 1
|
issue_id: 1
|
||||||
id: 2
|
id: 2
|
||||||
hours: 150.0
|
hours: 150.0
|
||||||
user_id: 1
|
user_id: 1
|
||||||
tyear: 2007
|
tyear: 2007
|
||||||
time_entries_003:
|
time_entries_003:
|
||||||
created_on: 2007-04-21 12:20:48 +02:00
|
created_on: 2007-04-21 12:20:48 +02:00
|
||||||
tweek: 16
|
tweek: 16
|
||||||
tmonth: 4
|
tmonth: 4
|
||||||
project_id: 1
|
project_id: 1
|
||||||
comments: ""
|
comments: ""
|
||||||
updated_on: 2007-04-21 12:20:48 +02:00
|
updated_on: 2007-04-21 12:20:48 +02:00
|
||||||
activity_id: 9
|
activity_id: 9
|
||||||
spent_on: 2007-04-21
|
spent_on: 2007-04-21
|
||||||
issue_id: 3
|
issue_id: 3
|
||||||
id: 3
|
id: 3
|
||||||
hours: 1.0
|
hours: 1.0
|
||||||
user_id: 1
|
user_id: 1
|
||||||
tyear: 2007
|
tyear: 2007
|
||||||
time_entries_004:
|
time_entries_004:
|
||||||
created_on: 2007-04-22 12:20:48 +02:00
|
created_on: 2007-04-22 12:20:48 +02:00
|
||||||
tweek: 16
|
tweek: 16
|
||||||
tmonth: 4
|
tmonth: 4
|
||||||
project_id: 3
|
project_id: 3
|
||||||
comments: Time spent on a subproject
|
comments: Time spent on a subproject
|
||||||
updated_on: 2007-04-22 12:20:48 +02:00
|
updated_on: 2007-04-22 12:20:48 +02:00
|
||||||
activity_id: 10
|
activity_id: 10
|
||||||
spent_on: 2007-04-22
|
spent_on: 2007-04-22
|
||||||
issue_id:
|
issue_id:
|
||||||
id: 4
|
id: 4
|
||||||
hours: 7.65
|
hours: 7.65
|
||||||
user_id: 1
|
user_id: 1
|
||||||
tyear: 2007
|
tyear: 2007
|
||||||
|
|
|
@ -1,13 +1,13 @@
|
||||||
---
|
---
|
||||||
tokens_001:
|
tokens_001:
|
||||||
created_on: 2007-01-21 00:39:12 +01:00
|
created_on: 2007-01-21 00:39:12 +01:00
|
||||||
action: register
|
action: register
|
||||||
id: 1
|
id: 1
|
||||||
value: DwMJ2yIxBNeAk26znMYzYmz5dAiIina0GFrPnGTM
|
value: DwMJ2yIxBNeAk26znMYzYmz5dAiIina0GFrPnGTM
|
||||||
user_id: 1
|
user_id: 1
|
||||||
tokens_002:
|
tokens_002:
|
||||||
created_on: 2007-01-21 00:39:52 +01:00
|
created_on: 2007-01-21 00:39:52 +01:00
|
||||||
action: recovery
|
action: recovery
|
||||||
id: 2
|
id: 2
|
||||||
value: sahYSIaoYrsZUef86sTHrLISdznW6ApF36h5WSnm
|
value: sahYSIaoYrsZUef86sTHrLISdznW6ApF36h5WSnm
|
||||||
user_id: 2
|
user_id: 2
|
||||||
|
|
|
@ -1,16 +1,16 @@
|
||||||
---
|
---
|
||||||
trackers_001:
|
trackers_001:
|
||||||
name: Bug
|
name: Bug
|
||||||
id: 1
|
id: 1
|
||||||
is_in_chlog: true
|
is_in_chlog: true
|
||||||
position: 1
|
position: 1
|
||||||
trackers_002:
|
trackers_002:
|
||||||
name: Feature request
|
name: Feature request
|
||||||
id: 2
|
id: 2
|
||||||
is_in_chlog: true
|
is_in_chlog: true
|
||||||
position: 2
|
position: 2
|
||||||
trackers_003:
|
trackers_003:
|
||||||
name: Support request
|
name: Support request
|
||||||
id: 3
|
id: 3
|
||||||
is_in_chlog: false
|
is_in_chlog: false
|
||||||
position: 3
|
position: 3
|
||||||
|
|
|
@ -1,156 +1,156 @@
|
||||||
---
|
---
|
||||||
users_004:
|
users_004:
|
||||||
created_on: 2006-07-19 19:34:07 +02:00
|
created_on: 2006-07-19 19:34:07 +02:00
|
||||||
status: 1
|
status: 1
|
||||||
last_login_on:
|
last_login_on:
|
||||||
language: en
|
language: en
|
||||||
hashed_password: 4e4aeb7baaf0706bd670263fef42dad15763b608
|
hashed_password: 4e4aeb7baaf0706bd670263fef42dad15763b608
|
||||||
updated_on: 2006-07-19 19:34:07 +02:00
|
updated_on: 2006-07-19 19:34:07 +02:00
|
||||||
admin: false
|
admin: false
|
||||||
mail: rhill@somenet.foo
|
mail: rhill@somenet.foo
|
||||||
lastname: Hill
|
lastname: Hill
|
||||||
firstname: Robert
|
firstname: Robert
|
||||||
id: 4
|
id: 4
|
||||||
auth_source_id:
|
auth_source_id:
|
||||||
mail_notification: true
|
mail_notification: true
|
||||||
login: rhill
|
login: rhill
|
||||||
type: User
|
type: User
|
||||||
users_001:
|
users_001:
|
||||||
created_on: 2006-07-19 19:12:21 +02:00
|
created_on: 2006-07-19 19:12:21 +02:00
|
||||||
status: 1
|
status: 1
|
||||||
last_login_on: 2006-07-19 22:57:52 +02:00
|
last_login_on: 2006-07-19 22:57:52 +02:00
|
||||||
language: en
|
language: en
|
||||||
hashed_password: d033e22ae348aeb5660fc2140aec35850c4da997
|
hashed_password: d033e22ae348aeb5660fc2140aec35850c4da997
|
||||||
updated_on: 2006-07-19 22:57:52 +02:00
|
updated_on: 2006-07-19 22:57:52 +02:00
|
||||||
admin: true
|
admin: true
|
||||||
mail: admin@somenet.foo
|
mail: admin@somenet.foo
|
||||||
lastname: Admin
|
lastname: Admin
|
||||||
firstname: redMine
|
firstname: redMine
|
||||||
id: 1
|
id: 1
|
||||||
auth_source_id:
|
auth_source_id:
|
||||||
mail_notification: true
|
mail_notification: true
|
||||||
login: admin
|
login: admin
|
||||||
type: User
|
type: User
|
||||||
users_002:
|
users_002:
|
||||||
created_on: 2006-07-19 19:32:09 +02:00
|
created_on: 2006-07-19 19:32:09 +02:00
|
||||||
status: 1
|
status: 1
|
||||||
last_login_on: 2006-07-19 22:42:15 +02:00
|
last_login_on: 2006-07-19 22:42:15 +02:00
|
||||||
language: en
|
language: en
|
||||||
hashed_password: a9a653d4151fa2c081ba1ffc2c2726f3b80b7d7d
|
hashed_password: a9a653d4151fa2c081ba1ffc2c2726f3b80b7d7d
|
||||||
updated_on: 2006-07-19 22:42:15 +02:00
|
updated_on: 2006-07-19 22:42:15 +02:00
|
||||||
admin: false
|
admin: false
|
||||||
mail: jsmith@somenet.foo
|
mail: jsmith@somenet.foo
|
||||||
lastname: Smith
|
lastname: Smith
|
||||||
firstname: John
|
firstname: John
|
||||||
id: 2
|
id: 2
|
||||||
auth_source_id:
|
auth_source_id:
|
||||||
mail_notification: true
|
mail_notification: true
|
||||||
login: jsmith
|
login: jsmith
|
||||||
type: User
|
type: User
|
||||||
users_003:
|
users_003:
|
||||||
created_on: 2006-07-19 19:33:19 +02:00
|
created_on: 2006-07-19 19:33:19 +02:00
|
||||||
status: 1
|
status: 1
|
||||||
last_login_on:
|
last_login_on:
|
||||||
language: en
|
language: en
|
||||||
hashed_password: 7feb7657aa7a7bf5aef3414a5084875f27192415
|
hashed_password: 7feb7657aa7a7bf5aef3414a5084875f27192415
|
||||||
updated_on: 2006-07-19 19:33:19 +02:00
|
updated_on: 2006-07-19 19:33:19 +02:00
|
||||||
admin: false
|
admin: false
|
||||||
mail: dlopper@somenet.foo
|
mail: dlopper@somenet.foo
|
||||||
lastname: Lopper
|
lastname: Lopper
|
||||||
firstname: Dave
|
firstname: Dave
|
||||||
id: 3
|
id: 3
|
||||||
auth_source_id:
|
auth_source_id:
|
||||||
mail_notification: true
|
mail_notification: true
|
||||||
login: dlopper
|
login: dlopper
|
||||||
type: User
|
type: User
|
||||||
users_005:
|
users_005:
|
||||||
id: 5
|
id: 5
|
||||||
created_on: 2006-07-19 19:33:19 +02:00
|
created_on: 2006-07-19 19:33:19 +02:00
|
||||||
# Locked
|
# Locked
|
||||||
status: 3
|
status: 3
|
||||||
last_login_on:
|
last_login_on:
|
||||||
language: en
|
language: en
|
||||||
hashed_password: 7feb7657aa7a7bf5aef3414a5084875f27192415
|
hashed_password: 7feb7657aa7a7bf5aef3414a5084875f27192415
|
||||||
updated_on: 2006-07-19 19:33:19 +02:00
|
updated_on: 2006-07-19 19:33:19 +02:00
|
||||||
admin: false
|
admin: false
|
||||||
mail: dlopper2@somenet.foo
|
mail: dlopper2@somenet.foo
|
||||||
lastname: Lopper2
|
lastname: Lopper2
|
||||||
firstname: Dave2
|
firstname: Dave2
|
||||||
auth_source_id:
|
auth_source_id:
|
||||||
mail_notification: true
|
mail_notification: true
|
||||||
login: dlopper2
|
login: dlopper2
|
||||||
type: User
|
type: User
|
||||||
users_006:
|
users_006:
|
||||||
id: 6
|
id: 6
|
||||||
created_on: 2006-07-19 19:33:19 +02:00
|
created_on: 2006-07-19 19:33:19 +02:00
|
||||||
status: 1
|
status: 1
|
||||||
last_login_on:
|
last_login_on:
|
||||||
language: ''
|
language: ''
|
||||||
hashed_password: 1
|
hashed_password: 1
|
||||||
updated_on: 2006-07-19 19:33:19 +02:00
|
updated_on: 2006-07-19 19:33:19 +02:00
|
||||||
admin: false
|
admin: false
|
||||||
mail: ''
|
mail: ''
|
||||||
lastname: Anonymous
|
lastname: Anonymous
|
||||||
firstname: ''
|
firstname: ''
|
||||||
auth_source_id:
|
auth_source_id:
|
||||||
mail_notification: false
|
mail_notification: false
|
||||||
login: ''
|
login: ''
|
||||||
type: AnonymousUser
|
type: AnonymousUser
|
||||||
users_007:
|
users_007:
|
||||||
id: 7
|
id: 7
|
||||||
created_on: 2006-07-19 19:33:19 +02:00
|
created_on: 2006-07-19 19:33:19 +02:00
|
||||||
status: 1
|
status: 1
|
||||||
last_login_on:
|
last_login_on:
|
||||||
language: ''
|
language: ''
|
||||||
hashed_password: 1
|
hashed_password: 1
|
||||||
updated_on: 2006-07-19 19:33:19 +02:00
|
updated_on: 2006-07-19 19:33:19 +02:00
|
||||||
admin: false
|
admin: false
|
||||||
mail: someone@foo.bar
|
mail: someone@foo.bar
|
||||||
lastname: One
|
lastname: One
|
||||||
firstname: Some
|
firstname: Some
|
||||||
auth_source_id:
|
auth_source_id:
|
||||||
mail_notification: false
|
mail_notification: false
|
||||||
login: someone
|
login: someone
|
||||||
type: User
|
type: User
|
||||||
users_008:
|
users_008:
|
||||||
id: 8
|
id: 8
|
||||||
created_on: 2006-07-19 19:33:19 +02:00
|
created_on: 2006-07-19 19:33:19 +02:00
|
||||||
status: 1
|
status: 1
|
||||||
last_login_on:
|
last_login_on:
|
||||||
language: 'it'
|
language: 'it'
|
||||||
hashed_password: 1
|
hashed_password: 1
|
||||||
updated_on: 2006-07-19 19:33:19 +02:00
|
updated_on: 2006-07-19 19:33:19 +02:00
|
||||||
admin: false
|
admin: false
|
||||||
mail: miscuser8@foo.bar
|
mail: miscuser8@foo.bar
|
||||||
lastname: Misc
|
lastname: Misc
|
||||||
firstname: User
|
firstname: User
|
||||||
auth_source_id:
|
auth_source_id:
|
||||||
mail_notification: false
|
mail_notification: false
|
||||||
login: miscuser8
|
login: miscuser8
|
||||||
type: User
|
type: User
|
||||||
users_009:
|
users_009:
|
||||||
id: 9
|
id: 9
|
||||||
created_on: 2006-07-19 19:33:19 +02:00
|
created_on: 2006-07-19 19:33:19 +02:00
|
||||||
status: 1
|
status: 1
|
||||||
last_login_on:
|
last_login_on:
|
||||||
language: 'it'
|
language: 'it'
|
||||||
hashed_password: 1
|
hashed_password: 1
|
||||||
updated_on: 2006-07-19 19:33:19 +02:00
|
updated_on: 2006-07-19 19:33:19 +02:00
|
||||||
admin: false
|
admin: false
|
||||||
mail: miscuser9@foo.bar
|
mail: miscuser9@foo.bar
|
||||||
lastname: Misc
|
lastname: Misc
|
||||||
firstname: User
|
firstname: User
|
||||||
auth_source_id:
|
auth_source_id:
|
||||||
mail_notification: false
|
mail_notification: false
|
||||||
login: miscuser9
|
login: miscuser9
|
||||||
type: User
|
type: User
|
||||||
groups_010:
|
groups_010:
|
||||||
id: 10
|
id: 10
|
||||||
lastname: A Team
|
lastname: A Team
|
||||||
type: Group
|
type: Group
|
||||||
groups_011:
|
groups_011:
|
||||||
id: 11
|
id: 11
|
||||||
lastname: B Team
|
lastname: B Team
|
||||||
type: Group
|
type: Group
|
||||||
|
|
||||||
|
|
|
@ -1,26 +1,26 @@
|
||||||
---
|
---
|
||||||
versions_001:
|
versions_001:
|
||||||
created_on: 2006-07-19 21:00:07 +02:00
|
created_on: 2006-07-19 21:00:07 +02:00
|
||||||
name: "0.1"
|
name: "0.1"
|
||||||
project_id: 1
|
project_id: 1
|
||||||
updated_on: 2006-07-19 21:00:07 +02:00
|
updated_on: 2006-07-19 21:00:07 +02:00
|
||||||
id: 1
|
id: 1
|
||||||
description: Beta
|
description: Beta
|
||||||
effective_date: 2006-07-01
|
effective_date: 2006-07-01
|
||||||
versions_002:
|
versions_002:
|
||||||
created_on: 2006-07-19 21:00:33 +02:00
|
created_on: 2006-07-19 21:00:33 +02:00
|
||||||
name: "1.0"
|
name: "1.0"
|
||||||
project_id: 1
|
project_id: 1
|
||||||
updated_on: 2006-07-19 21:00:33 +02:00
|
updated_on: 2006-07-19 21:00:33 +02:00
|
||||||
id: 2
|
id: 2
|
||||||
description: Stable release
|
description: Stable release
|
||||||
effective_date: <%= 20.day.from_now.to_date.to_s(:db) %>
|
effective_date: <%= 20.day.from_now.to_date.to_s(:db) %>
|
||||||
versions_003:
|
versions_003:
|
||||||
created_on: 2006-07-19 21:00:33 +02:00
|
created_on: 2006-07-19 21:00:33 +02:00
|
||||||
name: "2.0"
|
name: "2.0"
|
||||||
project_id: 1
|
project_id: 1
|
||||||
updated_on: 2006-07-19 21:00:33 +02:00
|
updated_on: 2006-07-19 21:00:33 +02:00
|
||||||
id: 3
|
id: 3
|
||||||
description: Future version
|
description: Future version
|
||||||
effective_date:
|
effective_date:
|
||||||
|
|
|
@ -1,52 +1,56 @@
|
||||||
---
|
---
|
||||||
wiki_content_versions_001:
|
wiki_content_versions_001:
|
||||||
updated_on: 2007-03-07 00:08:07 +01:00
|
updated_on: 2007-03-07 00:08:07 +01:00
|
||||||
page_id: 1
|
page_id: 1
|
||||||
id: 1
|
id: 1
|
||||||
version: 1
|
version: 1
|
||||||
author_id: 2
|
author_id: 2
|
||||||
comments: Page creation
|
comments: Page creation
|
||||||
wiki_content_id: 1
|
wiki_content_id: 1
|
||||||
compression: ""
|
compression: ""
|
||||||
data: |-
|
data: |-
|
||||||
h1. CookBook documentation
|
h1. CookBook documentation
|
||||||
|
|
||||||
Some [[documentation]] here...
|
|
||||||
wiki_content_versions_002:
|
|
||||||
updated_on: 2007-03-07 00:08:34 +01:00
|
Some [[documentation]] here...
|
||||||
page_id: 1
|
wiki_content_versions_002:
|
||||||
id: 2
|
updated_on: 2007-03-07 00:08:34 +01:00
|
||||||
version: 2
|
page_id: 1
|
||||||
author_id: 1
|
id: 2
|
||||||
comments: Small update
|
version: 2
|
||||||
wiki_content_id: 1
|
author_id: 1
|
||||||
compression: ""
|
comments: Small update
|
||||||
data: |-
|
wiki_content_id: 1
|
||||||
h1. CookBook documentation
|
compression: ""
|
||||||
|
data: |-
|
||||||
Some updated [[documentation]] here...
|
h1. CookBook documentation
|
||||||
wiki_content_versions_003:
|
|
||||||
updated_on: 2007-03-07 00:10:51 +01:00
|
|
||||||
page_id: 1
|
|
||||||
id: 3
|
Some updated [[documentation]] here...
|
||||||
version: 3
|
wiki_content_versions_003:
|
||||||
author_id: 1
|
updated_on: 2007-03-07 00:10:51 +01:00
|
||||||
comments: ""
|
page_id: 1
|
||||||
wiki_content_id: 1
|
id: 3
|
||||||
compression: ""
|
version: 3
|
||||||
data: |-
|
author_id: 1
|
||||||
h1. CookBook documentation
|
comments: ""
|
||||||
Some updated [[documentation]] here...
|
wiki_content_id: 1
|
||||||
wiki_content_versions_004:
|
compression: ""
|
||||||
data: |-
|
data: |-
|
||||||
h1. Another page
|
h1. CookBook documentation
|
||||||
|
Some updated [[documentation]] here...
|
||||||
This is a link to a ticket: #2
|
wiki_content_versions_004:
|
||||||
updated_on: 2007-03-08 00:18:07 +01:00
|
data: |-
|
||||||
page_id: 2
|
h1. Another page
|
||||||
wiki_content_id: 2
|
|
||||||
id: 4
|
This is a link to a ticket: #2
|
||||||
version: 1
|
updated_on: 2007-03-08 00:18:07 +01:00
|
||||||
author_id: 1
|
page_id: 2
|
||||||
comments:
|
wiki_content_id: 2
|
||||||
|
id: 4
|
||||||
|
version: 1
|
||||||
|
author_id: 1
|
||||||
|
comments:
|
||||||
|
|
||||||
|
|
|
@ -1,72 +1,74 @@
|
||||||
---
|
---
|
||||||
wiki_contents_001:
|
wiki_contents_001:
|
||||||
text: |-
|
text: |-
|
||||||
h1. CookBook documentation
|
h1. CookBook documentation
|
||||||
{{child_pages}}
|
|
||||||
Some updated [[documentation]] here with gzipped history
|
{{child_pages}}
|
||||||
updated_on: 2007-03-07 00:10:51 +01:00
|
|
||||||
page_id: 1
|
Some updated [[documentation]] here with gzipped history
|
||||||
id: 1
|
updated_on: 2007-03-07 00:10:51 +01:00
|
||||||
version: 3
|
page_id: 1
|
||||||
author_id: 1
|
id: 1
|
||||||
comments: Gzip compression activated
|
version: 3
|
||||||
wiki_contents_002:
|
author_id: 1
|
||||||
text: |-
|
comments: Gzip compression activated
|
||||||
h1. Another page
|
wiki_contents_002:
|
||||||
|
text: |-
|
||||||
This is a link to a ticket: #2
|
h1. Another page
|
||||||
And this is an included page:
|
|
||||||
{{include(Page with an inline image)}}
|
This is a link to a ticket: #2
|
||||||
updated_on: 2007-03-08 00:18:07 +01:00
|
And this is an included page:
|
||||||
page_id: 2
|
{{include(Page with an inline image)}}
|
||||||
id: 2
|
updated_on: 2007-03-08 00:18:07 +01:00
|
||||||
version: 1
|
page_id: 2
|
||||||
author_id: 1
|
id: 2
|
||||||
comments:
|
version: 1
|
||||||
wiki_contents_003:
|
author_id: 1
|
||||||
text: |-
|
comments:
|
||||||
h1. Start page
|
wiki_contents_003:
|
||||||
|
text: |-
|
||||||
E-commerce web site start page
|
h1. Start page
|
||||||
updated_on: 2007-03-08 00:18:07 +01:00
|
|
||||||
page_id: 3
|
E-commerce web site start page
|
||||||
id: 3
|
updated_on: 2007-03-08 00:18:07 +01:00
|
||||||
version: 1
|
page_id: 3
|
||||||
author_id: 1
|
id: 3
|
||||||
comments:
|
version: 1
|
||||||
wiki_contents_004:
|
author_id: 1
|
||||||
text: |-
|
comments:
|
||||||
h1. Page with an inline image
|
wiki_contents_004:
|
||||||
|
text: |-
|
||||||
This is an inline image:
|
h1. Page with an inline image
|
||||||
|
|
||||||
!logo.gif!
|
This is an inline image:
|
||||||
updated_on: 2007-03-08 00:18:07 +01:00
|
|
||||||
page_id: 4
|
!logo.gif!
|
||||||
id: 4
|
updated_on: 2007-03-08 00:18:07 +01:00
|
||||||
version: 1
|
page_id: 4
|
||||||
author_id: 1
|
id: 4
|
||||||
comments:
|
version: 1
|
||||||
wiki_contents_005:
|
author_id: 1
|
||||||
text: |-
|
comments:
|
||||||
h1. Child page 1
|
wiki_contents_005:
|
||||||
|
text: |-
|
||||||
This is a child page
|
h1. Child page 1
|
||||||
updated_on: 2007-03-08 00:18:07 +01:00
|
|
||||||
page_id: 5
|
This is a child page
|
||||||
id: 5
|
updated_on: 2007-03-08 00:18:07 +01:00
|
||||||
version: 1
|
page_id: 5
|
||||||
author_id: 1
|
id: 5
|
||||||
comments:
|
version: 1
|
||||||
wiki_contents_006:
|
author_id: 1
|
||||||
text: |-
|
comments:
|
||||||
h1. Child page 2
|
wiki_contents_006:
|
||||||
|
text: |-
|
||||||
This is a child page
|
h1. Child page 2
|
||||||
updated_on: 2007-03-08 00:18:07 +01:00
|
|
||||||
page_id: 6
|
This is a child page
|
||||||
id: 6
|
updated_on: 2007-03-08 00:18:07 +01:00
|
||||||
version: 1
|
page_id: 6
|
||||||
author_id: 1
|
id: 6
|
||||||
comments:
|
version: 1
|
||||||
|
author_id: 1
|
||||||
|
comments:
|
||||||
|
|
|
@ -1,44 +1,44 @@
|
||||||
---
|
---
|
||||||
wiki_pages_001:
|
wiki_pages_001:
|
||||||
created_on: 2007-03-07 00:08:07 +01:00
|
created_on: 2007-03-07 00:08:07 +01:00
|
||||||
title: CookBook_documentation
|
title: CookBook_documentation
|
||||||
id: 1
|
id: 1
|
||||||
wiki_id: 1
|
wiki_id: 1
|
||||||
protected: true
|
protected: true
|
||||||
parent_id:
|
parent_id:
|
||||||
wiki_pages_002:
|
wiki_pages_002:
|
||||||
created_on: 2007-03-08 00:18:07 +01:00
|
created_on: 2007-03-08 00:18:07 +01:00
|
||||||
title: Another_page
|
title: Another_page
|
||||||
id: 2
|
id: 2
|
||||||
wiki_id: 1
|
wiki_id: 1
|
||||||
protected: false
|
protected: false
|
||||||
parent_id:
|
parent_id:
|
||||||
wiki_pages_003:
|
wiki_pages_003:
|
||||||
created_on: 2007-03-08 00:18:07 +01:00
|
created_on: 2007-03-08 00:18:07 +01:00
|
||||||
title: Start_page
|
title: Start_page
|
||||||
id: 3
|
id: 3
|
||||||
wiki_id: 2
|
wiki_id: 2
|
||||||
protected: false
|
protected: false
|
||||||
parent_id:
|
parent_id:
|
||||||
wiki_pages_004:
|
wiki_pages_004:
|
||||||
created_on: 2007-03-08 00:18:07 +01:00
|
created_on: 2007-03-08 00:18:07 +01:00
|
||||||
title: Page_with_an_inline_image
|
title: Page_with_an_inline_image
|
||||||
id: 4
|
id: 4
|
||||||
wiki_id: 1
|
wiki_id: 1
|
||||||
protected: false
|
protected: false
|
||||||
parent_id: 1
|
parent_id: 1
|
||||||
wiki_pages_005:
|
wiki_pages_005:
|
||||||
created_on: 2007-03-08 00:18:07 +01:00
|
created_on: 2007-03-08 00:18:07 +01:00
|
||||||
title: Child_1
|
title: Child_1
|
||||||
id: 5
|
id: 5
|
||||||
wiki_id: 1
|
wiki_id: 1
|
||||||
protected: false
|
protected: false
|
||||||
parent_id: 2
|
parent_id: 2
|
||||||
wiki_pages_006:
|
wiki_pages_006:
|
||||||
created_on: 2007-03-08 00:18:07 +01:00
|
created_on: 2007-03-08 00:18:07 +01:00
|
||||||
title: Child_2
|
title: Child_2
|
||||||
id: 6
|
id: 6
|
||||||
wiki_id: 1
|
wiki_id: 1
|
||||||
protected: false
|
protected: false
|
||||||
parent_id: 2
|
parent_id: 2
|
||||||
|
|
|
@ -1,12 +1,12 @@
|
||||||
---
|
---
|
||||||
wikis_001:
|
wikis_001:
|
||||||
status: 1
|
status: 1
|
||||||
start_page: CookBook documentation
|
start_page: CookBook documentation
|
||||||
project_id: 1
|
project_id: 1
|
||||||
id: 1
|
id: 1
|
||||||
wikis_002:
|
wikis_002:
|
||||||
status: 1
|
status: 1
|
||||||
start_page: Start page
|
start_page: Start page
|
||||||
project_id: 2
|
project_id: 2
|
||||||
id: 2
|
id: 2
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,61 +1,61 @@
|
||||||
# Redmine - project management software
|
# Redmine - project management software
|
||||||
# Copyright (C) 2006-2009 Jean-Philippe Lang
|
# Copyright (C) 2006-2009 Jean-Philippe Lang
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or
|
# This program is free software; you can redistribute it and/or
|
||||||
# modify it under the terms of the GNU General Public License
|
# modify it under the terms of the GNU General Public License
|
||||||
# as published by the Free Software Foundation; either version 2
|
# as published by the Free Software Foundation; either version 2
|
||||||
# of the License, or (at your option) any later version.
|
# of the License, or (at your option) any later version.
|
||||||
#
|
#
|
||||||
# This program is distributed in the hope that it will be useful,
|
# This program is distributed in the hope that it will be useful,
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
# GNU General Public License for more details.
|
# GNU General Public License for more details.
|
||||||
#
|
#
|
||||||
# You should have received a copy of the GNU General Public License
|
# You should have received a copy of the GNU General Public License
|
||||||
# along with this program; if not, write to the Free Software
|
# along with this program; if not, write to the Free Software
|
||||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
|
|
||||||
require File.dirname(__FILE__) + '/../test_helper'
|
require File.dirname(__FILE__) + '/../test_helper'
|
||||||
require 'custom_fields_controller'
|
require 'custom_fields_controller'
|
||||||
|
|
||||||
# Re-raise errors caught by the controller.
|
# Re-raise errors caught by the controller.
|
||||||
class CustomFieldsController; def rescue_action(e) raise e end; end
|
class CustomFieldsController; def rescue_action(e) raise e end; end
|
||||||
|
|
||||||
class CustomFieldsControllerTest < ActionController::TestCase
|
class CustomFieldsControllerTest < ActionController::TestCase
|
||||||
fixtures :custom_fields, :trackers, :users
|
fixtures :custom_fields, :trackers, :users
|
||||||
|
|
||||||
def setup
|
def setup
|
||||||
@controller = CustomFieldsController.new
|
@controller = CustomFieldsController.new
|
||||||
@request = ActionController::TestRequest.new
|
@request = ActionController::TestRequest.new
|
||||||
@response = ActionController::TestResponse.new
|
@response = ActionController::TestResponse.new
|
||||||
@request.session[:user_id] = 1
|
@request.session[:user_id] = 1
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_post_new_list_custom_field
|
def test_post_new_list_custom_field
|
||||||
assert_difference 'CustomField.count' do
|
assert_difference 'CustomField.count' do
|
||||||
post :new, :type => "IssueCustomField",
|
post :new, :type => "IssueCustomField",
|
||||||
:custom_field => {:name => "test_post_new_list",
|
:custom_field => {:name => "test_post_new_list",
|
||||||
:default_value => "",
|
:default_value => "",
|
||||||
:min_length => "0",
|
:min_length => "0",
|
||||||
:searchable => "0",
|
:searchable => "0",
|
||||||
:regexp => "",
|
:regexp => "",
|
||||||
:is_for_all => "1",
|
:is_for_all => "1",
|
||||||
:possible_values => "0.1\n0.2\n",
|
:possible_values => "0.1\n0.2\n",
|
||||||
:max_length => "0",
|
:max_length => "0",
|
||||||
:is_filter => "0",
|
:is_filter => "0",
|
||||||
:is_required =>"0",
|
:is_required =>"0",
|
||||||
:field_format => "list",
|
:field_format => "list",
|
||||||
:tracker_ids => ["1", ""]}
|
:tracker_ids => ["1", ""]}
|
||||||
end
|
end
|
||||||
assert_redirected_to '/custom_fields?tab=IssueCustomField'
|
assert_redirected_to '/custom_fields?tab=IssueCustomField'
|
||||||
field = IssueCustomField.find_by_name('test_post_new_list')
|
field = IssueCustomField.find_by_name('test_post_new_list')
|
||||||
assert_not_nil field
|
assert_not_nil field
|
||||||
assert_equal ["0.1", "0.2"], field.possible_values
|
assert_equal ["0.1", "0.2"], field.possible_values
|
||||||
assert_equal 1, field.trackers.size
|
assert_equal 1, field.trackers.size
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_invalid_custom_field_class_should_redirect_to_list
|
def test_invalid_custom_field_class_should_redirect_to_list
|
||||||
get :new, :type => 'UnknownCustomField'
|
get :new, :type => 'UnknownCustomField'
|
||||||
assert_redirected_to '/custom_fields'
|
assert_redirected_to '/custom_fields'
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,85 +1,85 @@
|
||||||
# Redmine - project management software
|
# Redmine - project management software
|
||||||
# Copyright (C) 2006-2009 Jean-Philippe Lang
|
# Copyright (C) 2006-2009 Jean-Philippe Lang
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or
|
# This program is free software; you can redistribute it and/or
|
||||||
# modify it under the terms of the GNU General Public License
|
# modify it under the terms of the GNU General Public License
|
||||||
# as published by the Free Software Foundation; either version 2
|
# as published by the Free Software Foundation; either version 2
|
||||||
# of the License, or (at your option) any later version.
|
# of the License, or (at your option) any later version.
|
||||||
#
|
#
|
||||||
# This program is distributed in the hope that it will be useful,
|
# This program is distributed in the hope that it will be useful,
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
# GNU General Public License for more details.
|
# GNU General Public License for more details.
|
||||||
#
|
#
|
||||||
# You should have received a copy of the GNU General Public License
|
# You should have received a copy of the GNU General Public License
|
||||||
# along with this program; if not, write to the Free Software
|
# along with this program; if not, write to the Free Software
|
||||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
|
|
||||||
require File.dirname(__FILE__) + '/../../test_helper'
|
require File.dirname(__FILE__) + '/../../test_helper'
|
||||||
|
|
||||||
class SortHelperTest < HelperTestCase
|
class SortHelperTest < HelperTestCase
|
||||||
include SortHelper
|
include SortHelper
|
||||||
|
|
||||||
def setup
|
def setup
|
||||||
@session = nil
|
@session = nil
|
||||||
@sort_param = nil
|
@sort_param = nil
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_default_sort_clause_with_array
|
def test_default_sort_clause_with_array
|
||||||
sort_init 'attr1', 'desc'
|
sort_init 'attr1', 'desc'
|
||||||
sort_update(['attr1', 'attr2'])
|
sort_update(['attr1', 'attr2'])
|
||||||
|
|
||||||
assert_equal 'attr1 DESC', sort_clause
|
assert_equal 'attr1 DESC', sort_clause
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_default_sort_clause_with_hash
|
def test_default_sort_clause_with_hash
|
||||||
sort_init 'attr1', 'desc'
|
sort_init 'attr1', 'desc'
|
||||||
sort_update({'attr1' => 'table1.attr1', 'attr2' => 'table2.attr2'})
|
sort_update({'attr1' => 'table1.attr1', 'attr2' => 'table2.attr2'})
|
||||||
|
|
||||||
assert_equal 'table1.attr1 DESC', sort_clause
|
assert_equal 'table1.attr1 DESC', sort_clause
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_default_sort_clause_with_multiple_columns
|
def test_default_sort_clause_with_multiple_columns
|
||||||
sort_init 'attr1', 'desc'
|
sort_init 'attr1', 'desc'
|
||||||
sort_update({'attr1' => ['table1.attr1', 'table1.attr2'], 'attr2' => 'table2.attr2'})
|
sort_update({'attr1' => ['table1.attr1', 'table1.attr2'], 'attr2' => 'table2.attr2'})
|
||||||
|
|
||||||
assert_equal 'table1.attr1 DESC, table1.attr2 DESC', sort_clause
|
assert_equal 'table1.attr1 DESC, table1.attr2 DESC', sort_clause
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_params_sort
|
def test_params_sort
|
||||||
@sort_param = 'attr1,attr2:desc'
|
@sort_param = 'attr1,attr2:desc'
|
||||||
|
|
||||||
sort_init 'attr1', 'desc'
|
sort_init 'attr1', 'desc'
|
||||||
sort_update({'attr1' => 'table1.attr1', 'attr2' => 'table2.attr2'})
|
sort_update({'attr1' => 'table1.attr1', 'attr2' => 'table2.attr2'})
|
||||||
|
|
||||||
assert_equal 'table1.attr1, table2.attr2 DESC', sort_clause
|
assert_equal 'table1.attr1, table2.attr2 DESC', sort_clause
|
||||||
assert_equal 'attr1,attr2:desc', @session['foo_bar_sort']
|
assert_equal 'attr1,attr2:desc', @session['foo_bar_sort']
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_invalid_params_sort
|
def test_invalid_params_sort
|
||||||
@sort_param = 'invalid_key'
|
@sort_param = 'invalid_key'
|
||||||
|
|
||||||
sort_init 'attr1', 'desc'
|
sort_init 'attr1', 'desc'
|
||||||
sort_update({'attr1' => 'table1.attr1', 'attr2' => 'table2.attr2'})
|
sort_update({'attr1' => 'table1.attr1', 'attr2' => 'table2.attr2'})
|
||||||
|
|
||||||
assert_equal 'table1.attr1 DESC', sort_clause
|
assert_equal 'table1.attr1 DESC', sort_clause
|
||||||
assert_equal 'attr1:desc', @session['foo_bar_sort']
|
assert_equal 'attr1:desc', @session['foo_bar_sort']
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_invalid_order_params_sort
|
def test_invalid_order_params_sort
|
||||||
@sort_param = 'attr1:foo:bar,attr2'
|
@sort_param = 'attr1:foo:bar,attr2'
|
||||||
|
|
||||||
sort_init 'attr1', 'desc'
|
sort_init 'attr1', 'desc'
|
||||||
sort_update({'attr1' => 'table1.attr1', 'attr2' => 'table2.attr2'})
|
sort_update({'attr1' => 'table1.attr1', 'attr2' => 'table2.attr2'})
|
||||||
|
|
||||||
assert_equal 'table1.attr1, table2.attr2', sort_clause
|
assert_equal 'table1.attr1, table2.attr2', sort_clause
|
||||||
assert_equal 'attr1,attr2', @session['foo_bar_sort']
|
assert_equal 'attr1,attr2', @session['foo_bar_sort']
|
||||||
end
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
def controller_name; 'foo'; end
|
def controller_name; 'foo'; end
|
||||||
def action_name; 'bar'; end
|
def action_name; 'bar'; end
|
||||||
def params; {:sort => @sort_param}; end
|
def params; {:sort => @sort_param}; end
|
||||||
def session; @session ||= {}; end
|
def session; @session ||= {}; end
|
||||||
end
|
end
|
||||||
|
|
|
@ -24,21 +24,21 @@ class MemberTest < ActiveSupport::TestCase
|
||||||
@jsmith = Member.find(1)
|
@jsmith = Member.find(1)
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_create
|
def test_create
|
||||||
member = Member.new(:project_id => 1, :user_id => 4, :role_ids => [1, 2])
|
member = Member.new(:project_id => 1, :user_id => 4, :role_ids => [1, 2])
|
||||||
assert member.save
|
assert member.save
|
||||||
member.reload
|
member.reload
|
||||||
|
|
||||||
assert_equal 2, member.roles.size
|
assert_equal 2, member.roles.size
|
||||||
assert_equal Role.find(1), member.roles.sort.first
|
assert_equal Role.find(1), member.roles.sort.first
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_update
|
def test_update
|
||||||
assert_equal "eCookbook", @jsmith.project.name
|
assert_equal "eCookbook", @jsmith.project.name
|
||||||
assert_equal "Manager", @jsmith.roles.first.name
|
assert_equal "Manager", @jsmith.roles.first.name
|
||||||
assert_equal "jsmith", @jsmith.user.login
|
assert_equal "jsmith", @jsmith.user.login
|
||||||
|
|
||||||
@jsmith.mail_notification = !@jsmith.mail_notification
|
@jsmith.mail_notification = !@jsmith.mail_notification
|
||||||
assert @jsmith.save
|
assert @jsmith.save
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -48,24 +48,24 @@ class MemberTest < ActiveSupport::TestCase
|
||||||
assert @jsmith.save
|
assert @jsmith.save
|
||||||
assert_equal 2, @jsmith.reload.roles.size
|
assert_equal 2, @jsmith.reload.roles.size
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_validate
|
def test_validate
|
||||||
member = Member.new(:project_id => 1, :user_id => 2, :role_ids => [2])
|
member = Member.new(:project_id => 1, :user_id => 2, :role_ids => [2])
|
||||||
# same use can't have more than one membership for a project
|
# same use can't have more than one membership for a project
|
||||||
assert !member.save
|
assert !member.save
|
||||||
|
|
||||||
member = Member.new(:project_id => 1, :user_id => 2, :role_ids => [])
|
member = Member.new(:project_id => 1, :user_id => 2, :role_ids => [])
|
||||||
# must have one role at least
|
# must have one role at least
|
||||||
assert !member.save
|
assert !member.save
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_destroy
|
def test_destroy
|
||||||
assert_difference 'Member.count', -1 do
|
assert_difference 'Member.count', -1 do
|
||||||
assert_difference 'MemberRole.count', -1 do
|
assert_difference 'MemberRole.count', -1 do
|
||||||
@jsmith.destroy
|
@jsmith.destroy
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
assert_raise(ActiveRecord::RecordNotFound) { Member.find(@jsmith.id) }
|
assert_raise(ActiveRecord::RecordNotFound) { Member.find(@jsmith.id) }
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,355 +1,355 @@
|
||||||
# redMine - project management software
|
# redMine - project management software
|
||||||
# Copyright (C) 2006-2007 Jean-Philippe Lang
|
# Copyright (C) 2006-2007 Jean-Philippe Lang
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or
|
# This program is free software; you can redistribute it and/or
|
||||||
# modify it under the terms of the GNU General Public License
|
# modify it under the terms of the GNU General Public License
|
||||||
# as published by the Free Software Foundation; either version 2
|
# as published by the Free Software Foundation; either version 2
|
||||||
# of the License, or (at your option) any later version.
|
# of the License, or (at your option) any later version.
|
||||||
#
|
#
|
||||||
# This program is distributed in the hope that it will be useful,
|
# This program is distributed in the hope that it will be useful,
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
# GNU General Public License for more details.
|
# GNU General Public License for more details.
|
||||||
#
|
#
|
||||||
# You should have received a copy of the GNU General Public License
|
# You should have received a copy of the GNU General Public License
|
||||||
# along with this program; if not, write to the Free Software
|
# along with this program; if not, write to the Free Software
|
||||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
|
|
||||||
require File.dirname(__FILE__) + '/../test_helper'
|
|
||||||
|
|
||||||
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
|
require File.dirname(__FILE__) + '/../test_helper'
|
||||||
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
|
class ProjectTest < ActiveSupport::TestCase
|
||||||
source_project = Project.find(1)
|
fixtures :projects, :enabled_modules,
|
||||||
copied_project = Project.copy_from(1)
|
:issues, :issue_statuses, :journals, :journal_details,
|
||||||
|
:users, :members, :member_roles, :roles, :projects_trackers, :trackers, :boards,
|
||||||
assert copied_project
|
:queries
|
||||||
# Cleared attributes
|
|
||||||
assert copied_project.id.blank?
|
def setup
|
||||||
assert copied_project.name.blank?
|
@ecookbook = Project.find(1)
|
||||||
assert copied_project.identifier.blank?
|
@ecookbook_sub1 = Project.find(3)
|
||||||
|
end
|
||||||
# Duplicated attributes
|
|
||||||
assert_equal source_project.description, copied_project.description
|
def test_truth
|
||||||
assert_equal source_project.enabled_modules, copied_project.enabled_modules
|
assert_kind_of Project, @ecookbook
|
||||||
assert_equal source_project.trackers, copied_project.trackers
|
assert_equal "eCookbook", @ecookbook.name
|
||||||
|
end
|
||||||
# Default attributes
|
|
||||||
assert_equal 1, copied_project.status
|
def test_update
|
||||||
end
|
assert_equal "eCookbook", @ecookbook.name
|
||||||
|
@ecookbook.name = "eCook"
|
||||||
# Context: Project#copy
|
assert @ecookbook.save, @ecookbook.errors.full_messages.join("; ")
|
||||||
def test_copy_should_copy_issues
|
@ecookbook.reload
|
||||||
# Setup
|
assert_equal "eCook", @ecookbook.name
|
||||||
ProjectCustomField.destroy_all # Custom values are a mess to isolate in tests
|
end
|
||||||
source_project = Project.find(2)
|
|
||||||
Project.destroy_all :identifier => "copy-test"
|
def test_validate
|
||||||
project = Project.new(:name => 'Copy Test', :identifier => 'copy-test')
|
@ecookbook.name = ""
|
||||||
project.trackers = source_project.trackers
|
assert !@ecookbook.save
|
||||||
assert project.valid?
|
assert_equal 1, @ecookbook.errors.count
|
||||||
|
assert_equal I18n.translate('activerecord.errors.messages.blank'), @ecookbook.errors.on(:name)
|
||||||
assert project.issues.empty?
|
end
|
||||||
assert project.copy(source_project)
|
|
||||||
|
def test_validate_identifier
|
||||||
# Tests
|
to_test = {"abc" => true,
|
||||||
assert_equal source_project.issues.size, project.issues.size
|
"ab12" => true,
|
||||||
project.issues.each do |issue|
|
"ab-12" => true,
|
||||||
assert issue.valid?
|
"12" => false,
|
||||||
assert ! issue.assigned_to.blank?
|
"new" => false}
|
||||||
assert_equal project, issue.project
|
|
||||||
end
|
to_test.each do |identifier, valid|
|
||||||
end
|
p = Project.new
|
||||||
|
p.identifier = identifier
|
||||||
def test_copy_should_copy_members
|
p.valid?
|
||||||
# Setup
|
assert_equal valid, p.errors.on('identifier').nil?
|
||||||
ProjectCustomField.destroy_all # Custom values are a mess to isolate in tests
|
end
|
||||||
source_project = Project.find(2)
|
end
|
||||||
project = Project.new(:name => 'Copy Test', :identifier => 'copy-test')
|
|
||||||
project.trackers = source_project.trackers
|
def test_members_should_be_active_users
|
||||||
project.enabled_modules = source_project.enabled_modules
|
Project.all.each do |project|
|
||||||
assert project.valid?
|
assert_nil project.members.detect {|m| !(m.user.is_a?(User) && m.user.active?) }
|
||||||
|
end
|
||||||
assert project.members.empty?
|
end
|
||||||
assert project.copy(source_project)
|
|
||||||
|
def test_users_should_be_active_users
|
||||||
# Tests
|
Project.all.each do |project|
|
||||||
assert_equal source_project.members.size, project.members.size
|
assert_nil project.users.detect {|u| !(u.is_a?(User) && u.active?) }
|
||||||
project.members.each do |member|
|
end
|
||||||
assert member
|
end
|
||||||
assert_equal project, member.project
|
|
||||||
end
|
def test_archive
|
||||||
end
|
user = @ecookbook.members.first.user
|
||||||
|
@ecookbook.archive
|
||||||
def test_copy_should_copy_project_level_queries
|
@ecookbook.reload
|
||||||
# Setup
|
|
||||||
ProjectCustomField.destroy_all # Custom values are a mess to isolate in tests
|
assert !@ecookbook.active?
|
||||||
source_project = Project.find(2)
|
assert !user.projects.include?(@ecookbook)
|
||||||
project = Project.new(:name => 'Copy Test', :identifier => 'copy-test')
|
# Subproject are also archived
|
||||||
project.trackers = source_project.trackers
|
assert !@ecookbook.children.empty?
|
||||||
project.enabled_modules = source_project.enabled_modules
|
assert @ecookbook.descendants.active.empty?
|
||||||
assert project.valid?
|
end
|
||||||
|
|
||||||
assert project.queries.empty?
|
def test_unarchive
|
||||||
assert project.copy(source_project)
|
user = @ecookbook.members.first.user
|
||||||
|
@ecookbook.archive
|
||||||
# Tests
|
# A subproject of an archived project can not be unarchived
|
||||||
assert_equal source_project.queries.size, project.queries.size
|
assert !@ecookbook_sub1.unarchive
|
||||||
project.queries.each do |query|
|
|
||||||
assert query
|
# Unarchive project
|
||||||
assert_equal project, query.project
|
assert @ecookbook.unarchive
|
||||||
end
|
@ecookbook.reload
|
||||||
end
|
assert @ecookbook.active?
|
||||||
|
assert user.projects.include?(@ecookbook)
|
||||||
end
|
# 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
|
||||||
|
|
|
@ -32,17 +32,17 @@ class RepositoryTest < ActiveSupport::TestCase
|
||||||
def setup
|
def setup
|
||||||
@repository = Project.find(1).repository
|
@repository = Project.find(1).repository
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_create
|
def test_create
|
||||||
repository = Repository::Subversion.new(:project => Project.find(3))
|
repository = Repository::Subversion.new(:project => Project.find(3))
|
||||||
assert !repository.save
|
assert !repository.save
|
||||||
|
|
||||||
repository.url = "svn://localhost"
|
repository.url = "svn://localhost"
|
||||||
assert repository.save
|
assert repository.save
|
||||||
repository.reload
|
repository.reload
|
||||||
|
|
||||||
project = Project.find(3)
|
project = Project.find(3)
|
||||||
assert_equal repository, project.repository
|
assert_equal repository, project.repository
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_destroy
|
def test_destroy
|
||||||
|
|
|
@ -1,223 +1,223 @@
|
||||||
# redMine - project management software
|
# redMine - project management software
|
||||||
# Copyright (C) 2006 Jean-Philippe Lang
|
# Copyright (C) 2006 Jean-Philippe Lang
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or
|
# This program is free software; you can redistribute it and/or
|
||||||
# modify it under the terms of the GNU General Public License
|
# modify it under the terms of the GNU General Public License
|
||||||
# as published by the Free Software Foundation; either version 2
|
# as published by the Free Software Foundation; either version 2
|
||||||
# of the License, or (at your option) any later version.
|
# of the License, or (at your option) any later version.
|
||||||
#
|
#
|
||||||
# This program is distributed in the hope that it will be useful,
|
# This program is distributed in the hope that it will be useful,
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
# GNU General Public License for more details.
|
# GNU General Public License for more details.
|
||||||
#
|
#
|
||||||
# You should have received a copy of the GNU General Public License
|
# You should have received a copy of the GNU General Public License
|
||||||
# along with this program; if not, write to the Free Software
|
# along with this program; if not, write to the Free Software
|
||||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
|
|
||||||
require File.dirname(__FILE__) + '/../test_helper'
|
require File.dirname(__FILE__) + '/../test_helper'
|
||||||
|
|
||||||
class UserTest < ActiveSupport::TestCase
|
class UserTest < ActiveSupport::TestCase
|
||||||
fixtures :users, :members, :projects, :roles, :member_roles
|
fixtures :users, :members, :projects, :roles, :member_roles
|
||||||
|
|
||||||
def setup
|
def setup
|
||||||
@admin = User.find(1)
|
@admin = User.find(1)
|
||||||
@jsmith = User.find(2)
|
@jsmith = User.find(2)
|
||||||
@dlopper = User.find(3)
|
@dlopper = User.find(3)
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_truth
|
def test_truth
|
||||||
assert_kind_of User, @jsmith
|
assert_kind_of User, @jsmith
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_create
|
def test_create
|
||||||
user = User.new(:firstname => "new", :lastname => "user", :mail => "newuser@somenet.foo")
|
user = User.new(:firstname => "new", :lastname => "user", :mail => "newuser@somenet.foo")
|
||||||
|
|
||||||
user.login = "jsmith"
|
user.login = "jsmith"
|
||||||
user.password, user.password_confirmation = "password", "password"
|
user.password, user.password_confirmation = "password", "password"
|
||||||
# login uniqueness
|
# login uniqueness
|
||||||
assert !user.save
|
assert !user.save
|
||||||
assert_equal 1, user.errors.count
|
assert_equal 1, user.errors.count
|
||||||
|
|
||||||
user.login = "newuser"
|
user.login = "newuser"
|
||||||
user.password, user.password_confirmation = "passwd", "password"
|
user.password, user.password_confirmation = "passwd", "password"
|
||||||
# password confirmation
|
# password confirmation
|
||||||
assert !user.save
|
assert !user.save
|
||||||
assert_equal 1, user.errors.count
|
assert_equal 1, user.errors.count
|
||||||
|
|
||||||
user.password, user.password_confirmation = "password", "password"
|
user.password, user.password_confirmation = "password", "password"
|
||||||
assert user.save
|
assert user.save
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_mail_uniqueness_should_not_be_case_sensitive
|
def test_mail_uniqueness_should_not_be_case_sensitive
|
||||||
u = User.new(:firstname => "new", :lastname => "user", :mail => "newuser@somenet.foo")
|
u = User.new(:firstname => "new", :lastname => "user", :mail => "newuser@somenet.foo")
|
||||||
u.login = 'newuser1'
|
u.login = 'newuser1'
|
||||||
u.password, u.password_confirmation = "password", "password"
|
u.password, u.password_confirmation = "password", "password"
|
||||||
assert u.save
|
assert u.save
|
||||||
|
|
||||||
u = User.new(:firstname => "new", :lastname => "user", :mail => "newUser@Somenet.foo")
|
u = User.new(:firstname => "new", :lastname => "user", :mail => "newUser@Somenet.foo")
|
||||||
u.login = 'newuser2'
|
u.login = 'newuser2'
|
||||||
u.password, u.password_confirmation = "password", "password"
|
u.password, u.password_confirmation = "password", "password"
|
||||||
assert !u.save
|
assert !u.save
|
||||||
assert_equal I18n.translate('activerecord.errors.messages.taken'), u.errors.on(:mail)
|
assert_equal I18n.translate('activerecord.errors.messages.taken'), u.errors.on(:mail)
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_update
|
def test_update
|
||||||
assert_equal "admin", @admin.login
|
assert_equal "admin", @admin.login
|
||||||
@admin.login = "john"
|
@admin.login = "john"
|
||||||
assert @admin.save, @admin.errors.full_messages.join("; ")
|
assert @admin.save, @admin.errors.full_messages.join("; ")
|
||||||
@admin.reload
|
@admin.reload
|
||||||
assert_equal "john", @admin.login
|
assert_equal "john", @admin.login
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_destroy
|
def test_destroy
|
||||||
User.find(2).destroy
|
User.find(2).destroy
|
||||||
assert_nil User.find_by_id(2)
|
assert_nil User.find_by_id(2)
|
||||||
assert Member.find_all_by_user_id(2).empty?
|
assert Member.find_all_by_user_id(2).empty?
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_validate
|
def test_validate
|
||||||
@admin.login = ""
|
@admin.login = ""
|
||||||
assert !@admin.save
|
assert !@admin.save
|
||||||
assert_equal 1, @admin.errors.count
|
assert_equal 1, @admin.errors.count
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_password
|
def test_password
|
||||||
user = User.try_to_login("admin", "admin")
|
user = User.try_to_login("admin", "admin")
|
||||||
assert_kind_of User, user
|
assert_kind_of User, user
|
||||||
assert_equal "admin", user.login
|
assert_equal "admin", user.login
|
||||||
user.password = "hello"
|
user.password = "hello"
|
||||||
assert user.save
|
assert user.save
|
||||||
|
|
||||||
user = User.try_to_login("admin", "hello")
|
user = User.try_to_login("admin", "hello")
|
||||||
assert_kind_of User, user
|
assert_kind_of User, user
|
||||||
assert_equal "admin", user.login
|
assert_equal "admin", user.login
|
||||||
assert_equal User.hash_password("hello"), user.hashed_password
|
assert_equal User.hash_password("hello"), user.hashed_password
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_name_format
|
def test_name_format
|
||||||
assert_equal 'Smith, John', @jsmith.name(:lastname_coma_firstname)
|
assert_equal 'Smith, John', @jsmith.name(:lastname_coma_firstname)
|
||||||
Setting.user_format = :firstname_lastname
|
Setting.user_format = :firstname_lastname
|
||||||
assert_equal 'John Smith', @jsmith.reload.name
|
assert_equal 'John Smith', @jsmith.reload.name
|
||||||
Setting.user_format = :username
|
Setting.user_format = :username
|
||||||
assert_equal 'jsmith', @jsmith.reload.name
|
assert_equal 'jsmith', @jsmith.reload.name
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_lock
|
def test_lock
|
||||||
user = User.try_to_login("jsmith", "jsmith")
|
user = User.try_to_login("jsmith", "jsmith")
|
||||||
assert_equal @jsmith, user
|
assert_equal @jsmith, user
|
||||||
|
|
||||||
@jsmith.status = User::STATUS_LOCKED
|
@jsmith.status = User::STATUS_LOCKED
|
||||||
assert @jsmith.save
|
assert @jsmith.save
|
||||||
|
|
||||||
user = User.try_to_login("jsmith", "jsmith")
|
user = User.try_to_login("jsmith", "jsmith")
|
||||||
assert_equal nil, user
|
assert_equal nil, user
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_create_anonymous
|
def test_create_anonymous
|
||||||
AnonymousUser.delete_all
|
AnonymousUser.delete_all
|
||||||
anon = User.anonymous
|
anon = User.anonymous
|
||||||
assert !anon.new_record?
|
assert !anon.new_record?
|
||||||
assert_kind_of AnonymousUser, anon
|
assert_kind_of AnonymousUser, anon
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_rss_key
|
def test_rss_key
|
||||||
assert_nil @jsmith.rss_token
|
assert_nil @jsmith.rss_token
|
||||||
key = @jsmith.rss_key
|
key = @jsmith.rss_key
|
||||||
assert_equal 40, key.length
|
assert_equal 40, key.length
|
||||||
|
|
||||||
@jsmith.reload
|
@jsmith.reload
|
||||||
assert_equal key, @jsmith.rss_key
|
assert_equal key, @jsmith.rss_key
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_roles_for_project
|
def test_roles_for_project
|
||||||
# user with a role
|
# user with a role
|
||||||
roles = @jsmith.roles_for_project(Project.find(1))
|
roles = @jsmith.roles_for_project(Project.find(1))
|
||||||
assert_kind_of Role, roles.first
|
assert_kind_of Role, roles.first
|
||||||
assert_equal "Manager", roles.first.name
|
assert_equal "Manager", roles.first.name
|
||||||
|
|
||||||
# user with no role
|
# user with no role
|
||||||
assert_nil @dlopper.roles_for_project(Project.find(2)).detect {|role| role.member?}
|
assert_nil @dlopper.roles_for_project(Project.find(2)).detect {|role| role.member?}
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_mail_notification_all
|
def test_mail_notification_all
|
||||||
@jsmith.mail_notification = true
|
@jsmith.mail_notification = true
|
||||||
@jsmith.notified_project_ids = []
|
@jsmith.notified_project_ids = []
|
||||||
@jsmith.save
|
@jsmith.save
|
||||||
@jsmith.reload
|
@jsmith.reload
|
||||||
assert @jsmith.projects.first.recipients.include?(@jsmith.mail)
|
assert @jsmith.projects.first.recipients.include?(@jsmith.mail)
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_mail_notification_selected
|
def test_mail_notification_selected
|
||||||
@jsmith.mail_notification = false
|
@jsmith.mail_notification = false
|
||||||
@jsmith.notified_project_ids = [1]
|
@jsmith.notified_project_ids = [1]
|
||||||
@jsmith.save
|
@jsmith.save
|
||||||
@jsmith.reload
|
@jsmith.reload
|
||||||
assert Project.find(1).recipients.include?(@jsmith.mail)
|
assert Project.find(1).recipients.include?(@jsmith.mail)
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_mail_notification_none
|
def test_mail_notification_none
|
||||||
@jsmith.mail_notification = false
|
@jsmith.mail_notification = false
|
||||||
@jsmith.notified_project_ids = []
|
@jsmith.notified_project_ids = []
|
||||||
@jsmith.save
|
@jsmith.save
|
||||||
@jsmith.reload
|
@jsmith.reload
|
||||||
assert !@jsmith.projects.first.recipients.include?(@jsmith.mail)
|
assert !@jsmith.projects.first.recipients.include?(@jsmith.mail)
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_comments_sorting_preference
|
def test_comments_sorting_preference
|
||||||
assert !@jsmith.wants_comments_in_reverse_order?
|
assert !@jsmith.wants_comments_in_reverse_order?
|
||||||
@jsmith.pref.comments_sorting = 'asc'
|
@jsmith.pref.comments_sorting = 'asc'
|
||||||
assert !@jsmith.wants_comments_in_reverse_order?
|
assert !@jsmith.wants_comments_in_reverse_order?
|
||||||
@jsmith.pref.comments_sorting = 'desc'
|
@jsmith.pref.comments_sorting = 'desc'
|
||||||
assert @jsmith.wants_comments_in_reverse_order?
|
assert @jsmith.wants_comments_in_reverse_order?
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_find_by_mail_should_be_case_insensitive
|
def test_find_by_mail_should_be_case_insensitive
|
||||||
u = User.find_by_mail('JSmith@somenet.foo')
|
u = User.find_by_mail('JSmith@somenet.foo')
|
||||||
assert_not_nil u
|
assert_not_nil u
|
||||||
assert_equal 'jsmith@somenet.foo', u.mail
|
assert_equal 'jsmith@somenet.foo', u.mail
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_random_password
|
def test_random_password
|
||||||
u = User.new
|
u = User.new
|
||||||
u.random_password
|
u.random_password
|
||||||
assert !u.password.blank?
|
assert !u.password.blank?
|
||||||
assert !u.password_confirmation.blank?
|
assert !u.password_confirmation.blank?
|
||||||
end
|
end
|
||||||
|
|
||||||
if Object.const_defined?(:OpenID)
|
if Object.const_defined?(:OpenID)
|
||||||
|
|
||||||
def test_setting_identity_url
|
def test_setting_identity_url
|
||||||
normalized_open_id_url = 'http://example.com/'
|
normalized_open_id_url = 'http://example.com/'
|
||||||
u = User.new( :identity_url => 'http://example.com/' )
|
u = User.new( :identity_url => 'http://example.com/' )
|
||||||
assert_equal normalized_open_id_url, u.identity_url
|
assert_equal normalized_open_id_url, u.identity_url
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_setting_identity_url_without_trailing_slash
|
def test_setting_identity_url_without_trailing_slash
|
||||||
normalized_open_id_url = 'http://example.com/'
|
normalized_open_id_url = 'http://example.com/'
|
||||||
u = User.new( :identity_url => 'http://example.com' )
|
u = User.new( :identity_url => 'http://example.com' )
|
||||||
assert_equal normalized_open_id_url, u.identity_url
|
assert_equal normalized_open_id_url, u.identity_url
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_setting_identity_url_without_protocol
|
def test_setting_identity_url_without_protocol
|
||||||
normalized_open_id_url = 'http://example.com/'
|
normalized_open_id_url = 'http://example.com/'
|
||||||
u = User.new( :identity_url => 'example.com' )
|
u = User.new( :identity_url => 'example.com' )
|
||||||
assert_equal normalized_open_id_url, u.identity_url
|
assert_equal normalized_open_id_url, u.identity_url
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_setting_blank_identity_url
|
def test_setting_blank_identity_url
|
||||||
u = User.new( :identity_url => 'example.com' )
|
u = User.new( :identity_url => 'example.com' )
|
||||||
u.identity_url = ''
|
u.identity_url = ''
|
||||||
assert u.identity_url.blank?
|
assert u.identity_url.blank?
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_setting_invalid_identity_url
|
def test_setting_invalid_identity_url
|
||||||
u = User.new( :identity_url => 'this is not an openid url' )
|
u = User.new( :identity_url => 'this is not an openid url' )
|
||||||
assert u.identity_url.blank?
|
assert u.identity_url.blank?
|
||||||
end
|
end
|
||||||
|
|
||||||
else
|
else
|
||||||
puts "Skipping openid tests."
|
puts "Skipping openid tests."
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
|
@ -24,18 +24,18 @@ class WikiPageTest < ActiveSupport::TestCase
|
||||||
@wiki = Wiki.find(1)
|
@wiki = Wiki.find(1)
|
||||||
@page = @wiki.pages.first
|
@page = @wiki.pages.first
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_create
|
def test_create
|
||||||
page = WikiPage.new(:wiki => @wiki)
|
page = WikiPage.new(:wiki => @wiki)
|
||||||
assert !page.save
|
assert !page.save
|
||||||
assert_equal 1, page.errors.count
|
assert_equal 1, page.errors.count
|
||||||
|
|
||||||
page.title = "Page"
|
page.title = "Page"
|
||||||
assert page.save
|
assert page.save
|
||||||
page.reload
|
page.reload
|
||||||
|
|
||||||
@wiki.reload
|
@wiki.reload
|
||||||
assert @wiki.pages.include?(page)
|
assert @wiki.pages.include?(page)
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_find_or_new_page
|
def test_find_or_new_page
|
||||||
|
|
|
@ -19,15 +19,15 @@ require File.dirname(__FILE__) + '/../test_helper'
|
||||||
|
|
||||||
class WikiTest < ActiveSupport::TestCase
|
class WikiTest < ActiveSupport::TestCase
|
||||||
fixtures :wikis, :wiki_pages, :wiki_contents, :wiki_content_versions
|
fixtures :wikis, :wiki_pages, :wiki_contents, :wiki_content_versions
|
||||||
|
|
||||||
def test_create
|
def test_create
|
||||||
wiki = Wiki.new(:project => Project.find(2))
|
wiki = Wiki.new(:project => Project.find(2))
|
||||||
assert !wiki.save
|
assert !wiki.save
|
||||||
assert_equal 1, wiki.errors.count
|
assert_equal 1, wiki.errors.count
|
||||||
|
|
||||||
wiki.start_page = "Start page"
|
wiki.start_page = "Start page"
|
||||||
assert wiki.save
|
assert wiki.save
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_update
|
def test_update
|
||||||
@wiki = Wiki.find(1)
|
@wiki = Wiki.find(1)
|
||||||
|
|
Loading…
Reference in New Issue