update tests to work with the new data model, where neccessary
This commit is contained in:
parent
81e97d23a8
commit
1f9eda4e0d
@ -19,6 +19,12 @@ require "digest/md5"
|
|||||||
|
|
||||||
class Attachment < ActiveRecord::Base
|
class Attachment < ActiveRecord::Base
|
||||||
belongs_to :container, :polymorphic => true
|
belongs_to :container, :polymorphic => true
|
||||||
|
|
||||||
|
# FIXME: Remove these once the Versions, Documents and Projects themselves can provide file events
|
||||||
|
belongs_to :version, :foreign_key => "container_id"
|
||||||
|
belongs_to :document, :foreign_key => "container_id"
|
||||||
|
belongs_to :project, :foreign_key => "container_id"
|
||||||
|
|
||||||
belongs_to :author, :class_name => "User", :foreign_key => "author_id"
|
belongs_to :author, :class_name => "User", :foreign_key => "author_id"
|
||||||
|
|
||||||
validates_presence_of :container, :filename, :author
|
validates_presence_of :container, :filename, :author
|
||||||
@ -31,16 +37,24 @@ class Attachment < ActiveRecord::Base
|
|||||||
:id => o.versioned_id, :filename => o.filename }
|
:id => o.versioned_id, :filename => o.filename }
|
||||||
end),
|
end),
|
||||||
:activity_type => 'files',
|
:activity_type => 'files',
|
||||||
:activity_permission => :view_files
|
:activity_permission => :view_files,
|
||||||
|
:activity_find_options => { :include => { :version => :project } }
|
||||||
|
|
||||||
acts_as_activity :type => 'documents', :permission => :view_documents
|
acts_as_activity :type => 'documents', :permission => :view_documents,
|
||||||
|
:find_options => { :include => { :document => :project } }
|
||||||
|
|
||||||
|
# This method is called on save by the AttachmentJournal in order to
|
||||||
|
# decide which kind of activity we are dealing with. When that activity
|
||||||
|
# is retrieved later, we don't need to check the container_type in
|
||||||
|
# SQL anymore as that will be just the one we have specified here.
|
||||||
def activity_type
|
def activity_type
|
||||||
case container_type
|
case container_type
|
||||||
when "Document"
|
when "Document"
|
||||||
"documents"
|
"documents"
|
||||||
when "Version"
|
when "Version"
|
||||||
"files"
|
"files"
|
||||||
|
when "Project"
|
||||||
|
"files"
|
||||||
else
|
else
|
||||||
super
|
super
|
||||||
end
|
end
|
||||||
|
@ -775,5 +775,13 @@ class Issue < ActiveRecord::Base
|
|||||||
group by s.id, s.is_closed, j.id")
|
group by s.id, s.is_closed, j.id")
|
||||||
end
|
end
|
||||||
|
|
||||||
|
IssueJournal.class_eval do
|
||||||
|
# Shortcut
|
||||||
|
def new_status
|
||||||
|
if details.keys.include? 'status_id'
|
||||||
|
(newval = details['status_id'].last) ? IssueStatus.find_by_id(newval.to_i) : nil
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
@ -197,7 +197,7 @@ class MailHandler < ActionMailer::Base
|
|||||||
# Reply will be added to the issue
|
# Reply will be added to the issue
|
||||||
def receive_journal_reply(journal_id)
|
def receive_journal_reply(journal_id)
|
||||||
journal = Journal.find_by_id(journal_id)
|
journal = Journal.find_by_id(journal_id)
|
||||||
if journal && journal.versioned.is_a? Issue
|
if journal and journal.versioned.is_a? Issue
|
||||||
receive_issue_reply(journal.versioned_id)
|
receive_issue_reply(journal.versioned_id)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -19,6 +19,7 @@ class Mailer < ActionMailer::Base
|
|||||||
layout 'mailer'
|
layout 'mailer'
|
||||||
helper :application
|
helper :application
|
||||||
helper :issues
|
helper :issues
|
||||||
|
helper :journals
|
||||||
helper :custom_fields
|
helper :custom_fields
|
||||||
|
|
||||||
include ActionController::UrlWriter
|
include ActionController::UrlWriter
|
||||||
|
@ -31,7 +31,8 @@ class Message < ActiveRecord::Base
|
|||||||
else
|
else
|
||||||
{:id => o.parent_id, :r => o.id, :anchor => "message-#{o.id}"}
|
{:id => o.parent_id, :r => o.id, :anchor => "message-#{o.id}"}
|
||||||
end.reverse_merge :controller => 'messages', :action => 'show', :board_id => o.board_id
|
end.reverse_merge :controller => 'messages', :action => 'show', :board_id => o.board_id
|
||||||
end)
|
end),
|
||||||
|
:activity_find_options => { :include => { :board => :project } }
|
||||||
|
|
||||||
acts_as_searchable :columns => ['subject', 'content'],
|
acts_as_searchable :columns => ['subject', 'content'],
|
||||||
:include => {:board => :project},
|
:include => {:board => :project},
|
||||||
|
@ -27,7 +27,8 @@ class WikiContent < ActiveRecord::Base
|
|||||||
:event_title => Proc.new {|o| "#{l(:label_wiki_edit)}: #{o.page.title} (##{o.version})"},
|
:event_title => Proc.new {|o| "#{l(:label_wiki_edit)}: #{o.page.title} (##{o.version})"},
|
||||||
:event_url => Proc.new {|o| {:controller => 'wiki', :id => o.page.wiki.project_id, :page => o.page.title, :version => o.version}},
|
:event_url => Proc.new {|o| {:controller => 'wiki', :id => o.page.wiki.project_id, :page => o.page.title, :version => o.version}},
|
||||||
:activity_type => 'wiki_edits',
|
:activity_type => 'wiki_edits',
|
||||||
:activity_permission => :view_wiki_edits
|
:activity_permission => :view_wiki_edits,
|
||||||
|
:activity_find_options => { :include => { :page => { :wiki => :project } } }
|
||||||
|
|
||||||
def activity_type
|
def activity_type
|
||||||
'wiki_edits'
|
'wiki_edits'
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<% for detail in @journal.details %>
|
<% for detail in @journal.details %>
|
||||||
<li><%= show_detail(detail, true) %></li>
|
<li><%= @journal.render_detail(detail, true) %></li>
|
||||||
<% end %>
|
<% end %>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
<%= l(:text_issue_updated, :id => "##{@issue.id}", :author => @journal.user) %>
|
<%= l(:text_issue_updated, :id => "##{@issue.id}", :author => @journal.user) %>
|
||||||
|
|
||||||
<% for detail in @journal.details -%>
|
<% for detail in @journal.details -%>
|
||||||
<%= show_detail(detail, true) %>
|
<%= @journal.render_detail(detail, true) %>
|
||||||
<% end -%>
|
<% end -%>
|
||||||
|
|
||||||
<%= @journal.notes if @journal.notes? %>
|
<%= @journal.notes if @journal.notes? %>
|
||||||
|
@ -2,7 +2,7 @@ class RenameCommentToComments < ActiveRecord::Migration
|
|||||||
def self.up
|
def self.up
|
||||||
rename_column(:comments, :comment, :comments) if ActiveRecord::Base.connection.columns(Comment.table_name).detect{|c| c.name == "comment"}
|
rename_column(:comments, :comment, :comments) if ActiveRecord::Base.connection.columns(Comment.table_name).detect{|c| c.name == "comment"}
|
||||||
rename_column(:wiki_contents, :comment, :comments) if ActiveRecord::Base.connection.columns(WikiContent.table_name).detect{|c| c.name == "comment"}
|
rename_column(:wiki_contents, :comment, :comments) if ActiveRecord::Base.connection.columns(WikiContent.table_name).detect{|c| c.name == "comment"}
|
||||||
rename_column(:wiki_content_versions, :comment, :comments) if ActiveRecord::Base.connection.columns(WikiContent.versioned_table_name).detect{|c| c.name == "comment"}
|
rename_column(:wiki_content_versions, :comment, :comments) if ActiveRecord::Base.connection.columns("wiki_content_versions").detect{|c| c.name == "comment"}
|
||||||
rename_column(:time_entries, :comment, :comments) if ActiveRecord::Base.connection.columns(TimeEntry.table_name).detect{|c| c.name == "comment"}
|
rename_column(:time_entries, :comment, :comments) if ActiveRecord::Base.connection.columns(TimeEntry.table_name).detect{|c| c.name == "comment"}
|
||||||
rename_column(:changesets, :comment, :comments) if ActiveRecord::Base.connection.columns(Changeset.table_name).detect{|c| c.name == "comment"}
|
rename_column(:changesets, :comment, :comments) if ActiveRecord::Base.connection.columns(Changeset.table_name).detect{|c| c.name == "comment"}
|
||||||
end
|
end
|
||||||
|
@ -38,11 +38,11 @@ module Redmine
|
|||||||
return @event_types unless @event_types.nil?
|
return @event_types unless @event_types.nil?
|
||||||
|
|
||||||
@event_types = Redmine::Activity.available_event_types
|
@event_types = Redmine::Activity.available_event_types
|
||||||
@event_types = @event_types.select do |o|
|
if @project
|
||||||
permissions = constantized_providers(o).collect do |p|
|
@event_types = @event_types.select do |o|
|
||||||
p.activity_provider_options[o].try(:[], :permission)
|
permissions = constantized_providers(o).collect do |p|
|
||||||
end.compact
|
p.activity_provider_options[o].try(:[], :permission)
|
||||||
if @project
|
end.compact
|
||||||
return @user.allowed_to?("view_#{o}".to_sym, @project) if permissions.blank?
|
return @user.allowed_to?("view_#{o}".to_sym, @project) if permissions.blank?
|
||||||
permissions.all? {|p| @user.allowed_to?(p, @project) } if @project
|
permissions.all? {|p| @user.allowed_to?(p, @project) } if @project
|
||||||
end
|
end
|
||||||
|
22
test/fixtures/journal_details.yml
vendored
22
test/fixtures/journal_details.yml
vendored
@ -1,22 +0,0 @@
|
|||||||
---
|
|
||||||
journal_details_001:
|
|
||||||
old_value: "1"
|
|
||||||
property: attr
|
|
||||||
id: 1
|
|
||||||
value: "2"
|
|
||||||
prop_key: status_id
|
|
||||||
journal_id: 1
|
|
||||||
journal_details_002:
|
|
||||||
old_value: "40"
|
|
||||||
property: attr
|
|
||||||
id: 2
|
|
||||||
value: "30"
|
|
||||||
prop_key: done_ratio
|
|
||||||
journal_id: 1
|
|
||||||
journal_details_003:
|
|
||||||
old_value: nil
|
|
||||||
property: attr
|
|
||||||
id: 3
|
|
||||||
value: "6"
|
|
||||||
prop_key: fixed_version_id
|
|
||||||
journal_id: 4
|
|
183
test/fixtures/journals.yml
vendored
183
test/fixtures/journals.yml
vendored
@ -1,29 +1,180 @@
|
|||||||
---
|
---
|
||||||
journals_001:
|
journals_001:
|
||||||
created_on: <%= 2.days.ago.to_date.to_s(:db) %>
|
|
||||||
notes: "Journal notes"
|
|
||||||
id: 1
|
id: 1
|
||||||
journalized_type: Issue
|
type: "IssueJournal"
|
||||||
|
activity_type: "issues"
|
||||||
|
created_at: <%= 2.days.ago.to_date.to_s(:db) %>
|
||||||
|
version: 1
|
||||||
user_id: 1
|
user_id: 1
|
||||||
journalized_id: 1
|
notes: "Journal notes"
|
||||||
|
versioned_id: 1
|
||||||
|
changes: |
|
||||||
|
---
|
||||||
|
status_id:
|
||||||
|
- 1
|
||||||
|
- 2
|
||||||
|
done_ratio:
|
||||||
|
- 40
|
||||||
|
- 30
|
||||||
journals_002:
|
journals_002:
|
||||||
created_on: <%= 1.days.ago.to_date.to_s(:db) %>
|
|
||||||
notes: "Some notes with Redmine links: #2, r2."
|
|
||||||
id: 2
|
id: 2
|
||||||
journalized_type: Issue
|
type: "IssueJournal"
|
||||||
|
activity_type: "issues"
|
||||||
|
created_at: <%= 1.days.ago.to_date.to_s(:db) %>
|
||||||
|
version: 2
|
||||||
user_id: 2
|
user_id: 2
|
||||||
journalized_id: 1
|
notes: "Some notes with Redmine links: #2, r2."
|
||||||
|
versioned_id: 1
|
||||||
|
changes: "--- {}"
|
||||||
journals_003:
|
journals_003:
|
||||||
created_on: <%= 1.days.ago.to_date.to_s(:db) %>
|
|
||||||
notes: "A comment with inline image: !picture.jpg!"
|
|
||||||
id: 3
|
id: 3
|
||||||
journalized_type: Issue
|
type: "IssueJournal"
|
||||||
|
activity_type: "issues"
|
||||||
|
created_at: <%= 1.days.ago.to_date.to_s(:db) %>
|
||||||
|
version: 1
|
||||||
user_id: 2
|
user_id: 2
|
||||||
journalized_id: 2
|
notes: "A comment with inline image: !picture.jpg!"
|
||||||
|
versioned_id: 2
|
||||||
|
changes: "--- {}"
|
||||||
journals_004:
|
journals_004:
|
||||||
created_on: <%= 1.days.ago.to_date.to_s(:db) %>
|
|
||||||
notes: "A comment with a private version."
|
|
||||||
id: 4
|
id: 4
|
||||||
journalized_type: Issue
|
type: "IssueJournal"
|
||||||
|
activity_type: "issues"
|
||||||
|
created_at: <%= 1.days.ago.to_date.to_s(:db) %>
|
||||||
|
version: 1
|
||||||
|
user_id: 2
|
||||||
|
notes: "A comment with a private version."
|
||||||
|
versioned_id: 6
|
||||||
|
changes: |
|
||||||
|
---
|
||||||
|
fixed_version_id:
|
||||||
|
-
|
||||||
|
- 6
|
||||||
|
journals_005:
|
||||||
|
id: 5
|
||||||
|
type: "IssueJournal"
|
||||||
|
activity_type: "issues"
|
||||||
|
created_at: <%= 1.days.ago.to_date.to_s(:db) %>
|
||||||
|
version: 0
|
||||||
user_id: 1
|
user_id: 1
|
||||||
journalized_id: 6
|
notes:
|
||||||
|
versioned_id: 5
|
||||||
|
changes: "--- {}"
|
||||||
|
journals_006:
|
||||||
|
id: 6
|
||||||
|
type: "WikiContentJournal"
|
||||||
|
activity_type: "wiki_edits"
|
||||||
|
created_at: 2007-03-07 00:08:07 +01:00
|
||||||
|
version: 1
|
||||||
|
user_id: 2
|
||||||
|
notes: Page creation
|
||||||
|
versioned_id: 1
|
||||||
|
changes: |
|
||||||
|
---
|
||||||
|
compression: ""
|
||||||
|
data: |-
|
||||||
|
h1. CookBook documentation
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Some [[documentation]] here...
|
||||||
|
journals_007:
|
||||||
|
id: 7
|
||||||
|
type: "WikiContentJournal"
|
||||||
|
activity_type: "wiki_edits"
|
||||||
|
created_at: 2007-03-07 00:08:34 +01:00
|
||||||
|
version: 2
|
||||||
|
user_id: 1
|
||||||
|
notes: Small update
|
||||||
|
versioned_id: 1
|
||||||
|
changes: |
|
||||||
|
---
|
||||||
|
compression: ""
|
||||||
|
data: |-
|
||||||
|
h1. CookBook documentation
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Some updated [[documentation]] here...
|
||||||
|
journals_008:
|
||||||
|
id: 8
|
||||||
|
type: "WikiContentJournal"
|
||||||
|
activity_type: "wiki_edits"
|
||||||
|
created_at: 2007-03-07 00:10:51 +01:00
|
||||||
|
version: 3
|
||||||
|
user_id: 1
|
||||||
|
notes: ""
|
||||||
|
versioned_id: 1
|
||||||
|
changes: |
|
||||||
|
---
|
||||||
|
compression: ""
|
||||||
|
data: |-
|
||||||
|
h1. CookBook documentation
|
||||||
|
Some updated [[documentation]] here...
|
||||||
|
journals_009:
|
||||||
|
id: 9
|
||||||
|
type: "WikiContentJournal"
|
||||||
|
activity_type: "wiki_edits"
|
||||||
|
created_at: 2007-03-08 00:18:07 +01:00
|
||||||
|
version: 1
|
||||||
|
user_id: 1
|
||||||
|
notes:
|
||||||
|
versioned_id: 2
|
||||||
|
changes: |
|
||||||
|
---
|
||||||
|
data: |-
|
||||||
|
h1. Another page
|
||||||
|
|
||||||
|
This is a link to a ticket: #2
|
||||||
|
|
||||||
|
|
||||||
|
journals_010:
|
||||||
|
id: 10
|
||||||
|
type: "MessageJournal"
|
||||||
|
activity_type: "messages"
|
||||||
|
created_at: <%= 2.days.ago.to_date.to_s(:db) %>
|
||||||
|
version: 1
|
||||||
|
user_id: 1
|
||||||
|
notes:
|
||||||
|
versioned_id: 5
|
||||||
|
changes: --- {}
|
||||||
|
journals_011:
|
||||||
|
id: 11
|
||||||
|
type: "AttachmentJournal"
|
||||||
|
activity_type: "files"
|
||||||
|
created_at: <%= 2.days.ago.to_date.to_s(:db) %>
|
||||||
|
version: 1
|
||||||
|
user_id: 2
|
||||||
|
notes: "An attachment on a version"
|
||||||
|
versioned_id: 9
|
||||||
|
changes: --- {}
|
||||||
|
journals_012:
|
||||||
|
id: 12
|
||||||
|
type: "AttachmentJournal"
|
||||||
|
activity_type: "files"
|
||||||
|
created_at: <%= 2.days.ago.to_date.to_s(:db) %>
|
||||||
|
version: 1
|
||||||
|
user_id: 2
|
||||||
|
notes: "An attachment on a project"
|
||||||
|
versioned_id: 8
|
||||||
|
changes: --- {}
|
||||||
|
journals_013:
|
||||||
|
id: 13
|
||||||
|
type: "AttachmentJournal"
|
||||||
|
activity_type: "files"
|
||||||
|
created_at: <%= 2.days.ago.to_date.to_s(:db) %>
|
||||||
|
version: 1
|
||||||
|
user_id: 2
|
||||||
|
notes: "An attachment on an issue"
|
||||||
|
versioned_id: 7
|
||||||
|
changes: --- {}
|
||||||
|
journals_014:
|
||||||
|
id: 14
|
||||||
|
type: "AttachmentJournal"
|
||||||
|
activity_type: "documents"
|
||||||
|
created_at: <%= 2.days.ago.to_date.to_s(:db) %>
|
||||||
|
version: 1
|
||||||
|
user_id: 2
|
||||||
|
notes: "An attachment on a document"
|
||||||
|
versioned_id: 2
|
||||||
|
changes: --- {}
|
56
test/fixtures/wiki_content_versions.yml
vendored
56
test/fixtures/wiki_content_versions.yml
vendored
@ -1,56 +0,0 @@
|
|||||||
---
|
|
||||||
wiki_content_versions_001:
|
|
||||||
updated_on: 2007-03-07 00:08:07 +01:00
|
|
||||||
page_id: 1
|
|
||||||
id: 1
|
|
||||||
version: 1
|
|
||||||
author_id: 2
|
|
||||||
comments: Page creation
|
|
||||||
wiki_content_id: 1
|
|
||||||
compression: ""
|
|
||||||
data: |-
|
|
||||||
h1. CookBook documentation
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Some [[documentation]] here...
|
|
||||||
wiki_content_versions_002:
|
|
||||||
updated_on: 2007-03-07 00:08:34 +01:00
|
|
||||||
page_id: 1
|
|
||||||
id: 2
|
|
||||||
version: 2
|
|
||||||
author_id: 1
|
|
||||||
comments: Small update
|
|
||||||
wiki_content_id: 1
|
|
||||||
compression: ""
|
|
||||||
data: |-
|
|
||||||
h1. CookBook documentation
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Some updated [[documentation]] here...
|
|
||||||
wiki_content_versions_003:
|
|
||||||
updated_on: 2007-03-07 00:10:51 +01:00
|
|
||||||
page_id: 1
|
|
||||||
id: 3
|
|
||||||
version: 3
|
|
||||||
author_id: 1
|
|
||||||
comments: ""
|
|
||||||
wiki_content_id: 1
|
|
||||||
compression: ""
|
|
||||||
data: |-
|
|
||||||
h1. CookBook documentation
|
|
||||||
Some updated [[documentation]] here...
|
|
||||||
wiki_content_versions_004:
|
|
||||||
data: |-
|
|
||||||
h1. Another page
|
|
||||||
|
|
||||||
This is a link to a ticket: #2
|
|
||||||
updated_on: 2007-03-08 00:18:07 +01:00
|
|
||||||
page_id: 2
|
|
||||||
wiki_content_id: 2
|
|
||||||
id: 4
|
|
||||||
version: 1
|
|
||||||
author_id: 1
|
|
||||||
comments:
|
|
||||||
|
|
19
test/fixtures/wiki_contents.yml
vendored
19
test/fixtures/wiki_contents.yml
vendored
@ -9,7 +9,7 @@ wiki_contents_001:
|
|||||||
updated_on: 2007-03-07 00:10:51 +01:00
|
updated_on: 2007-03-07 00:10:51 +01:00
|
||||||
page_id: 1
|
page_id: 1
|
||||||
id: 1
|
id: 1
|
||||||
version: 3
|
lock_version: 3
|
||||||
author_id: 1
|
author_id: 1
|
||||||
comments: Gzip compression activated
|
comments: Gzip compression activated
|
||||||
wiki_contents_002:
|
wiki_contents_002:
|
||||||
@ -22,7 +22,7 @@ wiki_contents_002:
|
|||||||
updated_on: 2007-03-08 00:18:07 +01:00
|
updated_on: 2007-03-08 00:18:07 +01:00
|
||||||
page_id: 2
|
page_id: 2
|
||||||
id: 2
|
id: 2
|
||||||
version: 1
|
lock_version: 1
|
||||||
author_id: 1
|
author_id: 1
|
||||||
comments:
|
comments:
|
||||||
wiki_contents_003:
|
wiki_contents_003:
|
||||||
@ -33,7 +33,7 @@ wiki_contents_003:
|
|||||||
updated_on: 2007-03-08 00:18:07 +01:00
|
updated_on: 2007-03-08 00:18:07 +01:00
|
||||||
page_id: 3
|
page_id: 3
|
||||||
id: 3
|
id: 3
|
||||||
version: 1
|
lock_version: 1
|
||||||
author_id: 1
|
author_id: 1
|
||||||
comments:
|
comments:
|
||||||
wiki_contents_004:
|
wiki_contents_004:
|
||||||
@ -46,7 +46,7 @@ wiki_contents_004:
|
|||||||
updated_on: 2007-03-08 00:18:07 +01:00
|
updated_on: 2007-03-08 00:18:07 +01:00
|
||||||
page_id: 4
|
page_id: 4
|
||||||
id: 4
|
id: 4
|
||||||
version: 1
|
lock_version: 1
|
||||||
author_id: 1
|
author_id: 1
|
||||||
comments:
|
comments:
|
||||||
wiki_contents_005:
|
wiki_contents_005:
|
||||||
@ -57,7 +57,7 @@ wiki_contents_005:
|
|||||||
updated_on: 2007-03-08 00:18:07 +01:00
|
updated_on: 2007-03-08 00:18:07 +01:00
|
||||||
page_id: 5
|
page_id: 5
|
||||||
id: 5
|
id: 5
|
||||||
version: 1
|
lock_version: 1
|
||||||
author_id: 1
|
author_id: 1
|
||||||
comments:
|
comments:
|
||||||
wiki_contents_006:
|
wiki_contents_006:
|
||||||
@ -68,7 +68,7 @@ wiki_contents_006:
|
|||||||
updated_on: 2007-03-08 00:18:07 +01:00
|
updated_on: 2007-03-08 00:18:07 +01:00
|
||||||
page_id: 6
|
page_id: 6
|
||||||
id: 6
|
id: 6
|
||||||
version: 1
|
lock_version: 1
|
||||||
author_id: 1
|
author_id: 1
|
||||||
comments:
|
comments:
|
||||||
wiki_contents_007:
|
wiki_contents_007:
|
||||||
@ -76,7 +76,7 @@ wiki_contents_007:
|
|||||||
updated_on: 2007-03-08 00:18:07 +01:00
|
updated_on: 2007-03-08 00:18:07 +01:00
|
||||||
page_id: 7
|
page_id: 7
|
||||||
id: 7
|
id: 7
|
||||||
version: 1
|
lock_version: 1
|
||||||
author_id: 1
|
author_id: 1
|
||||||
comments:
|
comments:
|
||||||
wiki_contents_008:
|
wiki_contents_008:
|
||||||
@ -84,7 +84,7 @@ wiki_contents_008:
|
|||||||
updated_on: 2007-03-08 00:18:07 +01:00
|
updated_on: 2007-03-08 00:18:07 +01:00
|
||||||
page_id: 8
|
page_id: 8
|
||||||
id: 8
|
id: 8
|
||||||
version: 1
|
lock_version: 1
|
||||||
author_id: 1
|
author_id: 1
|
||||||
comments:
|
comments:
|
||||||
wiki_contents_009:
|
wiki_contents_009:
|
||||||
@ -92,7 +92,6 @@ wiki_contents_009:
|
|||||||
updated_on: 2007-03-08 00:18:07 +01:00
|
updated_on: 2007-03-08 00:18:07 +01:00
|
||||||
page_id: 9
|
page_id: 9
|
||||||
id: 9
|
id: 9
|
||||||
version: 1
|
lock_version: 1
|
||||||
author_id: 1
|
author_id: 1
|
||||||
comments:
|
comments:
|
||||||
|
|
@ -43,7 +43,6 @@ class IssuesControllerTest < ActionController::TestCase
|
|||||||
:custom_fields_trackers,
|
:custom_fields_trackers,
|
||||||
:time_entries,
|
:time_entries,
|
||||||
:journals,
|
:journals,
|
||||||
:journal_details,
|
|
||||||
:queries
|
:queries
|
||||||
|
|
||||||
def setup
|
def setup
|
||||||
@ -671,14 +670,16 @@ class IssuesControllerTest < ActionController::TestCase
|
|||||||
old_subject = issue.subject
|
old_subject = issue.subject
|
||||||
new_subject = 'Subject modified by IssuesControllerTest#test_post_edit'
|
new_subject = 'Subject modified by IssuesControllerTest#test_post_edit'
|
||||||
|
|
||||||
assert_difference('Journal.count') do
|
assert_difference('IssueJournal.count') do
|
||||||
assert_difference('JournalDetail.count', 2) do
|
put :update, :id => 1, :issue => {:subject => new_subject,
|
||||||
put :update, :id => 1, :issue => {:subject => new_subject,
|
:priority_id => '6',
|
||||||
:priority_id => '6',
|
:category_id => '1' # no change
|
||||||
:category_id => '1' # no change
|
}
|
||||||
}
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
assert Issue.current_journal.changes.has_key? "subject"
|
||||||
|
assert Issue.current_journal.changes.has_key? "priority_id"
|
||||||
|
assert !Issue.current_journal.changes.has_key? "category_id"
|
||||||
|
|
||||||
assert_redirected_to :action => 'show', :id => '1'
|
assert_redirected_to :action => 'show', :id => '1'
|
||||||
issue.reload
|
issue.reload
|
||||||
assert_equal new_subject, issue.subject
|
assert_equal new_subject, issue.subject
|
||||||
@ -697,14 +698,17 @@ class IssuesControllerTest < ActionController::TestCase
|
|||||||
assert_equal '125', issue.custom_value_for(2).value
|
assert_equal '125', issue.custom_value_for(2).value
|
||||||
|
|
||||||
assert_difference('Journal.count') do
|
assert_difference('Journal.count') do
|
||||||
assert_difference('JournalDetail.count', 3) do
|
put :update, :id => 1, :issue => {:subject => 'Custom field change',
|
||||||
put :update, :id => 1, :issue => {:subject => 'Custom field change',
|
:priority_id => '6',
|
||||||
:priority_id => '6',
|
:category_id => '1', # no change
|
||||||
:category_id => '1', # no change
|
:custom_field_values => { '2' => 'New custom value' }
|
||||||
:custom_field_values => { '2' => 'New custom value' }
|
}
|
||||||
}
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
assert Issue.current_journal.changes.has_key? "subject"
|
||||||
|
assert Issue.current_journal.changes.has_key? "priority_id"
|
||||||
|
assert !Issue.current_journal.changes.has_key? "category_id"
|
||||||
|
assert Issue.current_journal.changes.has_key? "2"
|
||||||
|
|
||||||
assert_redirected_to :action => 'show', :id => '1'
|
assert_redirected_to :action => 'show', :id => '1'
|
||||||
issue.reload
|
issue.reload
|
||||||
assert_equal 'New custom value', issue.custom_value_for(2).value
|
assert_equal 'New custom value', issue.custom_value_for(2).value
|
||||||
|
@ -43,7 +43,6 @@ class IssuesControllerTransactionTest < ActionController::TestCase
|
|||||||
:custom_fields_trackers,
|
:custom_fields_trackers,
|
||||||
:time_entries,
|
:time_entries,
|
||||||
:journals,
|
:journals,
|
||||||
:journal_details,
|
|
||||||
:queries
|
:queries
|
||||||
|
|
||||||
self.use_transactional_fixtures = false
|
self.use_transactional_fixtures = false
|
||||||
|
@ -22,7 +22,7 @@ require 'journals_controller'
|
|||||||
class JournalsController; def rescue_action(e) raise e end; end
|
class JournalsController; def rescue_action(e) raise e end; end
|
||||||
|
|
||||||
class JournalsControllerTest < ActionController::TestCase
|
class JournalsControllerTest < ActionController::TestCase
|
||||||
fixtures :projects, :users, :members, :member_roles, :roles, :issues, :journals, :journal_details, :enabled_modules
|
fixtures :projects, :users, :members, :member_roles, :roles, :issues, :journals, :enabled_modules
|
||||||
|
|
||||||
def setup
|
def setup
|
||||||
@controller = JournalsController.new
|
@controller = JournalsController.new
|
||||||
|
@ -22,7 +22,7 @@ require 'projects_controller'
|
|||||||
class ProjectsController; def rescue_action(e) raise e end; end
|
class ProjectsController; def rescue_action(e) raise e end; end
|
||||||
|
|
||||||
class ProjectsControllerTest < ActionController::TestCase
|
class ProjectsControllerTest < ActionController::TestCase
|
||||||
fixtures :projects, :versions, :users, :roles, :members, :member_roles, :issues, :journals, :journal_details,
|
fixtures :projects, :versions, :users, :roles, :members, :member_roles, :issues, :journals,
|
||||||
:trackers, :projects_trackers, :issue_statuses, :enabled_modules, :enumerations, :boards, :messages,
|
:trackers, :projects_trackers, :issue_statuses, :enabled_modules, :enumerations, :boards, :messages,
|
||||||
:attachments, :custom_fields, :custom_values, :time_entries
|
:attachments, :custom_fields, :custom_values, :time_entries
|
||||||
|
|
||||||
|
@ -22,7 +22,7 @@ require 'wiki_controller'
|
|||||||
class WikiController; def rescue_action(e) raise e end; end
|
class WikiController; def rescue_action(e) raise e end; end
|
||||||
|
|
||||||
class WikiControllerTest < ActionController::TestCase
|
class WikiControllerTest < ActionController::TestCase
|
||||||
fixtures :projects, :users, :roles, :members, :member_roles, :enabled_modules, :wikis, :wiki_pages, :wiki_contents, :wiki_content_versions, :attachments
|
fixtures :projects, :users, :roles, :members, :member_roles, :enabled_modules, :wikis, :wiki_pages, :wiki_contents, :journals, :attachments
|
||||||
|
|
||||||
def setup
|
def setup
|
||||||
@controller = WikiController.new
|
@controller = WikiController.new
|
||||||
|
@ -39,7 +39,6 @@ class IssuesApiTest < ActionController::IntegrationTest
|
|||||||
:custom_fields_trackers,
|
:custom_fields_trackers,
|
||||||
:time_entries,
|
:time_entries,
|
||||||
:journals,
|
:journals,
|
||||||
:journal_details,
|
|
||||||
:queries
|
:queries
|
||||||
|
|
||||||
def setup
|
def setup
|
||||||
|
@ -18,7 +18,7 @@
|
|||||||
require "#{File.dirname(__FILE__)}/../test_helper"
|
require "#{File.dirname(__FILE__)}/../test_helper"
|
||||||
|
|
||||||
class ProjectsApiTest < ActionController::IntegrationTest
|
class ProjectsApiTest < ActionController::IntegrationTest
|
||||||
fixtures :projects, :versions, :users, :roles, :members, :member_roles, :issues, :journals, :journal_details,
|
fixtures :projects, :versions, :users, :roles, :members, :member_roles, :issues, :journals,
|
||||||
:trackers, :projects_trackers, :issue_statuses, :enabled_modules, :enumerations, :boards, :messages,
|
:trackers, :projects_trackers, :issue_statuses, :enabled_modules, :enumerations, :boards, :messages,
|
||||||
:attachments, :custom_fields, :custom_values, :time_entries
|
:attachments, :custom_fields, :custom_values, :time_entries
|
||||||
|
|
||||||
|
@ -144,21 +144,17 @@ class ActiveSupport::TestCase
|
|||||||
end
|
end
|
||||||
|
|
||||||
should "use the new value's name" do
|
should "use the new value's name" do
|
||||||
@detail = JournalDetail.generate!(:property => 'attr',
|
@detail = IssueJournal.generate(:version => 1)
|
||||||
:old_value => @old_value.id,
|
@detail.update_attribute(:changes, {prop_key => [@old_value.id, @new_value.id]}.to_yaml)
|
||||||
:value => @new_value.id,
|
|
||||||
:prop_key => prop_key)
|
|
||||||
|
|
||||||
assert_match @new_value.name, show_detail(@detail, true)
|
assert_match @new_value.name, @detail.render_detail(prop_key, true)
|
||||||
end
|
end
|
||||||
|
|
||||||
should "use the old value's name" do
|
should "use the old value's name" do
|
||||||
@detail = JournalDetail.generate!(:property => 'attr',
|
@detail = IssueJournal.generate(:version => 1)
|
||||||
:old_value => @old_value.id,
|
@detail.update_attribute(:changes, {prop_key => [@old_value.id, @new_value.id]}.to_yaml)
|
||||||
:value => @new_value.id,
|
|
||||||
:prop_key => prop_key)
|
|
||||||
|
|
||||||
assert_match @old_value.name, show_detail(@detail, true)
|
assert_match @old_value.name, @detail.render_detail(prop_key, true)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -18,7 +18,7 @@
|
|||||||
require File.dirname(__FILE__) + '/../test_helper'
|
require File.dirname(__FILE__) + '/../test_helper'
|
||||||
|
|
||||||
class ActivityTest < ActiveSupport::TestCase
|
class ActivityTest < ActiveSupport::TestCase
|
||||||
fixtures :projects, :versions, :attachments, :users, :roles, :members, :member_roles, :issues, :journals, :journal_details,
|
fixtures :projects, :versions, :attachments, :users, :roles, :members, :member_roles, :issues, :journals,
|
||||||
:trackers, :projects_trackers, :issue_statuses, :enabled_modules, :enumerations, :boards, :messages
|
:trackers, :projects_trackers, :issue_statuses, :enabled_modules, :enumerations, :boards, :messages
|
||||||
|
|
||||||
def setup
|
def setup
|
||||||
@ -28,7 +28,6 @@ class ActivityTest < ActiveSupport::TestCase
|
|||||||
def test_activity_without_subprojects
|
def test_activity_without_subprojects
|
||||||
events = find_events(User.anonymous, :project => @project)
|
events = find_events(User.anonymous, :project => @project)
|
||||||
assert_not_nil events
|
assert_not_nil events
|
||||||
|
|
||||||
assert events.include?(Issue.find(1))
|
assert events.include?(Issue.find(1))
|
||||||
assert !events.include?(Issue.find(4))
|
assert !events.include?(Issue.find(4))
|
||||||
# subproject issue
|
# subproject issue
|
||||||
@ -51,7 +50,7 @@ class ActivityTest < ActiveSupport::TestCase
|
|||||||
assert events.include?(Issue.find(1))
|
assert events.include?(Issue.find(1))
|
||||||
assert events.include?(Message.find(5))
|
assert events.include?(Message.find(5))
|
||||||
# Issue of a private project
|
# Issue of a private project
|
||||||
assert !events.include?(Issue.find(4))
|
assert !events.include?(Issue.find(6))
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_global_activity_logged_user
|
def test_global_activity_logged_user
|
||||||
@ -60,7 +59,7 @@ class ActivityTest < ActiveSupport::TestCase
|
|||||||
|
|
||||||
assert events.include?(Issue.find(1))
|
assert events.include?(Issue.find(1))
|
||||||
# Issue of a private project the user belongs to
|
# Issue of a private project the user belongs to
|
||||||
assert events.include?(Issue.find(4))
|
assert events.include?(Issue.find(6))
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_user_activity
|
def test_user_activity
|
||||||
@ -87,6 +86,9 @@ class ActivityTest < ActiveSupport::TestCase
|
|||||||
private
|
private
|
||||||
|
|
||||||
def find_events(user, options={})
|
def find_events(user, options={})
|
||||||
Redmine::Activity::Fetcher.new(user, options).events(Date.today - 30, Date.today + 1)
|
events = Redmine::Activity::Fetcher.new(user, options).events(Date.today - 30, Date.today + 1)
|
||||||
|
# Because events are provided by the journals, but we want to test for
|
||||||
|
# their targets here, transform that
|
||||||
|
events.group_by(&:versioned).keys
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -551,18 +551,19 @@ class IssueTest < ActiveSupport::TestCase
|
|||||||
assert_difference 'Journal.count' do
|
assert_difference 'Journal.count' do
|
||||||
assert i.save
|
assert i.save
|
||||||
end
|
end
|
||||||
|
assert i.current_journal.changes.has_key? "subject"
|
||||||
|
assert i.current_journal.changes.has_key? "done_ratio"
|
||||||
|
|
||||||
# 1 more change
|
# 1 more change
|
||||||
i.priority = IssuePriority.find(:first, :conditions => ["id <> ?", i.priority_id])
|
i.priority = IssuePriority.find(:first, :conditions => ["id <> ?", i.priority_id])
|
||||||
assert_no_difference 'Journal.count' do
|
assert_difference 'Journal.count' do
|
||||||
assert_difference 'JournalDetail.count', 1 do
|
i.save
|
||||||
i.save
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
assert i.current_journal.changes.has_key? "priority_id"
|
||||||
|
|
||||||
# no more change
|
# no more change
|
||||||
assert_no_difference 'Journal.count' do
|
assert_no_difference 'Journal.count' do
|
||||||
assert_no_difference 'JournalDetail.count' do
|
i.save
|
||||||
i.save
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -18,14 +18,14 @@
|
|||||||
require File.dirname(__FILE__) + '/../test_helper'
|
require File.dirname(__FILE__) + '/../test_helper'
|
||||||
|
|
||||||
class JournalTest < ActiveSupport::TestCase
|
class JournalTest < ActiveSupport::TestCase
|
||||||
fixtures :issues, :issue_statuses, :journals, :journal_details
|
fixtures :issues, :issue_statuses, :journals
|
||||||
|
|
||||||
def setup
|
def setup
|
||||||
@journal = Journal.find 1
|
@journal = IssueJournal.first
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_journalized_is_an_issue
|
def test_journalized_is_an_issue
|
||||||
issue = @journal.issue
|
issue = @journal.journalized
|
||||||
assert_kind_of Issue, issue
|
assert_kind_of Issue, issue
|
||||||
assert_equal 1, issue.id
|
assert_equal 1, issue.id
|
||||||
end
|
end
|
||||||
@ -41,9 +41,9 @@ class JournalTest < ActiveSupport::TestCase
|
|||||||
ActionMailer::Base.deliveries.clear
|
ActionMailer::Base.deliveries.clear
|
||||||
issue = Issue.find(:first)
|
issue = Issue.find(:first)
|
||||||
user = User.find(:first)
|
user = User.find(:first)
|
||||||
journal = issue.init_journal(user, issue)
|
|
||||||
|
|
||||||
assert journal.save
|
assert_equal 0, ActionMailer::Base.deliveries.size
|
||||||
|
issue.update_attribute(:subject, "New subject to trigger automatic journal entry")
|
||||||
assert_equal 1, ActionMailer::Base.deliveries.size
|
assert_equal 1, ActionMailer::Base.deliveries.size
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -259,7 +259,7 @@ class MailHandlerTest < ActiveSupport::TestCase
|
|||||||
# This email contains: 'Status: Resolved'
|
# This email contains: 'Status: Resolved'
|
||||||
journal = submit_email('ticket_reply_with_status.eml')
|
journal = submit_email('ticket_reply_with_status.eml')
|
||||||
assert journal.is_a?(Journal)
|
assert journal.is_a?(Journal)
|
||||||
issue = Issue.find(journal.issue.id)
|
issue = Issue.find(journal.journalized.id)
|
||||||
assert_equal User.find_by_login('jsmith'), journal.user
|
assert_equal User.find_by_login('jsmith'), journal.user
|
||||||
assert_equal Issue.find(2), journal.journalized
|
assert_equal Issue.find(2), journal.journalized
|
||||||
assert_match /This is reply/, journal.notes
|
assert_match /This is reply/, journal.notes
|
||||||
|
@ -20,7 +20,7 @@ require File.dirname(__FILE__) + '/../test_helper'
|
|||||||
class MailerTest < ActiveSupport::TestCase
|
class MailerTest < ActiveSupport::TestCase
|
||||||
include Redmine::I18n
|
include Redmine::I18n
|
||||||
include ActionController::Assertions::SelectorAssertions
|
include ActionController::Assertions::SelectorAssertions
|
||||||
fixtures :projects, :enabled_modules, :issues, :users, :members, :member_roles, :roles, :documents, :attachments, :news, :tokens, :journals, :journal_details, :changesets, :trackers, :issue_statuses, :enumerations, :messages, :boards, :repositories
|
fixtures :projects, :enabled_modules, :issues, :users, :members, :member_roles, :roles, :documents, :attachments, :news, :tokens, :journals, :changesets, :trackers, :issue_statuses, :enumerations, :messages, :boards, :repositories
|
||||||
|
|
||||||
def setup
|
def setup
|
||||||
ActionMailer::Base.deliveries.clear
|
ActionMailer::Base.deliveries.clear
|
||||||
|
@ -27,7 +27,6 @@ class SearchTest < ActiveSupport::TestCase
|
|||||||
:issues,
|
:issues,
|
||||||
:trackers,
|
:trackers,
|
||||||
:journals,
|
:journals,
|
||||||
:journal_details,
|
|
||||||
:repositories,
|
:repositories,
|
||||||
:changesets
|
:changesets
|
||||||
|
|
||||||
|
@ -18,7 +18,7 @@
|
|||||||
require File.dirname(__FILE__) + '/../test_helper'
|
require File.dirname(__FILE__) + '/../test_helper'
|
||||||
|
|
||||||
class WikiContentTest < ActiveSupport::TestCase
|
class WikiContentTest < ActiveSupport::TestCase
|
||||||
fixtures :wikis, :wiki_pages, :wiki_contents, :wiki_content_versions, :users
|
fixtures :wikis, :wiki_pages, :wiki_contents, :journals, :users
|
||||||
|
|
||||||
def setup
|
def setup
|
||||||
@wiki = Wiki.find(1)
|
@wiki = Wiki.find(1)
|
||||||
|
@ -18,7 +18,7 @@
|
|||||||
require File.dirname(__FILE__) + '/../test_helper'
|
require File.dirname(__FILE__) + '/../test_helper'
|
||||||
|
|
||||||
class WikiPageTest < ActiveSupport::TestCase
|
class WikiPageTest < ActiveSupport::TestCase
|
||||||
fixtures :projects, :wikis, :wiki_pages, :wiki_contents, :wiki_content_versions
|
fixtures :projects, :wikis, :wiki_pages, :wiki_contents, :journals
|
||||||
|
|
||||||
def setup
|
def setup
|
||||||
@wiki = Wiki.find(1)
|
@wiki = Wiki.find(1)
|
||||||
@ -101,11 +101,14 @@ class WikiPageTest < ActiveSupport::TestCase
|
|||||||
|
|
||||||
def test_destroy
|
def test_destroy
|
||||||
page = WikiPage.find(1)
|
page = WikiPage.find(1)
|
||||||
|
content_ids = WikiContent.find_all_by_page_id(1).collect(&:id)
|
||||||
page.destroy
|
page.destroy
|
||||||
assert_nil WikiPage.find_by_id(1)
|
assert_nil WikiPage.find_by_id(1)
|
||||||
# make sure that page content and its history are deleted
|
# make sure that page content and its history are deleted
|
||||||
assert WikiContent.find_all_by_page_id(1).empty?
|
assert WikiContent.find_all_by_page_id(1).empty?
|
||||||
assert WikiContent.versioned_class.find_all_by_page_id(1).empty?
|
content_ids.each do |wiki_content_id|
|
||||||
|
assert WikiContent.journal_class.find_all_by_versioned_id(wiki_content_id).empty?
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_destroy_should_not_nullify_children
|
def test_destroy_should_not_nullify_children
|
||||||
|
@ -20,7 +20,7 @@
|
|||||||
require File.dirname(__FILE__) + '/../test_helper'
|
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, :journals
|
||||||
|
|
||||||
def test_create
|
def test_create
|
||||||
wiki = Wiki.new(:project => Project.find(2))
|
wiki = Wiki.new(:project => Project.find(2))
|
||||||
|
@ -68,11 +68,11 @@ module Redmine
|
|||||||
scope_options[:conditions] = cond.conditions
|
scope_options[:conditions] = cond.conditions
|
||||||
if options[:limit]
|
if options[:limit]
|
||||||
# id and creation time should be in same order in most cases
|
# id and creation time should be in same order in most cases
|
||||||
scope_options[:order] = "#{table_name}.id DESC"
|
scope_options[:order] = "#{journal_class.table_name}.id DESC"
|
||||||
scope_options[:limit] = options[:limit]
|
scope_options[:limit] = options[:limit]
|
||||||
end
|
end
|
||||||
|
|
||||||
with_scope(:find => scope_options) do
|
journal_class.with_scope(:find => scope_options) do
|
||||||
journal_class.find(:all, provider_options[:find_options].dup)
|
journal_class.find(:all, provider_options[:find_options].dup)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
Loading…
x
Reference in New Issue
Block a user