@@ -53,12 +53,15 class Journal < ActiveRecord::Base | |||
|
53 | 53 | (details.empty? && notes.blank?) ? false : super |
|
54 | 54 | end |
|
55 | 55 | |
|
56 | # Returns journal details that are visible to user | |
|
56 | 57 | def visible_details(user=User.current) |
|
57 | 58 | details.select do |detail| |
|
58 | 59 | if detail.property == 'cf' |
|
59 | 60 | field_id = detail.prop_key |
|
60 | 61 | field = CustomField.find_by_id(field_id) |
|
61 | 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 | 65 | else |
|
63 | 66 | true |
|
64 | 67 | end |
@@ -175,4 +175,23 class JournalTest < ActiveSupport::TestCase | |||
|
175 | 175 | assert_equal '0', j.old_value |
|
176 | 176 | assert_equal '0', j.value |
|
177 | 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 | 197 | end |
General Comments 0
You need to be logged in to leave comments.
Login now