diff --git a/app/models/post_event.rb b/app/models/post_event.rb index 8c57bb8ab..26a8cd1af 100644 --- a/app/models/post_event.rb +++ b/app/models/post_event.rb @@ -4,11 +4,11 @@ class PostEvent include ActiveModel::Serializers::Xml attr_accessor :event - delegate :creator, :creator_id, :reason, :is_resolved, :created_at, to: :event + delegate :created_at, to: :event def self.find_for_post(post_id) post = Post.find(post_id) - (post.appeals + post.flags).sort_by(&:created_at).reverse.map { |e| new(event: e) } + (post.appeals + post.flags + post.approvals).sort_by(&:created_at).reverse.map { |e| new(event: e) } end def type_name @@ -17,6 +17,8 @@ class PostEvent "flag" when PostAppeal "appeal" + when PostApproval + "approval" end end @@ -24,9 +26,25 @@ class PostEvent type_name.first end + def reason + event.try(:reason) || "" + end + + def is_resolved + event.try(:is_resolved) || false + end + + def creator_id + event.try(:creator_id) || event.try(:user_id) + end + + def creator + event.try(:creator) || event.try(:user) + end + def is_creator_visible?(user = CurrentUser.user) case event - when PostAppeal + when PostAppeal, PostApproval true when PostFlag flag = event diff --git a/app/views/post_events/index.html.erb b/app/views/post_events/index.html.erb index c04d46fd6..8ea0685d8 100644 --- a/app/views/post_events/index.html.erb +++ b/app/views/post_events/index.html.erb @@ -1,15 +1,14 @@
| Type | -Creator | -Reason | -Resolved? | -Date | +Type | +User | +Description | +Resolved? | <%= format_text event.reason %> | -- <% if event.is_resolved %> - yes - <% else %> - no - <% end %> - | -<%= compact_time event.created_at %> | +<%= format_text event.reason %> | +<%= event.is_resolved %> | <% end %> diff --git a/test/functional/post_events_controller_test.rb b/test/functional/post_events_controller_test.rb index d8805fbff..3bd1cbfa7 100644 --- a/test/functional/post_events_controller_test.rb +++ b/test/functional/post_events_controller_test.rb @@ -9,15 +9,16 @@ class PostEventsControllerTest < ActionDispatch::IntegrationTest as_user do @post = create(:post) - @post_flag = PostFlag.create(:post => @post, :reason => "aaa", :is_resolved => false) - @post_appeal = PostAppeal.create(:post => @post, :reason => "aaa") + @post.flag!("aaa") + @post.appeal!("aaa") + @post.approve!(@mod) end end context "get /posts/:post_id/events" do should "render" do get_auth post_events_path(post_id: @post.id), @user - assert_response :ok + assert_response :ok end should "render for mods" do
|---|