@@ -53,12 +53,15 class Journal < ActiveRecord::Base | |||||
53 | (details.empty? && notes.blank?) ? false : super |
|
53 | (details.empty? && notes.blank?) ? false : super | |
54 | end |
|
54 | end | |
55 |
|
55 | |||
|
56 | # Returns journal details that are visible to user | |||
56 | def visible_details(user=User.current) |
|
57 | def visible_details(user=User.current) | |
57 | details.select do |detail| |
|
58 | details.select do |detail| | |
58 | if detail.property == 'cf' |
|
59 | if detail.property == 'cf' | |
59 | field_id = detail.prop_key |
|
60 | field_id = detail.prop_key | |
60 | field = CustomField.find_by_id(field_id) |
|
61 | field = CustomField.find_by_id(field_id) | |
61 | field && field.visible_by?(project, user) |
|
62 | field && field.visible_by?(project, user) | |
|
63 | elsif detail.property == 'relation' | |||
|
64 | Issue.find_by_id(detail.value || detail.old_value).try(:visible?, user) | |||
62 | else |
|
65 | else | |
63 | true |
|
66 | true | |
64 | end |
|
67 | end |
@@ -175,4 +175,23 class JournalTest < ActiveSupport::TestCase | |||||
175 | assert_equal '0', j.old_value |
|
175 | assert_equal '0', j.old_value | |
176 | assert_equal '0', j.value |
|
176 | assert_equal '0', j.value | |
177 | end |
|
177 | end | |
|
178 | ||||
|
179 | def test_visible_details_should_include_relations_to_visible_issues_only | |||
|
180 | issue = Issue.generate! | |||
|
181 | visible_issue = Issue.generate! | |||
|
182 | IssueRelation.create!(:issue_from => issue, :issue_to => visible_issue, :relation_type => 'relates') | |||
|
183 | hidden_issue = Issue.generate!(:is_private => true) | |||
|
184 | IssueRelation.create!(:issue_from => issue, :issue_to => hidden_issue, :relation_type => 'relates') | |||
|
185 | issue.reload | |||
|
186 | assert_equal 1, issue.journals.size | |||
|
187 | journal = issue.journals.first | |||
|
188 | assert_equal 2, journal.details.size | |||
|
189 | ||||
|
190 | visible_details = journal.visible_details(User.anonymous) | |||
|
191 | assert_equal 1, visible_details.size | |||
|
192 | assert_equal visible_issue.id.to_s, visible_details.first.value | |||
|
193 | ||||
|
194 | visible_details = journal.visible_details(User.find(2)) | |||
|
195 | assert_equal 2, visible_details.size | |||
|
196 | end | |||
178 | end |
|
197 | end |
General Comments 0
You need to be logged in to leave comments.
Login now